的 Inventory 文件。
部署K3S集群
完成虚拟机的创建之后,我们进入 k3scluster/ansible/ 目录,进行下一步操作
❯ cd ../ansible/
❯ ls
apps.yml init.yml k3s.yaml k3s_hosts main.yml roles
其中文件 k3s_hosts 是在上一步生成的 Inventory 文件,init.yml 文件是初始化节点的 playbook,在上一步的 Terraform 应用中以及执行了。
main.yml 文件是安装配置 K3S 集群的 playbook,roles/ 目录包含了所有的任务。
在执行具体任务之前,我们可以通过 ansbile 测试下虚拟机节点的可用性
❯ ansible -i k3s_hosts all -m ping
worker1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
worker2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
control | SUCCESS => {
"changed": false,
"ping": "pong"
}
接下来执行 main.yml playbook
❯ ansible-playbook -i k3s_hosts main.yml
...
PLAY RECAP ********************************************
control : ok=16 changed=7 unreachable=0 failed=0 skipped=4 rescued=0 ignored=0
worker1 : ok=8 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
worker2 : ok=8 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
这将会调用 roles/k3s/ 里定义的任务,安装和配置 K3S 集群,具体的执行任务,请查看 roles 里的代码。
成功之后,会发现在当前目录生成了一个 k3s.yaml 的文件,这是从 control 节点获取的 kubeconfig 文件,我们需要替换一下 api-server 的 IP
❯ sed -i 's/127.0.0.1/192.168.123.10/g' k3s.yaml
之后,我们就可以通过该 kubeconfig 文件来访问该集群了,例如
❯ kubectl --kubeconfig k3s.yaml cluster-info
Kubernetes control plane is running at https://192.168.123.10:6443
CoreDNS is running at https://192.168.123.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.123.10:6443/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
❯ kubectl --kubeconfig k3s.yaml get no
NAME STATUS ROLES AGE VERSION
worker2.k3s.local Ready 4m19s v1.25.2+k3s1
worker1.k3s.local Ready 4m18s v1.25.2+k3s1
control.k3s.local Ready control-plane,master 4m39s v1.25.2+k3s1
至此,我们就完成了一个 K3S 集群的部署,并可以在部署其他应用。最后,我们也可以继续使用 ansible 来部署演示应用。
文件 apps.yml 是部署演示应用的 playbook,其通过 roles/k3s-app/