README.md
k8s-docker-install
ubuntu/centos 安装 k8s 集群所需环境,k8s 使用 1.21.5, 容器使用 docker,使用 ipvs。 支持 init/join k8s 集群,安装网络组件 calico/flannel,安装配置 ingress-nginx,安装配置 metallb
实验机器配置
- ubuntu 实验机器
3台 ubuntu server 22.04
- centos 实验机器
3台 centos7 server
所有节点都需要安装 docker
- 例如 ubuntu 的安装:
apt install -y docker.io
, ContOS 安装:yum install -y docker && systemctl enable docker.service && systemctl start docker.service
- 注意 docker 需要确定已经启动:
service docker status
配置 /etc/hosts, 需要根据您的实际情况配置, k8s-master、k8s-node01、k8s-node02、k8s-nodexx 您自行修改成您机器的 hostname 以及 ip 地址【k8s 所有节点(即: master 和 node)都需要配置】
sed -i "/k8s-master/d" /etc/hosts
sed -i "/k8s-node01/d" /etc/hosts
sed -i "/k8s-node02/d" /etc/hosts
cat >> /etc/hosts << EOF
192.168.1.xx k8s-master
192.168.1.x1 k8s-node01
192.168.1.x2 k8s-node02
EOF
k8s node 节点所需要的文件可以单独拷贝过去
- 执行拷贝命令:
bash cp-k8s-node-need-files.sh
- 将文件 k8s-node-need-files.tgz 拷贝 k8s node 节点上,比如拷贝到 /root/k8s-node-install-files 上
- 在 k8s node 节点 /root/k8s-node-install-files 下解压: tar -zxvf k8s-node-need-files.tgz
k8s 所有节点(即: master 和 node) 安装 k8s 所需环境
- 执行命令安装 k8s 环境:
bash install-k8s.sh
- 执行命令:
source ~/.bashrc
k8s master 节点 init 集群
- 拷贝 env.tpl 为 .env, 并且根据自己情况修改里面的配置,拷贝命令:
cp env.tpl .env
- 执行命令 reset 集群:
bash reset-k8s.sh
- 执行命令 init 集群:
bash init-k8s.sh
- 查看 k8s node 节点加入的命令:
cat k8s-node-join-info
,得到的信息例如:
kubeadm join 192.168.1.xx:6443 --token abcded.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:36kiuydcf921ff6dhg6y5471857bfe9b529f6datrey0825ae1add79e7aefd1c2
- 您也可以从 kubeadm-init.log 中获取 join k8s 命令(即: kubeadm join 部分),node 节点需要用该命令加入 k8s, 例如:
kubeadm join 192.168.1.xx:6443 --token abcded.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:36kiuydcf921ff6dhg6y5471857bfe9b529f6datrey0825ae1add79e7aefd1c2
- 因为重新设置 kube-apiserver 端口范围,服务会重启,需要等待一段时间,等服务重启完,把网络组件安装完就行了
- 等待一段时间后,执行命令查看 pod 是否都已经 Ready 了, 命令:
kubectl get pod -A
- 如果长时间不好,可以尝试将机器重新启动下
- 执行命令:
source ~/.bashrc
k8s master 安装 helm
- 运行
bash install-helm.sh
k8s node 节点加入集群
- 使用 k8s master 节点 init 完后的 kubeadm join 命令加入集群, 例如:
kubeadm join 192.168.1.xx:6443 --token abcded.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:36kiuydcf921ff6dhg6y5471857bfe9b529f6datrey0825ae1add79e7aefd1c2
安装配置 ingress-nginx 【根据自己需求看是否安装】
- 进入 ingress-nginx
- 设置 master 污点 PreferNoSchedule(如果需要部署在master上):
bash set-master-PreferNoSchedule.sh
- 设置 label:
bash set-master-label-ingress.sh
- 安装:
kubectl apply -f deploy.yaml
安装配置 metallb【根据自己需求看是否安装,另外需要看你的网络是否支持 metallb 所需要求】
- 进入 metallb-system
- 拷贝文件:
cp metallb-configMap.yaml.tpl metallb-configMap.yaml
- 根据你自己的情况配置 metallb-configMap.yaml, 主要修改 addresses 部分
- 执行命令:
bash apply.sh
安装 kubectl 命令补全工具(bash-completion) 【根据自己需求看是否安装】
- centos 安装 bash-completion
yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
sed -i '/source <(kubectl completion bash)/d' ~/.bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
- ubuntu 安装
apt install bash-completion -y
source /usr/share/bash-completion/bash_completion
sed -i '/source <(kubectl completion bash)/d' ~/.bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request