下载 kubespray 仓库并切换到目标版本:
git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray
git checkout v2.24.1
准备一个 python 运行环境,并安装 kubespray 需要的 python 代码包:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
inventory/ 中的每个目录是一个部署实例,从 sample 中复制一份:
cp -r inventory/sample inventory/local-demo
指定目标机器的 IP 地址,生成对应的 hosts.yml 文件:
declare -a IPS=(192.168.33.11 192.168.33.12 192.168.33.13 192.168.33.14)
CONFIG_FILE=inventory/local-demo/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
执行结束后,生成文件 inventory/local-demo/hosts.yml。其中定义了机器列表和机器分组。
最后执行 ansible 命令,指定生成的 hosts.yaml 以及 kubespray 项目中的 cluster.yml,完成部署。
ansible-playbook -i inventory/mycluster/hosts.yaml -u $USERNAME -b -v --private-key=~/.ssh/id_rsa cluster.yml
cluster.yml 在不同机器组上部署 kubernetes 的不同组件。
kubespary 支持通过变量自定义集群的配置:
在 inventory 的每个实例目录中修改变量数值,比如 inventory/sample 中的变量配置:
$ ls inventory/sample/group_vars/all
all.yml azure.yml coreos.yml docker.yml gcp.yml huaweicloud.yml offline.yml upcloud.yml
aws.yml containerd.yml cri-o.yml etcd.yml hcloud.yml oci.yml openstack.yml vsphere.yml