amazon-web-services - 如何在 AWS 上设置 Kubernetes Master HA

标签 amazon-web-services kubernetes high-availability

我正在尝试做的事情:

我已经使用 Kubernetes 网站 (http_kubernetes.io/v1.1/docs/getting-started-guides/aws.html) 上提供的文档设置了 kubernete 集群。使用 kube-up.sh,我能够使用 1 个 master 和 3 个 minions 启动 kubernete 集群(如下图中蓝色矩形突出显示)。据我所知,从文档来看,我们可以在需要时添加 minion,因此从我的角度来看,k8s 主实例在高可用性方面是单点故障。

Kubernetes Master HA on AWS

因此,我尝试使用三个主节点设置 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/

相关文章:

apache-spark - Spark 流和高可用性

javascript - 适用于 Javascript 的 AWS uploadpart 函数中的 XMLHttpRequest 出现网络故障

java - 是否可以检查 DynamoDB 的预配置吞吐量是多少?

node.js - Express js中的AWS s3文件上传: whats the difference between upload vs multipart upload

kubernetes - 为什么 kubernetes HA 需要奇数个 master

kubernetes - persistentvolumeclaim “pv-delay-bind”找不到kubernetes

尝试从 aws lambda 处理函数调用 SDN 时出现 java.lang.NullPointerException

kubernetes - 错误 : You must be logged in to the server - the server has asked for the client to provide credentials - "kubectl logs" command gives error

nosql - 可靠性:主/从模式是注定的吗?

c# - 使用 C# asp.net/Net 4.7 为 HA 缓存大对象