kubespray 是基于 ansible 开发的一套 K8s 生命周期管理软件,由 k8s 官方 sig 维护。
遇到问题多读文档,搞清楚命令意味着什么再操作。
部署方法
获取部署程序
# 从 kubespray 官方仓库拉取
git clone --depth=1 https://github.com/kubernetes-sigs/kubespray.git
# 切换到 v2.26.0 版本,不同版本对应支持不同 k8s 版本,根据需要切换
git checkout v2.26.0
# 进入部署程序目录
cd kubespray
# 创建 python 虚拟环境,激活,并安装依赖
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
定义部署节点信息
# 从集群配置模板拷贝一份
cp -rfp inventory/sample inventory/mycluster
# 定义节点 IP 清单,将 IP 更换为自己节点的 IP
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# 根据需要调整节点角色
inventory/mycluster/hosts.yaml
执行以上命令后会在生成一份节点角色清单在 inventory/mycluster/hosts.yaml
路径下,可以根据需要调整,如调整希望作为 master 的节点、运行 etcd 的节点、作为 worker 的节点等。
定义部署 集群信息
根据需要配置集群:
inventory/mycluster/group_vars/all/*.yml
inventory/mycluster/group_vars/k8s-cluster/*.yml
可以定义部署的 K8s 版本、使用的容器运行时、CNI、Ingress 等内容,具体看注释。
开始部署
# 可选,清理旧集群,若怀疑有残留可以运行这个清理,也可跳过
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# 开始部署
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
若调整了集群配置,重新运行部署即可。
reset.yml
亦可用于销毁集群,谨慎操作.
扩容
扩容貌似再次执行一次部署命令也可,也可运行例如下面的命令,供参考。
ansible-playbook \
-i inventory/mycluster/inventory.ini \
--private-key=id_rsa \
--user=root -b \
scale.yml
缩容
使用以下命令运行 remote-node.yml
即可,将 node
变量指向希望移除的节点,命令供参考。
ansible-playbook \
-i inventory/mycluster/inventory.ini \
--private-key=id_rsa \
--user=ubuntu -b \
--extra-vars "node=node1,node2" \
remove-node.yml
--extra-vars
里写要移出的节点名列表,如果节点已经卡死,无法通过SSH
登录,可以在--extra-vars
加个reset_nodes=false
的选项,跳过第二个步骤。
References
- 使用 kubespray 搭建集群
- https://github.com/kubernetes-sigs/kubespray
- Deploy a Production Ready Kubernetes Cluster