这个是k8s运维工程师面试的时期经常被问到的问题,生成环境的k8s布置高可用是有必要保证的。其实k8s仅仅担任容器的办理,也便是说即使k8s服务悉数停了,现有的容器里边运转的服务都不会受到影响,只不过失去了主动康复以及服务改变的才能。即使如此,咱们也不期望k8s不可用。
之前的文章现已共享了k8s的架构,那么在k8s集群里边,node节点本身便是分布式的,一个node挂了,容器会主动迁移到其他节点,不会影响集群的可用性,只需做好资源冗余,保证有满足的node资源。防止因为资源缺乏导致服务无法康复的问题。
那么k8s的高可用就在管控层面,中心是etcd集群的高可用,一般咱们会布置三个副本,假如有一个节点宕机了,整个集群仍是能够正常供给服务。假如机器能康复,重新启动etcd后便能够主动补齐数据,康复集群。假如机器无法康复,能够从member中除掉这个etcd节点,然后再参加一个新的节点。
apiserver本身是无状况的,后端连接到etcd。因为现在还不支撑客户端负载平衡,所以apiserver的高可用都在在服务端完结,一般会在服务端布置一个负载平衡,恳求经过负载平衡转发到各个apiserver,这儿客户端包含了kubelet、kube-proxy以及kcm和kube-scheduler等一切拜访apiserver的组件。负载平衡本身也须要保证高可用,开源的计划主要是nginx/haproxy+keepalive。
kcm和kube-scheduler是经过etcd选主,一主多备。假如有一个节点宕机,会经过etcd切换到其他节点。

为了节约资源一般会将etcd和k8s的控制面放到一同,在这种集群环境中,宕机一台master是能够正常作业的,但假如是两台就会呈现问题。所以还须要装备集群的告警,当呈现宕机的状况下,及时修正。
Copyright © 2002-2030 涛庆汽车 涛庆汽车百科网