我正在尝试做的事情:
我已经使用 Kubernetes 网站 (http_kubernetes.io/v1.1/docs/getting-started-guides/aws.html) 上提供的文档设置了 kubernete 集群。使用 kube-up.sh,我能够使用 1 个 master 和 3 个 minions 启动 kubernete 集群(如下图中蓝色矩形突出显示)。据我所知,从文档来看,我们可以在需要时添加 minion,因此从我的角度来看,k8s 主实例在高可用性方面是单点故障。
因此,我尝试使用三个主节点设置 HA k8s 主层,如上图所示。为了实现这一目标,我遵循 kubernetes 高可用性集群指南,http_kubernetes.io/v1.1/docs/admin/high-availability.html#builting-a-redundant-reliable-data-storage-layer 我做了什么:
使用 kube-up.sh 和提供者 aws 设置 k8s 集群(master1 和 minion1、minion2 和 minion3) 设置两个新的主实例(master2 和 master3) 然后,我开始通过以下链接在 master1、master 2 和 master 3 上配置 etcd 集群: http_kubernetes.io/v1.1/docs/admin/high-availability.html#builting-a-redundant-reliable-data-storage-layer 简而言之,我从 kubernetes 网站 (http_kubernetes.io/v1.1/docs/admin/high-availability/etcd.yaml) 复制了 etcd.yaml,并在所有三个节点上更新了 Node_IP、Node_Name 和 Discovery Token,如下所示。
NODE_NAME NODE_IP DISCOVERY_TOKEN
Master1 172.20.3.150 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed
Master2 172.20.3.200 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed
Master3 172.20.3.250 https_discovery.etcd.io/5d84f4e97f6e47b07bf81be243805bed
在所有三个节点上运行 etcdctl 成员列表时,我得到:
$ docker exec <container-id> etcdctl member list
ce2a822cea30bfca: name=default peerURLs=http_localhost:2380,http_localhost:7001 clientURLs=http_127.0.0.1:4001
根据文档,我们需要将 etcd.yaml 保留在/etc/kubernete/manifest 中,该目录已经包含 etcd.manifest 和 etcd-event.manifest 文件。为了进行测试,我使用 etcd 参数修改了 etcd.manifest 文件。
进行上述更改后,我强制终止了 docker 容器,几秒钟后容器就存在了,并且我在运行 kubectl get 节点时遇到了下面提到的错误: 错误:无法从服务器读取版本:获取 httplocalhost:8080/api: 调用 tcp 127.0.0.1:8080:连接被拒绝
所以请建议我如何在 AWS 上设置 k8s master 高可用设置。
最佳答案
要配置 HA 主节点,您应该遵循 High Availability Kubernetes Cluster文档,特别是确保您已跨故障域复制存储,并在复制的 apiserver 前面设置负载均衡器。
关于amazon-web-services - 如何在 AWS 上设置 Kubernetes Master HA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34353616/