1,背景
kubernetes高可用集群搭建,如果使用命令行进行部署的话会有各种时间同步、网络连通插件或者等等一系列事情要做,这个如果本职工作是运维工程师或者说云服务运维开发工程师也无可厚非,但是我本职工作是微服务开发工程师,不想每次搭建k8sHA集群的时候走一遍流程命令,是不是有什么可以更高效的方法来解决了。
最开始其实是想自己将搭建集群的所有脚本命令直接整合进一个sh脚本,后续搭建的时候就可以直接使用该脚本了,但是实施的时候发现各种问题(linux版本问题、系统软件问题等等),最后想着这么一个明显的问题我肯定不是第一个发现的人,本着不重复造轮子的原则,在网络上搜索了相关资料,发现了如下几种解决方案:
名称 | 底层实现 | 优点 | 缺点 |
---|---|---|---|
rancher | 一个k8s管理的容器 | 比较成熟 | 它为了高可用建议将服务部署在非集群服务器上 一个额外运行rancher的服务器(浪费服务器) |
sealos | go语言实现的一个自动化部署软件 | 直接下载执行命令 kubernetes 为内核的云操作系统发行版 |
暂未知 |
kainstall(弃用) | sh脚本,考虑到各种版本和软件问题 | 直接下载执行脚本 无需关注其他的东西 |
我自己使用的过程中 出现过2次cpu使用量飙升100的情况 最后排查原因发现是网络flannel插件耗费很多资源 |
当前使用sealos部署一个3节点的HA集群
2,sealos部署K8S
2.1,前置条件
3个内网连接的服务器,相同的linux版本、密码(或者密钥),不同的hostname
注意对外开放的防火墙
2.2,部署
如果无法链接github下载压缩包,可以参考linux下无法登陆github官网的解决方案
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget https://github.com/labring/sealos/releases/download/v4.1.4-rc1/sealos_4.1.4-rc1_linux_amd64.tar.gz && \
tar -zxvf sealos_4.1.4-rc1_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
# 创建一个集群
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 192.168.64.2,192.168.64.22,192.168.64.20 \
--nodes 192.168.64.21,192.168.64.19 \
--passwd your-own-ssh-passwd
接下来就是等待集群搭建完成了