您好,登录后才能下订单哦!
这篇文章主要讲解了“怎么构建生产环境可用的高可用kubernetes集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么构建生产环境可用的高可用kubernetes集群”吧!
[x] 支持任意节点的etcd集群自动构建,且etcd集群使用安全证书,通过static pod方式启动,这样可以通过监控pod来监控etcd集群健康状态
[x] 支持多master节点,允许任意一台master宕机集群功能不受影响
[x] calico使用etcd集群,配置安全证书,网络管控数据无单点故障
[x] 包含dashboard, heapster coreDNS addons, coreDNS双副本,无单点故障
[x] 使用haproxy负载master节点,同样是用static pod,这样可通过统一监控pod状态来监控haproxy是否健康
[x] haproxy节点使用keepalived提供虚拟IP,任意一个节点宕机虚拟IP可实现漂移,不影响node连接master
[x] node节点与kube-proxy配置使用虚拟IP
[ ] 集群健康检测功能
[ ] promethus 监控功能,一键安装,无需配置
[ ] EFK 日志收集功能
[ ] 分布式HA模式,不用keepalived,减少集群构建出错概率,无VIP切换时间
[x] istio 微服务支持
针对后续高版本会有更多优化
大概原理是为了减少大家搭建ansible和sealos的环境,客户端的东西都放到docker里,把安装包挂载到容器中,然后ansible脚本会把包分发到你在hosts文件中配置的所有服务器上
所以大概分成三步:
配置免密钥,把docker里的公钥分发给你所有的服务器
配置ansible playbook的hosts文件
执行ansible
下面逐一说明:
找台宿主机如你的PC,或者一台服务器,把下载好的离线包拷贝到/data目录,启动sealos容器,把离线包挂载进去:
docker run --rm -v /data/kube1.12.0.tar.gz:/data/kube1.12.0.tar.gz -it -w /etc/ansible fanux/sealos:v1.12.0-beta bash
在容器里面执行:
mkdir ~/.ssh cd ~/.ssh ssh-keygen -t rsa
ssh public key:
cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7fTirP9zPcx7wIjhsF+Dyu0A2sV5llC8jsmp/xtiyuJirE3mclpNEqgrzHC26f+ckfzwoE0HPU0wDPxbWFl3B0K89EwJSBsVZSZ0VLYnZp0u2JgwCLZzZzKfY0018yoqoL9KHz/68RpqtG2bWVf0/WSj+4hN7xTRpRTtXJHBOQRQBfqVSIcfMBSEnO15buUbDaLol/HvQd0YBrWwafQtMacmBlqDG0Z6/yeY4sTNRVRV2Uu5TeaHfzgYgmY9+Nxt***8Td6tgZtq7cVU//kSsbzkUzDSD8zsh8kPUm4yljT5tYM1cPFLGM4m/zqAjAZN2YaEdFckJFAQ7TWAK857d root@8682294b9464
这样公钥就生成了
cd ~/.ssh echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7fTirP9zPcx7wIjhsF+Dyu0A2sV5llC8jsmp/xtiyuJirE3mclpNEqgrzHC26f+ckfzwoE0HPU0wDPxbWFl3B0K89EwJSBsVZSZ0VLYnZp0u2JgwCLZzZzKfY0018yoqoL9KHz/68RpqtG2bWVf0/WSj+4hN7xTRpRTtXJHBOQRQBfqVSIcfMBSEnO15buUbDaLol/HvQd0YBrWwafQtMacmBlqDG0Z6/yeY4sTNRVRV2Uu5TeaHfzgYgmY9+Nxt***8Td6tgZtq7cVU//kSsbzkUzDSD8zsh8kPUm4yljT5tYM1cPFLGM4m/zqAjAZN2YaEdFckJFAQ7TWAK857d root@8682294b9464" >> authorized_keys
这样公钥分发工作完成了,所有的机器直接ssh无需输入密码即可登录
Config your own hosts
# cd /etc/ansible # vim hosts
配置说明:
[k8s-master] 10.1.86.204 name=node01 order=1 role=master lb=MASTER lbname=lbmaster priority=100 10.1.86.205 name=node02 order=2 role=master lb=BACKUP lbname=lbbackup priority=80 10.1.86.206 name=node03 order=3 role=master [k8s-node] 10.1.86.207 name=node04 role=node [k8s-all:children] k8s-master k8s-node [all:vars] vip=10.1.86.209 # 同网段未被占用IP k8s_version=1.12.0 # kubernetes版本 ip_interface=eth.* etcd_crts=["ca-key.pem","ca.pem","client-key.pem","client.pem","member1-key.pem","member1.pem","server-key.pem","server.pem","ca.csr","client.csr","member1.csr","server.csr"] k8s_crts=["apiserver.crt","apiserver-kubelet-client.crt","ca.crt", "front-proxy-ca.key","front-proxy-client.key","sa.pub", "apiserver.key","apiserver-kubelet-client.key", "ca.key", "front-proxy-ca.crt", "front-proxy-client.crt" , "sa.key"]
注意role=master的会装etcd与kubernetes控制节点,role=node即k8s node节点,配置比较简单,除了改IP和版本,其它基本不用动
# ansible-playbook roles/install-all.yaml
# ansible-playbook roles/uninstall-all.yaml
感谢各位的阅读,以上就是“怎么构建生产环境可用的高可用kubernetes集群”的内容了,经过本文的学习后,相信大家对怎么构建生产环境可用的高可用kubernetes集群这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。