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

Kubernetes #Kubespray

最后修改:2024 年 11 月 23 日
如果觉得我的文章对你有用,请随意赞赏