高可用性考虑因素
本文提供了Kubernetes社区对设置高可用性Kubernetes集群的注意事项,请认真阅读。
概述
当创建生产集群时,高可用性是必须的(集群在某些master节点
或工作节点
失效时仍能保持运行的能力)。对于工作节点,假设有足够多的节点。也要在规划和设置集群时,需要考虑到master节点
和etcd
实例的冗余。
kubeadm
支持设置多个master
和多etcd
集群。 但仍有一些方面需要考虑和设置,这些方面并不是Kubernetes本身的一部分,因此项目文档中没有涉及。本文档提供了一些额外的信息和例子,在用kubeadm
规划和引导HA
集群时很有用。
软件负载均衡的选项
当创建有多个master节点的集群时,可以将API Server实例
放在负载均衡后面,可以在运行kubeadm init
时使用--control-plane-endpoint
来实现高可用。
当然,负载均衡器本身也应该是高度可用的。这通常是通过给负载均衡器增加冗余来实现的。为此,设置一个管理虚拟IP的主机集群,每台主机运行一个负载均衡器的实例,这样在其他主机处于待机状态时,总是使用当前持有vIP的主机上的负载均衡器。
在某些环境中,例如在具有专用负载均衡组件(例如由某些云提供商提供)的数据中心中,该功能可能已经可用。如果没有,可以使用用户管理的负载均衡。在这种情况下,在启动集群之前需要做一些准备工作。
由于这不是Kubernetes或kubeadm
的一部分,所以必须单独处理。在下面的介绍中,我们给出了一些例子,当然也有可能是其他几十种可能的配置。
有了服务,现在可以使用kubeadm init
来启动Kubernetes集群了。
HA方案
我们提供2种ha的例子给大家,根据自身的需要,任选其一:
安装完成之后,可以使用kubeadm init
来启动Kubernetes集群了。
引导集群
现在可以按照使用 kubeadm 创建 k8s)中的描述进行集群安装了。
请注意,如果${APISERVER_DEST_PORT}
在上面的配置中被配置为与6443
不同的值,需要告诉kubeadm init
为API服务器使用该端口。假设在一个新的集群中,API服务器的负载均衡端口为8443,虚拟IP的DNS名称为vip.mycluster.local
,则需要向kubeadm
传递一个参数--control-plan-endpoint
,如下所示。
# kubeadm init --control-plane-endpoint vip.mycluster.local:8443 [additional arguments ...]