集群准备
本文介绍如何创建一个满足 cilium 安装条件的 TKE 集群。
创建 TKE 集群
在 容器服务控制台 创建 TKE 标准集群,注意以下关键选项:
- Kubernetes 版本: 不低于 1.30.0,建议选择最新版。
- 操作系统:TencentOS 4.0 及以上或者 Ubuntu 22.04 及以上。
- 容器网络插件:VPC-CNI 共享网卡多 IP。
- Kube-proxy 转发模式:如果希望 cilium 与 kube-proxy 共存,选择 iptables 模式。
新建节点池
以下是通过 容器服务控制台 创建原生节点池和普通节点池的步骤(根据需求任选一种):
新建原生节点池
-
在集群列表中,单击集群 ID,进入集群详情页。
-
选择左侧菜单栏中的节点管理,点击节点池进入节点池列表页面。
-
点击新建。
-
选择 原生节点。
-
在 高级设置 的 Annotations 点击 新增:
node.tke.cloud.tencent.com/beta-image=ts4-public
(原生节点默认使用 TencentOS 3.1,与最新版的 cilium 不兼容,通过注解指定原生节点使用 TencentOS 4)。 -
在 高级设置 的 Taints 点击 新建Taint:
node.cilium.io/agent-not-ready=true:NoExecute
(让节点上的 cilium 组件 ready 后再调度 pod 上来)。 -
在 高级设置 的 自定义脚本 中,配置 节点初始化后 执行的脚本来修改 containerd 配置,添加
quay.io
的镜像加速(cilium 的官方容器镜像主要在quay.io
,如果你的集群在中国大陆或者节点没有公网,可以配置这个自定义脚本):sed -i '/\[plugins\."io.containerd.grpc.v1.cri"\.registry\.mirrors\]/ a\\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]\n\ \ \ \ \ \ \ \ \ \ endpoint = ["https://quay.tencentcloudcr.com"]' /etc/containerd/config.toml
systemctl restart containerd说明- 如果计划将 cilium 依赖镜像同步到自己的镜像仓库来使用(如 TCR 镜像仓库),可以忽略该步骤。
- 如果集群不在中国大陆,且节点都可以访问公网,也可以忽略该步骤。
-
其余选项根据自身需求自行选择。
-
点击 创建节点池。
如果你想通过 terraform 来创建节点池,参考以下片段:
resource "tencentcloud_kubernetes_native_node_pool" "cilium" {
name = "cilium"
cluster_id = tencentcloud_kubernetes_cluster.tke_cluster.id
type = "Native"
annotations { # 添加注解指定原生节点使用 TencentOS 4,以便能够与 cilium 兼容
name = "node.tke.cloud.tencent.com/beta-image"
value = "ts4-public"
}
taints { # 添加污点,让节点上的 cilium 组件 ready 后再调度 pod 上来
key = "node.cilium.io/agent-not-ready"
effect = "NoExecute"
value = "true"
}
native {
lifecycle {
# 自定义脚本:修改 containerd 配置,添加 quay.io 的镜像加速
post_init = "c2VkIC1pICcvXFtwbHVnaW5zXC4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJcLnJlZ2lzdHJ5XC5taXJyb3JzXF0vIGFcXCBcIFwgXCBcIFwgXCBcIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5yZWdpc3RyeS5taXJyb3JzLiJxdWF5LmlvIl1cblwgXCBcIFwgXCBcIFwgXCBcIFwgZW5kcG9pbnQgPSBbImh0dHBzOi8vcXVheS50ZW5jZW50Y2xvdWRjci5jb20iXScgL2V0Yy9jb250YWluZXJkL2NvbmZpZy50b21sCnN5c3RlbWN0bCByZXN0YXJ0IGNvbnRhaW5lcmQK"
}
# 省略其它必要但不相关配置
}
}
新建普通节点池
- 在集群列表中,单击集群 ID,进入集群详情页。
- 选择左侧菜单栏中的节点管理,点击节点池进入节点池列表页面。
- 点击新建。
- 选择 普通节点。
- 操作系统 选择 TencentOS 4、Ubuntu 22.04 或 Ubuntu 24.04。
- 在 高级设置 中 Taints 点击 新建Taint:
node.cilium.io/agent-not-ready=true:NoExecute
(让节点上的 cilium 组件 ready 后再调度 pod 上来)。 - 在 高级设置 的 自定义脚本 中,配置 节点初始化后 执行的脚本来修改 containerd 配置,添加
quay.io
的镜像加速(cilium 的官方容器镜像主要在quay.io
,如果你的集群在中国大陆或者节点没有公网,建议配置这个自定义脚本):sed -i '/\[plugins\."io.containerd.grpc.v1.cri"\.registry\.mirrors\]/ a\\ \ \ \ \ \ \ \ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]\n\ \ \ \ \ \ \ \ \ \ endpoint = ["https://quay.tencentcloudcr.com"]' /etc/containerd/config.toml
systemctl restart containerd - 其余选项根据自身需求自行选择。
- 点击创建节点池。
如果你想通过 terraform 来创建节点池,参考以下片段:
resource "tencentcloud_kubernetes_node_pool" "cilium" {
name = "cilium"
cluster_id = tencentcloud_kubernetes_cluster.tke_cluster.id
node_os = "img-gqmik24x" # TencentOS 4 的镜像 ID
taints { # 添加 taint,让节点上的 cilium 组件 ready 后再调度 pod 上来
key = "node.cilium.io/agent-not-ready"
effect = "NoExecute"
value = "true"
}
node_config {
# 自定义脚本:修改 containerd 配置,添加 quay.io 的镜像加速
user_data = "c2VkIC1pICcvXFtwbHVnaW5zXC4iaW8uY29udGFpbmVyZC5ncnBjLnYxLmNyaSJcLnJlZ2lzdHJ5XC5taXJyb3JzXF0vIGFcXCBcIFwgXCBcIFwgXCBcIFtwbHVnaW5zLiJpby5jb250YWluZXJkLmdycGMudjEuY3JpIi5yZWdpc3RyeS5taXJyb3JzLiJxdWF5LmlvIl1cblwgXCBcIFwgXCBcIFwgXCBcIFwgZW5kcG9pbnQgPSBbImh0dHBzOi8vcXVheS50ZW5jZW50Y2xvdWRjci5jb20iXScgL2V0Yy9jb250YWluZXJkL2NvbmZpZy50b21sCnN5c3RlbWN0bCByZXN0YXJ0IGNvbnRhaW5lcmQK"
# 省略其它必要但不相关配置
}
}