对集群相关的组件提前配置,可使用如下脚本定义。
[root@master01 ~]# wget #拉取自动部署脚本 [root@master01 ~]# vi k8sconfig.sh #!/bin/sh #****************************************************************# # ScriptName: k8sconfig # Author: xhy # Create Date: 2020-06-08 20:00 # Modify Author: xhy # Modify Date: 2021-04-16 23:16 # Version: v3 #***************************************************************# # set variables below to create the config files, all files will create at ./kubeadm directory # master keepalived virtual ip address export K8SHA_VIP=172.24.8.100 # master01 ip address export K8SHA_IP1=172.24.8.141 # master02 ip address export K8SHA_IP2=172.24.8.142 # master03 ip address export K8SHA_IP3=172.24.8.143 # master01 hostname export K8SHA_HOST1=master01 # master02 hostname export K8SHA_HOST2=master02 # master03 hostname export K8SHA_HOST3=master03 # master01 network interface name export K8SHA_NETINF1=eth0 # master02 network interface name export K8SHA_NETINF2=eth0 # master03 network interface name export K8SHA_NETINF3=eth0 # keepalived auth_pass config export K8SHA_KEEPALIVED_AUTH=412f7dc3bfed32194d1600c483e10ad1d # kubernetes CIDR pod subnet export K8SHA_PODCIDR=10.10.0.0 # kubernetes CIDR svc subnet export K8SHA_SVCCIDR=10.20.0.0[root@master01 ~]# bash k8sconfig.sh
解释:如上仅需Master01节点操作。执行k8sconfig.sh脚本后会生产如下配置文件清单:
kubeadm-config.yaml:kubeadm初始化配置文件,位于kubeadm/目录
keepalived:keepalived配置文件,位于各个master节点的/etc/keepalived目录
haproxy:haproxy的配置文件,位于各个master节点的/etc/haproxy/目录
calico.yaml:calico网络组件部署文件,位于kubeadm/calico/目录
提示:如上仅需Master01节点操作,更多config文件参考:https://pkg.go.dev/k8s.io/kubernetes@v1.21.0/cmd/kubeadm/app/apis/kubeadm/v1beta2。
此kubeadm部署初始化配置更多参考:https://pkg.go.dev/k8s.io/kubernetes@v1.21.0/cmd/kubeadm/app/apis/kubeadm/v1beta2。
默认kubeadm配置可使用kubeadm config print init-defaults > config.yaml生成。
提前启动KeepAlive和HAProxy,提前准备好高可用环境。
[root@master01 ~]# cat /etc/keepalived/keepalived.conf [root@master01 ~]# cat /etc/keepalived/check_apiserver.sh #确认Keepalived配置 [root@master01 ~]# for master_ip in ${MASTER_IPS[@]} do echo ">>> ${master_ip}" ssh root@${master_ip} "systemctl enable haproxy.service --now && systemctl restart haproxy.service" ssh root@${master_ip} "systemctl enable keepalived.service --now && systemctl restart keepalived.service" ssh root@${master_ip} "systemctl status keepalived.service | grep Active" ssh root@${master_ip} "systemctl status haproxy.service | grep Active" done [root@master01 ~]# for all_ip in ${ALL_IPS[@]} do echo ">>> ${all_ip}" ssh root@${all_ip} "ping -c1 172.24.8.100" done #等待10s执行检查提示:如上仅需Master01节点操作,从而实现所有节点自动启动服务。
需要在每台机器上都安装以下的软件包:
kubeadm: 用来初始化集群的指令;
kubelet: 在集群中的每个节点上用来启动 pod 和 container 等;
kubectl: 用来与集群通信的命令行工具。
kubeadm不能安装或管理 kubelet 或 kubectl ,所以得保证他们满足通过 kubeadm 安装的 Kubernetes控制层对版本的要求。如果版本没有满足要求,可能导致一些意外错误或问题。
具体相关组件安装见;附001.kubectl介绍及使用书
提示:Kubernetes 1.21.0版本所有兼容相应组件的版本参考:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.21.md。