Tasks

Step-by-step instructions for performing operations with Kubernetes.

Edit This Page

建立高可用 Kubernetes Master

Kubernetes 1.5 版本增加了对复制 Kubernetes master 的支持,通过在 kube-upkube-down 脚本中可以为 GCE 实现该功能。 该文档描述了如何使用 kube-up/down 脚本去管理高可用(HA)master,以及 HA master 如何实现并在 GCE 中使用。

启动 HA-兼容集群

创建新的 HA-兼容集群,必须在 kube-up 脚本中设置如下标志:

可选地,可以指定一个 GCE zone,在这里创建第一个 master 副本。 设置下面的标志:

下面的示例命令在 GCE zone europe-west1-b 中建立了一个 HA-兼容集群:

$ MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b  ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh

注意,上面的命令创建了具有 1 个 master 的集群。 然而,可以使用后续的命令向集群中添加新的 master 副本。

新增 master 副本

创建一个 HA-兼容的集群后,可以向集群中添加 master 副本。 新增 master 副本,可以使用带有如下标志的 kube-up 脚本:

没有必要设置 MULTIZONEENABLE_ETCD_QUORUM_READS 这两个标志,因为那些标志会从启动的 HA-兼容集群继承而来。

下面示例命令,在一个已存在的 HA-兼容集群中复制 master:

$ KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

删除 master 副本

通过使用带有如下标志的 kube-down 脚本,可以从 HA 集群中删除 master 副本:

下面的示例命令,从一个已存在的 HA 集群中删除一个 master 副本:

$ KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh

处理 master 副本失败

如果 HA 集群中某个 master 副本失败了,最佳的实践是从集群中删除该副本,并在同一个 zone 中新增一个副本。 下面的示例命令演示了这个流程:

  1. 删除失败的副本:
$ KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh
  1. 新增一个副本来替换旧的副本:
$ KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

HA 集群复制 master 最佳实践

实现需要注意的事项

ha-master-gce

概览

每个 master 副本将在下面模式下运行下列组件:

另外,在这些 API server 前面将有一个负载均衡器,它将内部和外部的流量路由到这些 API server。

负载均衡

当启动第二个 master 副本时,将创建包含 2 个副本的负载均衡器,第一个副本的 IP 地址将被提升为负载均衡器的 IP。 类似地,当倒数第二个 master 副本删除以后,负载均衡器将被移除,它的 IP 地址将被指派给最后留下的副本。 请注意,创建和删除负载均衡器是复杂的操作,它可能会花费一些时间(大约 20 分钟)去传播它们。

Master Service 和 kubelet

在 Kubernetes Service 中设法保持一个最新的 apiserver 列表,作为替代,系统直接将全部流量指向指定外部 IP:

类似地,外部 IP 将被 kubelet 用来与 master 通信。

Master 证书

Kubernetes 为外部公共 IP 和本地每个副本的 IP 生成 Master TLS 证书。 不会为副本的临时公共 IP 生成证书。 基于临时公共 IP 访问一个副本,必须要跳过 TLS 验证。

聚集 etcd

为了允许 etcd 聚集,需要在 etcd 实例之间进行通信的端口将被打开(为了在集群内部通信)。 为了使得部署安全,在 etcd 实例之间的通信需要使用 SSL 进行授权。

进一步阅读

HA master 自动化部署 - 设计文档

Analytics

Create an Issue Edit this Page