您可以使用kube-up或kube-down脚本为Google Compute Engine复制Kubernetes母版。本文档介绍了如何使用kube-up / down脚本来管理高可用性(HA)母版,以及如何实现HA母版以与GCE一起使用。
您需要具有Kubernetes集群,并且必须将kubectl命令行工具配置为与集群通信。如果您还没有集群,则可以使用Minikube创建一个集群,也可以使用以下Kubernetes游乐场之一:
要检查版本,请输入kubectl版本。
要创建新的HA兼容群集,必须在kube-up脚本中设置以下标志:
(可选)您可以指定要在其中创建第一个主副本的GCE区域。设置以下标志:
以下示例命令在GCE区域europe-west1-b中设置了HA兼容的集群:
MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh
请注意,以上命令创建了一个具有一个主节点的集群;但是,您可以使用后续命令将新的主副本添加到群集中
创建与HA兼容的群集后,可以向其添加主副本。您可以通过使用带有以下标志的kube-up脚本来添加主副本:
您不需要设置MULTIZONE或ENABLE_ETCD_QUORUM_READS标志,因为这些标志是从启动HA兼容群集时继承的。
以下示例命令在现有的HA兼容群集上复制主服务器:
KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
您可以使用带有以下标志的kube-down脚本从HA群集中删除主副本:
以下示例命令从现有的HA集群中删除主副本:
KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh
如果高可用性群集中的一个主副本失败,则最佳实践是从群集中删除该副本,并在同一区域中添加一个新副本。以下示例命令演示了此过程:
删除损坏的副本:
KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh
添加一个新副本来代替旧副本:
KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh
每个主副本将在以下模式下运行以下组件:
此外,API服务器之前将有一个负载平衡器,它将外部和内部流量路由到它们。
启动第二个主副本时,将创建一个包含两个副本的负载均衡器,并将第一个副本的IP地址提升为负载均衡器的IP地址。同样,在删除倒数第二个主副本之后,将删除负载均衡器,并将其IP地址分配给最后剩余的副本。请注意,创建和删除负载平衡器是复杂的操作,传播它们可能需要一些时间(约20分钟)。
系统没有尝试在Kubernetes服务中保留Kubernetes apiserver的最新列表,而是将所有流量定向到外部IP:
同样,外部IP将由kubelet用于与主机通信。
Kubernetes为每个副本的外部公共IP和本地IP生成主TLS证书。没有用于副本的临时公共IP的证书;要通过其短暂的公共IP访问副本,必须跳过TLS验证。
为了允许etcd集群,将打开在etcd实例之间进行通信所需的端口(用于内部集群通信)。为了确保这种部署的安全性,etcd实例之间的通信使用SSL授权。
原文:https://kubernetes.io/docs/tasks/administer-cluster/highly-available-master/
本文:http://jiagoushi.pro/set-high-availability-kubernetes-masters
讨论:请加入知识星球或者微信圈子【首席架构师圈】