![](/img/trans.png)
[英]How to setup reverse proxy in aws with statistic IP in aws with HA/AS
[英]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主实例是单点故障。
因此,我尝试使用三个主节点设置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控制器并非易事,我无法在此处提供所有详细信息,但我将概述对我而言成功的事情。
$ kube-aws up --export
生成cloudformation堆栈文件。 将您的云配置插入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对象。)
使用新创建的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.