vlambda博客
学习文章列表

k8s系列-11-基于kubespary的集群运维

老板们,点个关注吧。

k8s系列-11-基于kubespary的集群运维

 

k8s集群是一成不变的吗?显然不是,随着我们系统业务的变动,相关节点肯定是要有增加和缩减的,那么我们如何给集群添加或者删除一些指定的节点呢?下面咱们来看看。

k8s系列-11-基于kubespary的集群运维

 集群节点类型

k8s系列-11-基于kubespary的集群运维

PS:需要注意的是,不管新增还是修改,都别忘记修改hosts,下面每一步都需要修改该配置,就不单独写了,如下哈。
[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yamlall: hosts: node1: ansible_host: 192.168.112.130 ip: 192.168.112.130 access_ip: 192.168.112.130 node2: ansible_host: 192.168.112.131 ip: 192.168.112.131 access_ip: 192.168.112.131 node3: ansible_host: 192.168.112.132 ip: 192.168.112.132 access_ip: 192.168.112.132

Master节点

1、增加一个master节点:
# 编辑host文件,需要在最开始安装的目录下尽心修改[root@node1 kubespray-2.18.0]# pwd/root/jier/kubespray-2.18.0[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 新增节点写到下面即可,例如新增node4,就在node2下面写node4即可 kube_control_plane: hosts: node1: node2:# 执行[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v# 重启[root@node1 kubespray-2.18.0]# crictl ps | grep -E "nginx|proxy"| awk '{print $1}' | xargs crictl restart


2、删除master节点
2.1 如果你删除的master节点是配置文件中的第一个节点,需要将配置下移,再重新运行一下cluster.yml,保持和2.2的状态一致,再操作,举例如下:
[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 原状态 children: kube_control_plane: hosts: node1: node2: node3:# 需要改成下面的样子 children: kube_control_plane:      hosts: node2: node3        node1# 生效[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml -b cluster.yml

2.2 删除的master不是配置文件中的第一个节点,这种情况下不要直接修改配置文件,应该先使用命令删除节点之后,再修改配置文件:
# 比如移除master节点之node1[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml remove-node.yml -b -v -e "node=node1"# 修改配置文件,和现有集群保持一致[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 原配置文件 children: kube_control_plane: hosts: node2: node3 node1# 需要改成 children: kube_control_plane: hosts: node2: node3[root@node1 kubespray-2.18.0]#


Worker节点

1、增加worker节点
# 刷新缓存[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml facts.yml -b -v# 编辑配置文件[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 原配置 kube_node: hosts: node1: node2: node3:# 需要改成 kube_node: hosts: node1: node2: node3: node4# 生效[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml scale.yml --limit=node4 -b -v


2、删除worker节点
# 下线worker节点,且会清理该节点上的所有容器,如果是多个节点,以逗号分割开就行[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml remove-node.yml -b -v -e "node=node1,node2,..."# 修改配置文件进行下线[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 原配置 kube_node: hosts: node1: node2: node3:# 需要改成 kube_node: hosts: node1:        node2[root@node1 kubespray-2.18.0]#


Etcd节点

PS:如果要变更的etcd节点同时也是master或worker节点,需要先将master或者worker节点按照咱们前面写的步骤操作下线,保留纯粹的etcd节点。


1、增加etcd节点
# 编辑配置[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml # 原配置 etcd: hosts: node1: node2: node3:# 修改成 etcd: hosts: node1: node2: node3:        node4# 更新[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml upgrade-cluster.yml --limit=etcd,kube_control_plane -e ignore_assert_errors=yes -e etcd_retries=10


2、删除etcd节点
# 下线[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml remove-node.yml -b -v -e "node=NODE-NAME"# 编辑配置[root@node1 kubespray-2.18.0]# vim inventory/mycluster/hosts.yaml# 重新生成配置[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml -b cluster.yml


其他

1、集群重置
# 清理集群[root@node1 kubespray-2.18.0]# ansible-playbook -i inventory/mycluster/hosts.yaml -b -v reset.yml


2、自定义起始点
# 当我们执行ansible-playbook的时候,如果中途有问题# 我们需要重新执行,如果重头来,太慢了,这个时候我们可以指定从哪儿开始# 通过--start-at-task指定从哪个task处开始执行[root@node1 kubespray-2.18.0]# ansible-playbook --start-at-task="reset | gather mounted kubelet dirs"


至此,本文结束。

下面我们将写一下如何使用二进制的方式,部署kubernetes,使用二进制比较困难和繁琐,但是学习嘛~~~有长进。


往期推荐

 

添加关注,带你高效运维