美文网首页
2022-11-29-集群添加删除、控制平面与node

2022-11-29-集群添加删除、控制平面与node

作者: DGFM | 来源:发表于2022-11-28 11:29 被阅读0次

    所有对于集群的操作都应该由部署节点来进行,以此来保证一致性;

    图片为kubeasz项目中整理的K8S高可用集群逻辑模式

    增加master节点:

    # ./ezctl add-master k8s-cluster.1 192.168.1.32

    解析:# ./ezctl add-master [集群名称] [要增加的节点IP]

    k8s-cluster.1/hosts文件的master内容也会发生变化;

    # systemctl restart kube-lb.service        #在node节点上执行,重启node节点的负载均衡服务;

    删除master节点:

    # ./ezctl del-master k8s-cluster.1 192.168.1.32

    增加node节点:

    # ./ezctl add-node k8s-cluster.1 192.168.1.47

    删除node节点:

    # ./ezctl del-node k8s-cluster.1 192.168.1.47

    集群升级:

    通常集群升级的目的,一般为,解决已知BUG或者更新某些功能;

    注意:升级操作一定要在,测试环境中充分实现后才可以在生产环境中执行;

    1.确定当前和要升级的K8S版本,并下载目标版的相关二进制文件;

    地址:https://github.com/kubernetes/kubernetes/

    需要下载的几个文件:

    kubernetes.tar.gz        #源码;

    kubernetes-client-linux-amd64.tar.gz        #客户端文件;

    kubernetes-server-linux-amd64.tar.gz        #服务端文件;

    kubernetes-node-linux-amd64.tar.gz        #node端文件;

    2.上传并解压:

    解压完成后会统一到一个kubernetes目录中

    /usr/local/src/kubernetes-1.25.4/kubernetes/cluster/addons/目录中保存的都是相关插件

    比方说在kubernetes/cluster/addons/dns/coredns/下有coredns相关的yml配置文件模板,可以根据自己需要进行修改然后使用;

    /usr/local/src/kubernetes-1.25.4/kubernetes/server/bin/中保存了相关的二进制文件;

    3.升级流程

    升级过程为逐个模块进行

    4.升级master节点

    4.1 在每个node节点上操作,/etc/kube-lb/conf/kube-lb.conf文件中注释掉要升级的master节点(即节点下线),并重启# systemctl restart kube-lb.service,或重读# systemctl reload kube-lb.service;

    4.2 关闭要升级的master节点功能,如果不关闭会因为程序占用而无法更新;

    master节点上操作

    # systemctl stop kube-apiserver.service

    # systemctl stop kube-controller-manager.service

    # systemctl stop kube-scheduler.service

    # systemctl stop kubelet.service

    # systemctl stop kube-proxy.service

    4.3 copy二进制文件进行更新

    deploy节点上操作

    # scp -P 2200 kube-apiserver kube-scheduler kube-controller-manager kube-proxy kubelet kubectl 目标主机用户@目标主机地址:目标主机目录

    根据我们的配置这个目录的位置是/usr/local/bin下,这个目录位置就是/etc/kubeasz/clusters/k8s-cluster.1/hosts,60行所配置的;

    将新的二进制文件同步拷贝到deploy节点的/etc/kubeasz/bin/目录下,以保证今后再新创建node或者master时版本统一;

    4.4 如有需要,修改相关配置文件

    在master节点的/var/lib/目录下,有kube-proxy和kubelet插件的配置文件可以按需修改,但要注意每个升级节点都需要进行同样的修改;

    4.5 重启服务

    master节点上操作

    # systemctl start kube-apiserver.service

    # systemctl start kube-controller-manager.service

    # systemctl start kube-scheduler.service

    # systemctl start kubelet.service

    # systemctl start kube-proxy.service

    4.6 将其他节点下线,更新后重新上线;

    注意:此种升级方式仅适用于小版本升级,即1.24.2-->1.24.3这种类型,如果有大版本升级建议另行搭建一套,进行测试;

    5. node节点升级

    5.1    对要升级的node节点容器驱逐到别的node节点上

    deploy节点执行:

    # kubectl drain [要驱逐的IP] [选项]

    # kubectl drain 192.168.1.47 --ignore-daemonsets        #--ignore-daemonsets表示忽略所有node节点上都有的容器,只驱逐该节点特有容器;

    5.2    关闭指定node节点服务

    # systemctl stop kube-proxy.service kubelet.service

    5.3    copy二进制文件到指定node节点

    deploy节点上操作

    # scp -P 2200 kube-proxy kubelet kubectl 目标主机用户@目标主机地址:目标主机目录

    将新的二进制文件同步拷贝到deploy节点的/etc/kubeasz/bin/目录下,以保证今后再新创建node或者master时版本统一;

    5.4    重新启动node节点服务

    # systemctl start kube-proxy.service kubelet.service

    5.5    将节点从驱逐状态恢复

    deploy节点执行:

    # kubectl uncordon 192.168.1.47

    注意:其余节点一定也要进行升级,保证整体版本统一;

    6.    containerd升级

    在升级containerd的时候正常情况下,先驱逐pod,然后将服务停止或重启服务器,然后替换二进制文件,再启动服务;

    6.1    下载二进制文件

    地址:https://github.com/containerd/containerd/releases,注意平台类型;

    6.2    上传并解压

    6.3    更新二进制文件

    同样我们也许要更新两个位置

    deploy节点:/etc/kubeasz/bin/containerd-bin/        #保证后续新建节点的版本正确,这个位置是,在/etc/kubeasz/roles/containerd/tasks/main.yml文件的16行位置所定义的;

    目的节点:deploy节点上/etc/kubeasz/clusters/k8s-cluster.1/hosts,60行所配置的位置,这里是/usr/local/bin;

    注意:当有某些二进制文件被进程占用时是无法更新的;

    6.4    重启kubelet服务,目标节点执行

    # systemctl restart kubelet.service

    7.    同理其余插件也可以同样的方式更新,如runc(通常不需要更新),crictl等;

    相关文章

      网友评论

          本文标题:2022-11-29-集群添加删除、控制平面与node

          本文链接:https://www.haomeiwen.com/subject/adplfdtx.html