K8S集群二进制部署之添加Node节点
k8s版本:
[root@k8s01 manifests]# kubelet --version
Kubernetes v1.16.6
K8S集群搭建参考网址:https://github.com/opsnull/follow-me-install-kubernetes-cluster
一、环境准备:
①、新节点修改计算机名称(新节点执行)
[root@sjyt-k8s05-node05 ~]#hostnamectl set-hostname sjyt-k8s05-node05
②、在sjyt-k8s01 K8Smaster服务器上实现无秘登录新加入节点(新节点执行)
[root@sjyt-k8s05-node05 ~]#ssh-copy-id root@sjyt-k8s05-node05
#按提示输入yes
#输入密码登录即可
③、配置主机名解析(k8s01主节点执行)
[root@sjyt-k8s01 work]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.20.11.251 sjyt-k8s01
10.20.11.252 sjyt-k8s02
10.20.11.253 sjyt-k8s03
10.20.11.64 sjyt-k8s04-node04
10.20.11.100 sjyt-k8s05-node05 #加入新节点
并将解析文件Copy替换到集群中其他主机,此步骤后续考虑是否可以忽略!
scp -r /etc/hosts root@sjyt-k8s02:/etc/hosts
scp -r /etc/hosts root@sjyt-k8s03:/etc/hosts
scp -r /etc/hosts root@sjyt-k8s04-node04:/etc/hosts
④、创建相关工作目录(新节点执行)
mkdir -p /opt/k8s/{
bin,work} /etc/{
kubernetes,etcd}/cert
⑤、分发kubernetes证书到新节点(k8s01主节点执行) 待执行
注:修改environment.sh 文件,只保留新添加的节点主机名和IP即可,其他保持不变。
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/kubernetes/cert"
scp ca*.pem ca-config.json root@${node_ip}:/etc/kubernetes/cert
done
⑥、安装依赖包
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "yum install -y epel-release" &
ssh root@${node_ip} "yum install -y chrony conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget socat git" &
done
⑦、分发kubelet执行文件到新加入的节点
为避免麻烦,就将apiserver、controller、scheduler等文件一起拷贝到新节点了!
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp kubernetes/server/bin/{
apiextensions-apiserver,kube-apiserver,kube-controller-manager,kube-proxy,kube-scheduler,kubeadm,kubectl,kubelet,mounter} root@${node_ip}:/opt/k8s/bin/
ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
done
二、apiserver 高可用
注:因为之前搭建K8S集群这些文件都有下载过、配置过!所以如果涉及到需要配置新节点的才处理,否则直接copy过去就可以了。
①、拷贝二进制文件
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /opt/k8s/kube-nginx/{conf,logs,sbin}"
scp /opt/k8s/work/nginx-1.15.3/nginx-prefix/sbin/nginx root@${node_ip}:/opt/k8s/kube-nginx/sbin/kube-nginx
ssh root@${node_ip} "chmod a+x /opt/k8s/kube-nginx/sbin/*"
done
②、拷贝nginx配置文件
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp kube-nginx.conf root@${node_ip}:/opt/k8s/kube-nginx/conf/kube-nginx.conf
done
③、分发system 服务启动文件
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp kube-nginx.service root@${node_ip}:/etc/systemd/system/
done
④、启动nginx服务
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl daemon-reload && systemctl enable kube-nginx && systemctl restart kube-nginx"
done
⑤、检查nginx是否启动
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "systemctl status kube-nginx |grep 'Active:'"
done
三、部署 containerd 组件
①、分发containerd二进制文件
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
scp containerd/bin/* crictl cni-plugins/* runc root@${node_ip}:/opt/k8s/bin
ssh root@${node_ip} "chmod a+x /opt/k8s/bin/* && mkdir -p /etc/cni/net.d"
done
②、分发 containerd 配置文件
注:可以修改配置文件为harbor私有镜像仓库版本
cd /opt/k8s/work
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}