二进制安装方式真的是一般人搞不定,什么东西都要自己去安装,冷不丁少一点就各种问题,难受的要死。
kubeadm是谷歌官方推荐的安装工具,安装单节点master的话也很方便,如果需要高可用,搭建多master的话,需要配合KeepAlived和HAProxy实现集群高可用。但是使用这两个东西都会存在以下一些劣势:
kubespray呢,外网使用无碍,但是中国境内,部分镜像需要从gcr.io拉取,部分二进制文件需要从github下载,各种需要。需要的东西,都不是好东西(当然这是气话~~)
所以最终采用的是国内大牛开发的Sealos部署工具。
要问原因,最大的一个,那就是不!需!要!翻!墙!
而且:
1. 支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。
2. 证书有效期默认延期至 99 年。
3. 工具使用非常简单。
4. 支持使用自定义配置文件,可灵活完成集群环境定制。
5. 使用内核进行本地负载,稳定性极高,故障排查也极其简单。
官网地址:
https://sealyun.com/
kubernates离线包地址(有几个.0版本是一分钱,但是作者不建议上生产环境!!!,所以意思就是你要正式用的话,买一个吧~):
https://www.sealyun.com/goodsDetail?type=cloud_kernel&name=kubernetes
可以下载sealos不同版本的二进制文件
https://github.com/fanux/sealos/releases
或者用如下命令下载安装(v3.3.8)
wget -c https://github.com/fanux/sealos/releases/download/v3.3.8/sealos && chmod +x sealos && mv sealos /usr/bin
安装并启动docker,已经安装了会重启docker. 高版本离线包自带docker,如没安装docker会自动安装.
下载kubernetes 离线安装包.
下载最新版本sealos.
务必同步服务器时间
主机名不可重复
master节点CPU必须2C以上
请使用sealos 3.2.0以上版本
hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-node
#操作之后可以看到主机名已改
bash
sealos init --master 192.168.1.10 \
--master 192.168.1.33 \
--master 192.168.1.32 \
--node 192.168.1.31 \
--node 192.168.1.35 \
--node 192.168.1.34 \
--user root \
--passwd your-server-password \
--version v1.19.0 \
--pkg-url /data/kube1.19.0.tar.gz
安装过程很慢,毕竟各种各样的东西太多了。
这里发生亿个插曲,虚拟机太多运行k8s把电脑卡崩掉好多次~~~~
最终不断镜像重启,删减启动时的节点,终于在一个master一个node时启动成功了(心里一万头草泥马~~)
[root@k8s-master-100 data]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master-100 Ready master 4m58s v1.19.0
k8s-node-103 Ready 4m29s v1.19.0
之后就可以通过命令一个个添加master和node,作者添加到第三个master时电脑卡爆,然后添加失败了~~,为了电脑的安全运行,删除节点,只留一个master和一个node做接下来的练习。
sealos join --master 192.168.0.6 --master 192.168.0.7
sealos join --master 192.168.0.6-192.168.0.9 # 或者多个连续IP
sealos join --node 192.168.0.6 --node 192.168.0.7
sealos join --node 192.168.0.6-192.168.0.9 # 或者多个连续IP
sealos clean --master 192.168.0.6 --master 192.168.0.7
sealos clean --master 192.168.0.6-192.168.0.9 # 或者多个连续IP
sealos clean --node 192.168.0.6 --node 192.168.0.7
sealos clean --node 192.168.0.6-192.168.0.9 # 或者多个连续IP
sealos clean --all
sealos etcd save