K8s内核高可用架构

更新时间: 2023-04-12 13:16:14

本文介绍了K8s节点部署架构、内核组件的部署拓扑图。

K8s节点部署架构

  • 针对3 Master部署架构

    • 1 Master关机,Trident功能无影响

    • 任意Worker关机,Trident功能无影响;

    • 2个或者2个以上Master关机,K8s管控能力不可用,已经创建并顺利运行的Pod不受影响

  • 针对单Master部署架构(不推荐)

    • Master关机,K8s管控能力不可用,已经创建并顺利运行的Pod不受影响

    节点高可用场景说明:

场景

期望

备注

1/3个master节点关机

  • K8s管控正常,集群可以进行资源变更

  • master上以deployment作为controller的pod可以顺利迁移

  • worker节点Pod正常运行

  • worker节点无状态Pod可以正常迁移

关机后重启,pod能迁移回来

2/3个master节点关机

  • K8s管控不可用,不能进行资源变更

  • worker节点Pod运行正常

  • worker节点无状态Pod可以正常迁移

3/3个master节点关机

  • K8s管控不可用

  • worker节点Pod运行正常

任意选择worker关机

  • 管控能力不受影响

  • worker上的无状态pod可以任意迁移

关键定义:

  • Pod顺利迁移:Pod-A所在节点关机后,Pod-A可以在N分钟时间内,在另一个可用的节点上重新创建,并对外提供服务

  • Worker节点Pod正常运行:Worker节点Pod正常运行,可以被外部访问

K8s内核组件部署拓扑图

下图展示了Trident中包含的组件的部署拓扑,不同组件由于部署形式不同,在节点发生灾难时健壮性不同。

  • deployment:只要还有可用的节点(由调度的约束条件决定),就可以在漂移

  • daemonset:所有符合条件的节点,一定会有对应Pod

  • static pod:只要节点kubelet顺利启动,就会启动的Pod

网络依赖方面,所有hostnetwork的pod,不依赖容器网络的运行就可以正常启动

image

内核组件可用性阈值说明:

组件名称

功能正常的最小存活实例数

扩缩容

备注

etcd

2/3

垂直扩缩容

如果etcd节点数是N,则存货节点数目必须超过N/2(向上取整)

apiserver

1/3

水平扩缩容

垂直扩缩容

3个apiserver能力对等

kube-controller-manager

1/3

垂直扩缩容

选主模式运行

kube-scheduler

1/3

垂直扩缩容

选主模式运行

coredns

1/2

水平扩缩容

垂直扩缩容

正常来说,coredns的pod可以漂移

所有副本数为1的deploy

1/1

垂直扩缩容

kube-proxy

每个节点上的都要正常

垂直扩缩容

calico controller

1/2

垂直扩缩容

calico node agent

每个节点上的都要正常

垂直扩缩容

rama-webhook

1/3

垂直扩缩容

rama-manager

1/3

垂直扩缩容

rama-daemon

每个节点上的都要正常

垂直扩缩容

nimitz-netmaster

1/3

垂直扩缩容

nimitz-openvswitch

每个节点上的都要正常

垂直扩缩容

nimitz-netplugin

每个节点上的都要正常

垂直扩缩容

yoda-agent

每个节点上的都要正常

垂直扩缩容

yoda-scheduler-extender

1/1

垂直扩缩容

csi-yoda-resizer

1/1

垂直扩缩容

csi-yoda-provisioner

1/1

垂直扩缩容

高可用测试说明

  1. 按照 【节点高可用场景说明】 表格“场景”一栏的描述,依次关机。

  2. 按照 【节点高可用场景说明】 表格“期望”一栏的描述,参考【内核组件可用性阈值说明】验证集群中所有K8s内核组件的功能,注意要从所有存活节点都进行验证。例如,要从所有节点上都验证到kube-dns svc的连通性。

阿里云首页 云原生应用交付平台 相关技术圈