跳到主要内容

Kubernetes 与 Cilium

Terraform 创建节点后,项目进入集群层:先生成 Ansible inventory,再初始化节点和 kubeadm 集群,最后安装 Cilium 并启用 Cluster Mesh。

Inventory 渲染

make ansible-inventory

该目标读取 generated/aliyun/terraform-output.jsongenerated/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 不冲突。

常见判断

现象先查什么
节点 NotReadykubelet 日志、containerd、Cilium Pod
Cilium Pending镜像拉取、Helm values、节点资源
Cluster Mesh 不通NodePort、LB、安全组、cluster ID
跨集群服务失败先确认 clustermesh connected,再看服务导出与 DNS