附034.Kubernetes_v1.21.0高可用部署架构二 (3)

对集群相关的组件提前配置,可使用如下脚本定义。

[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/目录

[root@master01 ~]# vim kubeadm/kubeadm-config.yaml #检查集群初始化配置 apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration networking: serviceSubnet: "10.20.0.0/16" #设置svc网段 podSubnet: "10.10.0.0/16" #设置Pod网段 dnsDomain: "cluster.local" kubernetesVersion: "v1.21.0" #设置安装版本 controlPlaneEndpoint: "172.24.8.100:16443" #设置相关API VIP地址 apiServer: certSANs: - master01 - master02 - master03 - 127.0.0.1 - 172.24.8.141 - 172.24.8.142 - 172.24.8.143 - 172.24.8.100 timeoutForControlPlane: 4m0s certificatesDir: "/etc/kubernetes/pki" imageRepository: "k8s.gcr.io" --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: ipvs

提示:如上仅需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。

正式安装 [root@master01 ~]# for all_ip in ${ALL_IPS[@]} do echo ">>> ${all_ip}" ssh root@${all_ip} "cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF" ssh root@${all_ip} "yum install -y kubeadm-1.21.0-0.x86_64 kubelet-1.21.0-0.x86_64 kubectl-1.21.0-0.x86_64 --disableexcludes=kubernetes" ssh root@${all_ip} "systemctl enable kubelet" done [root@master01 ~]# yum search -y kubelet --showduplicates #查看相应版本

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfyz.html