--- title: 搭建高可用的 Kubernetes Masters content_type: task --- {{< feature-state for_k8s_version="1.5" state="alpha" >}} 你可以在谷歌计算引擎(GCE)的 `kubeup` 或 `kube-down` 脚本中复制 Kubernetes Master。 本文描述了如何使用 kube-up/down 脚本来管理高可用(HA)的 Master, 以及如何使用 GCE 实现高可用控制节点。 ## {{% heading "prerequisites" %}} {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} ## 启动一个兼容高可用的集群 要创建一个新的兼容高可用的集群,你必须在 `kubeup` 脚本中设置以下标志: * `MULTIZONE=true` - 为了防止从不同于服务器的默认区域的区域中删除 kubelets 副本。 如果你希望在不同的区域运行副本,那么这一项是必需并且推荐的。 * `ENABLE_ETCD_QUORUM_READ=true` - 确保从所有 API 服务器读取数据时将返回最新的数据。 如果为 true,读操作将被定向到主 etcd 副本。可以选择将这个值设置为 true, 那么读取将更可靠,但也会更慢。 你还可以指定一个 GCE 区域,在这里创建第一个主节点副本。设置以下标志: * `KUBE_GCE_ZONE=zone` - 将运行第一个主节点副本的区域。 下面的命令演示在 GCE europe-west1-b 区域中设置一个兼容高可用的集群: ```shell MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh ``` 注意,上面的命令创建一个只有单一主节点的集群; 但是,你可以使用后续命令将新的主节点副本添加到集群中。 ## 增加一个新的主节点副本 在创建了兼容高可用的集群之后,可以向其中添加主节点副本。 你可以使用带有如下标记的 `kubeup` 脚本添加主节点副本: * `KUBE_REPLICATE_EXISTING_MASTER=true` - 创建一个已经存在的主节点的副本。 * `KUBE_GCE_ZONE=zone` -主节点副本将运行的区域。必须与其他副本位于同一区域。 你无需设置 `MULTIZONE` 或 `ENABLE_ETCD_QUORUM_READS` 标志,因为他们可以从兼容高可用的集群中继承。 使用下面的命令可以复制现有兼容高可用的集群上的 Master: ```shell KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh ``` ## 删除主节点副本 你可以使用一个 `kube-down` 脚本从高可用集群中删除一个主节点副本,并可以使用以下标记: * `KUBE_DELETE_NODES=false` - 限制删除 kubelets。 * `KUBE_GCE_ZONE=zone` - 将移除主节点副本的区域。 * `KUBE_REPLICA_NAME=replica_name` - (可选)要删除的主节点副本的名称。 如果为空:将删除给定区域中的所有副本。 使用下面的命令可以从一个现有的高可用集群中删除一个 Master副本: ```shell KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh ``` ## 处理主节点副本失败 如果高可用集群中的一个主节点副本失败,最佳实践是从集群中删除副本, 并在相同的区域中添加一个新副本。 下面的命令演示了这个过程: 1. 删除失败的副本: ```shell KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh ```