资讯专栏INFORMATION COLUMN

构建生产环境可用的高可用kubernetes集群

ShevaKuilin / 2251人阅读

摘要:集群三步安装构建生产环境可用的高可用集群项目地址特性支持任意节点的集群自动构建,且集群使用安全证书,通过方式启动,这样可以通过监控来监控集群健康状态支持多节点,允许任意一台宕机集群功能不受影响使用集群,配置安全证书,网络管控数据无单点故障包

kubernetes集群三步安装 构建生产环境可用的高可用kubernetes集群 | sealos项目地址 特性

[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 微服务支持

ship on docker 你必须已经有了sealyun kubernetes离线安装包 (默认支持kubernetes版本v1.12.x,针对特殊版本的适配会切分支处理)

针对后续高版本会有更多优化

大概原理是为了减少大家搭建ansible和sealos的环境,客户端的东西都放到docker里,把安装包挂载到容器中,然后ansible脚本会把包分发到你在hosts文件中配置的所有服务器上

所以大概分成三步:

配置免密钥,把docker里的公钥分发给你所有的服务器

配置ansible playbook的hosts文件

执行ansible

下面逐一说明:

启动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+NxtvPn8Td6tgZtq7cVU//kSsbzkUzDSD8zsh8kPUm4yljT5tYM1cPFLGM4m/zqAjAZN2YaEdFckJFAQ7TWAK857d root@8682294b9464

这样公钥就生成了

在其它所有要安装k8s的服务器上执行:
cd ~/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7fTirP9zPcx7wIjhsF+Dyu0A2sV5llC8jsmp/xtiyuJirE3mclpNEqgrzHC26f+ckfzwoE0HPU0wDPxbWFl3B0K89EwJSBsVZSZ0VLYnZp0u2JgwCLZzZzKfY0018yoqoL9KHz/68RpqtG2bWVf0/WSj+4hN7xTRpRTtXJHBOQRQBfqVSIcfMBSEnO15buUbDaLol/HvQd0YBrWwafQtMacmBlqDG0Z6/yeY4sTNRVRV2Uu5TeaHfzgYgmY9+NxtvPn8Td6tgZtq7cVU//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
uninstall all
# ansible-playbook roles/uninstall-all.yaml

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27507.html

相关文章

  • 企业级落地容器与DevOps,选用K8S都有哪些“姿势”

    摘要:由于,容器任务被简化,包括部署操作水平自动伸缩滚动更新金丝雀部署和管理监视资源应用健康检查调试应用等。支持和培训当企业准备应用容器化战略时,管理平台提供商是否向企业保证的支持以及培训在所有可用的选择中,只有少数的一些公司,如支持了这些选项。 作为时下最火热的热点词汇:Kubernetes,其拥有成熟的社区,大公司的背景等等获得了大部分人的认可,很多公司都在准备启用Kubernetes,...

    susheng 评论0 收藏0
  • Kubernetes Master High Availability 高级实践

    摘要:才云科技云开源高级工程师唐继元受邀社群,在线分享高级实践,介绍如何构建环境。除命令外的停止都是异常停止。 才云科技云开源高级工程师唐继元受邀DBAplus社群,在线分享《Kubernetes Master High Availability 高级实践》,介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录: 大家好,我是才云科技的唐继...

    JiaXinYi 评论0 收藏0
  • Kubernetes的几种主流部署方式02-kubeadm部署1.14版本高可用集群

    摘要:所以,选择把运行直接运行在宿主机中,使用容器部署其他组件。独立部署方式所需机器资源多按照集群的奇数原则,这种拓扑的集群关控制平面最少就要台宿主机了。 在上篇文章minikube部署中,有提到Minikube部署Kubernetes的核心就是Kubeadm,这篇文章来详细说明下Kubeadm原理及部署步骤。写这篇文章的时候,Kubernetes1.14刚刚发布,所以部署步骤以1.14版为...

    atinosun 评论0 收藏0
  • Kubernetes的几种主流部署方式02-kubeadm部署1.14版本高可用集群

    摘要:所以,选择把运行直接运行在宿主机中,使用容器部署其他组件。独立部署方式所需机器资源多按照集群的奇数原则,这种拓扑的集群关控制平面最少就要台宿主机了。 在上篇文章minikube部署中,有提到Minikube部署Kubernetes的核心就是Kubeadm,这篇文章来详细说明下Kubeadm原理及部署步骤。写这篇文章的时候,Kubernetes1.14刚刚发布,所以部署步骤以1.14版为...

    superw 评论0 收藏0
  • 基于DevOps、微服务以及k8s的高可用架构探索与实现

    摘要:前言本文给大家分享的题目是基于微服务以及的高可用架构探索与实现。比如说年大地震的时候我正好在东京,当时在做一个金融系统的相关工作。那次大地震导致很多很多的问题,虽然大地震不是在东京发生,但是还是给我们的系统造成了影响。 前言 本文给大家分享的题目是《基于DevOps、微服务以及K8S的高可用架构探索与实现》。整个企业的高可用架构面临很多的挑战,面向微服务、容器化以及敏态交付,是我们现在...

    cnio 评论0 收藏0

发表评论

0条评论

ShevaKuilin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<