Kubernetes 与 Cilium
Terraform 创建节点后,项目进入集群层:先生成 Ansible inventory,再初始化节点和 kubeadm 集群,最后安装 Cilium 并启用 Cluster Mesh。
Inventory 渲染
make ansible-inventory
该目标读取 generated/aliyun/terraform-output.json 和 generated/tencent/terraform-output.json,生成 ansible/inventory/generated.yml。这是云资源层和节点配置层之间的边界。
节点 bootstrap
Ansible bootstrap 负责安装 containerd、kubeadm、kubelet、kubectl,并处理必要系统配置。
make ansible-bootstrap
WireGuard underlay
make ansible-underlay
make check-underlay
kubeadm 初始化
make ansible-kubeadm
当前 playbook 会初始化每个云的第一个 master,并把 worker 加入同云集群。多 control-plane 加入流程后续再扩展。
验收:
kubectl --kubeconfig generated/aliyun/kubeconfig get nodes -o wide
kubectl --kubeconfig generated/tencent/kubeconfig get nodes -o wide
Cilium 配置渲染
安装前渲染 Helm values:
make render-configs
Cilium 安装
make install-cilium
make check-clusters
验收:
- Cilium agent 正常运行。
- 节点逐步 Ready。
- PodCIDR 与两云规划一致。
Cluster Mesh
make enable-clustermesh
make check-clustermesh
Cluster Mesh 依赖:
- 两侧 Cilium 健康。
- 固定 NodePort
32379可访问。 - 两侧 L4 负载均衡和安全组规则正确。
- Cilium cluster ID 不冲突。
常见判断
| 现象 | 先查什么 |
|---|---|
| 节点 NotReady | kubelet 日志、containerd、Cilium Pod |
| Cilium Pending | 镜像拉取、Helm values、节点资源 |
| Cluster Mesh 不通 | NodePort、LB、安全组、cluster ID |
| 跨集群服务失败 | 先确认 clustermesh connected,再看服务导出与 DNS |