繁体   English   中英

如何在AWS上设置Kubernetes Master HA

[英]How to setup Kubernetes Master HA on AWS

我正在尝试做的是:

我已经使用Kubernetes网站(http_kubernetes.io/v1.1/docs/getting-started-guides/aws.html)上的可用文档设置了kubernete集群。 使用kube-up.sh,我能够将kubernete集群设置为1个主节点和3个仆从节点(如下图的蓝色矩形突出显示)。 据我所知,我们可以在需要时添加Minions,所以从我的角度来看,当涉及到高可用性时,k8s主实例是单点故障。

AWS上的Kubernetes Master HA

因此,我尝试使用三个主节点设置HA k8s主层,如上图所示。 为此,我遵循kubernetes高可用性集群指南http_kubernetes.io/v1.1/docs/admin/high-availability.html#buildinging-a-redundant-reliable-data-storage-layer我所做的事情:

使用kube-up.sh和提供程序aws(master1和minion1,minion2和minion3)设置k8s集群。设置两个新的master实例(master2和master3),然后我通过以下所述开始在master1,master 2和master 3上配置etcd集群链接:http_kubernetes.io/v1.1/docs/admin/high-availability.html# Establishmenting-a-redundant-reliable-data-storage-layer因此,简而言之,我从kubernetes网站(http_kubernetes.io /v1.1/docs/admin/high-availability/etcd.yaml),并在所有三个节点上更新了Node_IP,Node_Name和发现令牌,如下所示。

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主服务器,应遵循“ 高可用性Kubernetes群集”文档,尤其要确保已跨故障域复制了存储,并在复制的apiserver之前安装了负载均衡器。

为kubernetes设置HA控制器并非易事,我无法在此处提供所有详细信息,但我将概述对我而言成功的事情。

  1. 使用kube-aws设置单控制器集群: https ://coreos.com/kubernetes/docs/latest/kubernetes-on-aws.html。 这将创建CloudFormation堆栈模板和cloud-config模板,您可以以此为起点。
  2. 转到AWS CloudFormation管理控制台,单击“模板”选项卡,然后复制完整的堆栈配置。 或者,使用$ kube-aws up --export生成cloudformation堆栈文件。
  3. 使用kube-aws生成的userdata cloud-config模板,并将变量替换为实际值。 本指南将帮助您确定这些值应为: https : //coreos.com/kubernetes/docs/latest/getting-started.html 以我为例,我最终得到了四个云配置:
    • 云配置控制器-0
    • 云配置控制器-1
    • 云配置控制器-2-
    • 云配置工人
  4. 在此处验证您的新云配置: https : //coreos.com/validate/
  5. 将您的云配置插入CloudFormation堆栈配置中。 首先压缩并编码您的云配置:

     $ gzip -k cloud-config-controller-0 $ cat cloud-config-controller-0.gz | base64 > cloud-config-controller-0.enc 

    现在,将内容复制到编码的cloud-config到CloudFormation配置中。 查找适当的InstanceController的UserData键。 (我为其他控制器添加了其他InstanceController对象。)

  6. 使用新创建的CloudFormation配置在AWS CloudFormation管理控制台上更新堆栈。

您还需要生成TLS资产: https ://coreos.com/kubernetes/docs/latest/openssl.html。 这些资产将必须进行压缩和编码(与上面的gzip和base64相同),然后插入到您的userdata cloud-configs中。

在服务器上调试时,journalctl是您的朋友:

$ journalctl -u oem-cloudinit  # to debug problems with your cloud-config
$ journalctl -u etcd2
$ journalctl -u kubelet

希望能有所帮助。

还有kops项目

从项目自述文件:

操作HA Kubernetes Kubernetes方式

也:

我们喜欢将其视为集群的kubectl

下载最新版本 ,例如:

cd ~/opt
wget https://github.com/kubernetes/kops/releases/download/v1.4.1/kops-linux-amd64
mv kops-linux-amd64 kops
chmod +x kops
ln -s ~/opt/kops ~/bin/kops

查看kops用法 ,尤其是:

假设您已经有s3://my-kops存储桶和kops.example.com托管区域。

创建配置:

kops create cluster --state=s3://my-kops --cloud=aws \
    --name=kops.example.com \
    --dns-zone=kops.example.com \
    --ssh-public-key=~/.ssh/my_rsa.pub \
    --master-size=t2.medium \
    --master-zones=eu-west-1a,eu-west-1b,eu-west-1c \
    --network-cidr=10.0.0.0/22 \
    --node-count=3 \
    --node-size=t2.micro \
    --zones=eu-west-1a,eu-west-1b,eu-west-1c

编辑配置:

kops edit cluster --state=s3://my-kops

导出terraform脚本:

kops update cluster --state=s3://my-kops --name=kops.example.com --target=terraform

直接应用更改:

kops update cluster --state=s3://my-kops --name=kops.example.com --yes

清单丛集:

kops get cluster --state s3://my-kops

删除集群:

kops delete cluster --state s3://my-kops --name=kops.identityservice.co.uk --yes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM