最近想在自己的测试服务器上安装一个Kubernetes集群环境,本想使用rancher的RKE进行部署,后面听朋友说国内的kubeasz不错,可以进行离线安装,它的优势主要是很好了解决了“墙”国的特有网络问题,并且支持离线安装。因此在国内使用这个工具有非常大的优势,因为你使用其他部署工具基本都是需要访问国外源的,“墙”的问题总是绕不开的。这里简单记录下部署过程。
参考官方github:
https://github.com/easzlab/kubeasz/tree/master
部署规划
我只是需要一个测试环境,计划使用3个虚拟机,1个做master,2个做work node节点。首先在自己的虚拟化环境生成3个虚拟机,操作系统rocky9.3。
部署记录
刚开始的时候询问的AI,并且根据AI的操作步骤去做,部署过程碰到一系列安装包依赖的问题,后面才意识到走弯路了,还是直接找到官方github到指导文档进行安装。其中的关键点是部署环境使用官方推荐的容器方式,这样就不用自己去安装ansible和相关的依赖包。参考:
https://github.com/easzlab/kubeasz/blob/master/docs/setup/offline_install.md
可以说这个工具确实非常的好用,设计上面也非常贴心,一方面可以先通过命令:
./ezdown -D
离线下载安装包。另一方面同时将部署工具打包到一个容器,并且连容器安装部署也只需要一个命令:
./ezdown -S
就实现了。
多节点集群的安装部署参考:
https://github.com/easzlab/kubeasz/blob/master/docs/setup/00-planning_and_overall_intro.md
部署步骤
文档中命令默认都需要root权限运行。
1.基础系统配置
- 配置参考上面的规划
- 配置基础网络、更新源、SSH登录等
2.准备ssh免密登陆
配置从部署节点能够ssh免密登陆所有节点,注意执行下面的命令之前需要先执行命令:
ssh-keygen
生成密钥
#$IP为所有节点地址包括自身,按照提示输入yes 和root密码
#ssh-copy-id $IP
ssh-copy-id root@192.168.170.123
ssh-copy-id root@192.168.170.124
ssh-copy-id root@192.168.170.125
3.在部署节点编排k8s安装
- 3.1 下载项目源码、二进制及离线镜像
下载工具脚本ezdown,使用kubeasz版本3.6.7
export release=3.6.7
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
下载kubeasz代码、二进制、默认容器镜像(更多关于ezdown的参数,运行./ezdown 查看)
# 国内环境
./ezdown -D
上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/kubeasz
- 3.2 创建集群配置实例
# 容器化运行kubeasz
./ezdown -S
# 创建新集群 k8s-01
docker exec -it kubeasz ezctl new k8s-01
然后根据提示配置’/etc/kubeasz/clusters/k8s-01/hosts’ 和 ‘/etc/kubeasz/clusters/k8s-01/config.yml’:根据前面节点规划修改hosts 文件和其他集群层面的主要配置选项;其他集群组件等配置项可以在config.yml 文件中修改。
这里要注意一点,就是config.yml文件里面的内容去修改,但是不要删除其他内容,里面很多参数在ansible部署中需要用到。
- 3.3 开始安装
#建议使用alias命令,查看~/.bashrc 文件应该包含:alias dk='docker exec -it kubeasz'
source ~/.bashrc
# 一键安装,等价于执行docker exec -it kubeasz ezctl setup k8s-01 all
dk ezctl setup k8s-01 all
........
.....
PLAY RECAP *********************************************************************
192.168.170.123 : ok=128 changed=81 unreachable=0 failed=0 skipped=155 rescued=0 ignored=0
192.168.170.124 : ok=88 changed=61 unreachable=0 failed=0 skipped=128 rescued=0 ignored=0
192.168.170.125 : ok=88 changed=61 unreachable=0 failed=0 skipped=128 rescued=0 ignored=0
localhost : ok=43 changed=38 unreachable=0 failed=0 skipped=66 rescued=0 ignored=0
......
........
# 或者分步安装,具体使用 dk ezctl help setup 查看分步安装帮助信息
[root@k8s-master-1 ~]# dk ezctl help setup
Usage: ezctl setup <cluster> <step>
available steps:
01 prepare to prepare CA/certs & kubeconfig & other system settings
02 etcd to setup the etcd cluster
03 container-runtime to setup the container runtime(docker or containerd)
04 kube-master to setup the master nodes
05 kube-node to setup the worker nodes
06 network to setup the network plugin
07 cluster-addon to setup other useful plugins
90 all to run 01~07 all at once
10 ex-lb to install external loadbalance for accessing k8s from outside
11 harbor to install a new harbor server or to integrate with an existed one
examples: ./ezctl setup test-k8s 01 (or ./ezctl setup test-k8s prepare)
./ezctl setup test-k8s 02 (or ./ezctl setup test-k8s etcd)
./ezctl setup test-k8s all
./ezctl setup test-k8s 04 -t restart_master
- 3.4 安装完成后的检查
[root@k8s-master-1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master-1 Ready,SchedulingDisabled master 127m v1.33.1
k8s-node-1 Ready node 124m v1.33.1
k8s-node-2 Ready node 124m v1.33.1