Kubernetes 删除和添加节点

本次演示从集群中安全地删除一个节点,节点删除之后,该节点上的任务会自动转移到其他节点。

查看当前集群的节点信息

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES         AGE     VERSION
k8s-master   Ready    etcd,master   17d     v1.18.3
k8s-node1    Ready    etcd,worker   15d     v1.18.3
k8s-node2    Ready    etcd,worker   15d     v1.18.3
k8s-node3    Ready    worker        4d19h   v1.18.3

使用kubectl命令删除node节点

[root@k8s-master ~]# kubectl delete node k8s-node3
node "k8s-node3" deleted
[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES         AGE   VERSION
k8s-master   Ready    etcd,master   17d   v1.18.3
k8s-node1    Ready    etcd,worker   15d   v1.18.3
k8s-node2    Ready    etcd,worker   15d   v1.18.3

停止调度节点

将节点标记为不可调度可防止调度程序将新的 Pod 放置到该节点上,同时不会影响该节点上的现有 Pod。作为节点重启或者其他维护之前的准备步骤,这十分有用。

找到想要从集群中删除的节点,点击停止调度。或者,直接执行命令 kubectl cordon $NODENAME

被删除节点的资源会自动分布的其他活动的节点上面。

在node节点上彻底删除集群信息

** 该部分在k8s-node03节点上进行操作 **
删除kube-controller-manager 为k8s-node03节点生成的kubeconfig 文件和公私钥:

//删除kubelet.kubeconfig 
[root@k8s-node3 ~]# cd /opt/kubernetes/cfg/
[root@k8s-node3 cfg]# ls
bootstrap.kubeconfig  kube-controller-manager.conf  kubelet-config.yml  kube-proxy.conf        kube-proxy.kubeconfig  token.csv
kube-apiserver.conf   kubelet.conf                  kubelet.kubeconfig  kube-proxy-config.yml  kube-scheduler.conf
[root@k8s-node3 cfg]# rm -rf kubelet.kubeconfig 


//删除kubelet证书
[root@k8s-node3 ~]# rm -rf /opt/kubernetes/ssl/kubelet*

node节点停止相关服务

[root@k8s-node3 ~]# systemctl stop kubelet  docker kube-proxy
[root@k8s-node3 ~]# systemctl disable kubelet  docker kube-proxy

此时,k8s-node03节点相关服务已经从集群中彻底删除,且设置成开机不自动启动。等待资源被重新分配到其他活动节点即可。

清除kube-proxy 和 docker 创建的 iptables

这步如果不执行的话,可能会出现使用被删除节点的ip也能访问集群的情况

[root@node04 ~]# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat

 新增加Worker Node 


在master节点将Worker Node涉及文件拷贝到新节点

[root@k8s-master ~]# scp -r /opt/kubernetes [email protected]:/opt/


[root@k8s-master ~]# scp -r /usr/lib/systemd/system/{kubelet,kube-proxy}.service [email protected]:/usr/lib/systemd/system


[root@k8s-master ~]# scp -r /opt/cni/ [email protected]:/opt/

在新的worker节点上删除kubelet证书和kubeconfig文件

[root@k8s-node3 ~]#rm -rf /opt/kubernetes/cfg/kubelet.kubeconfig 

[root@k8s-node3 ~]#rm -rf /opt/kubernetes/ssl/kubelet*

 注:这几个文件是证书申请审批后自动生成的,每个Node不同,必须删除重新生成。

修改主机名

[root@k8s-node3 ~]# vim /opt/kubernetes/cfg/kubelet.conf
--hostname-override=k8s-node1

[root@k8s-node3 ~]# vim /opt/kubernetes/cfg/kube-proxy-config.yml
hostnameOverride: k8s-node3

 启动并设置开机启动

systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
systemctl start kube-proxy
systemctl enable kube-proxy

 在Master上批准新Node kubelet证书申请

kubectl get csr
NAME                                                   AGE   SIGNERNAME                                    REQUESTOR           CONDITION
node-csr-4zTjsaVSrhuyhIGqsefxzVoZDCNKei-aE2jyTP81Uro   89s   kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pending

kubectl certificate approve node-csr-4zTjsaVSrhuyhIGqsefxzVoZDCNKei-aE2jyTP81Uro

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/124125579
今日推荐