根据K8s的说法,三节点才是一个稳固的群集。之前使用kubeadm搭建了一个两节点的环境,在测试高可用的时候的确是发现了问题,一个节点崩了,整个群集就崩了。
实验的目的是验证三节点的高可用性
搭建的过程忽略,看实验的结果
两个场景对比
场景1,双节点
koonsuenmaster03(初始化节点):192.168.8.13
koonsuenmaster02(加入节点): 192.168.8.12

关闭节点03

[root@koonsuenmaster02 ~]# kubectl get nodes
NAME               STATUS   ROLES                  AGE     VERSION
koonsuenmaster02   Ready    control-plane,master   7h      v1.20.6
koonsuenmaster03   Ready    control-plane,master   32h     v1.20.6
[root@koonsuenmaster02 ~]# kubectl get nodes
Unable to connect to the server: net/http: TLS handshake timeout

群集崩了,关闭节点02,效果一样,kubectl命令无法有返回

场景2,三节点
koonsuenmaster03(初始化节点):192.168.8.13
koonsuenmaster02(加入节点): 192.168.8.12
koonsuenmaster04(加入节点):192.168.8.14

在02节点看关闭03节点的前后状况:

[root@koonsuenmaster02 ~]# kubectl get nodes
NAME               STATUS   ROLES                  AGE     VERSION
koonsuenmaster02   Ready    control-plane,master   7h1m    v1.20.6
koonsuenmaster03   Ready    control-plane,master   32h     v1.20.6
koonsuenmaster04   Ready    control-plane,master   5m12s   v1.20.6
[root@koonsuenmaster02 ~]# kubectl get nodes
NAME               STATUS     ROLES                  AGE     VERSION
koonsuenmaster02   Ready      control-plane,master   7h1m    v1.20.6
koonsuenmaster03   NotReady   control-plane,master   32h     v1.20.6
koonsuenmaster04   Ready      control-plane,master   5m14s   v1.20.6

可见03节点已经是NotReady状态,群集依然可用,kubectl get nodes有返回信息,下面在04节点看03节点退出的瞬间:

[root@koonsuenmaster04 ~]# kubectl get nodes
NAME               STATUS   ROLES                  AGE     VERSION
koonsuenmaster02   Ready    control-plane,master   7h      v1.20.6
koonsuenmaster03   Ready    control-plane,master   32h     v1.20.6
koonsuenmaster04   Ready    control-plane,master   4m44s   v1.20.6
[root@koonsuenmaster04 ~]# kubectl get nodes
Unable to connect to the server: net/http: TLS handshake timeout
[root@koonsuenmaster04 ~]# kubectl get nodes
NAME               STATUS   ROLES                  AGE    VERSION
koonsuenmaster02   Ready    control-plane,master   7h     v1.20.6
koonsuenmaster03   Ready    control-plane,master   32h    v1.20.6
koonsuenmaster04   Ready    control-plane,master   5m2s   v1.20.6

可见瞬时是出现了kubectl命令没有返回的情况,如果是双节点就会一直timeout
或者其他的提示,群集不可用。

三节点以上才是K8s的生产环境的解决方案。
PS:
K8s搭建心得体会:
使用虚拟机加入控制平面节点十分方便,克隆机器,kubeadm reset,看提示操作即可。
之后关键步骤是传证书、安装完成后的一键三联,以及之后的网络插件的安装。
有机会继续学习二进制方式的安装。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐