news 2026/9/13 23:57:25

Cilium 在 RKE1 / RKE2 集群上的安装与验证指南(Rancher Kubernetes Engine)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cilium 在 RKE1 / RKE2 集群上的安装与验证指南(Rancher Kubernetes Engine)

Cilium 在 RKE1 / RKE2 集群上的安装与验证指南(Rancher Kubernetes Engine)

【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium

本指南以 Cilium 官方文档 Documentation/installation/k8s-install-rke.rst 为核心,完整讲解如何在standalone(独立、非 Rancher 管理面托管)的 RKE1 与 RKE2 集群上安装 Cilium。你将掌握:RKE1 集群如何关闭默认网络插件(canal/flannel)、RKE2 两种接入方式的取舍(内置 rke2-cilium 与官方 Helm 二选一)、通过 Helm v3 或 Cilium CLI 完成部署,以及使用cilium statuscilium connectivity testkubectl验证集群网络连通性的完整流程。

RKE(Rancher Kubernetes Engine)是 SUSE 出品的 CNCF 认证 Kubernetes 发行版,内置安全与合规能力。它通过去除大部分宿主机依赖,显著降低了 Kubernetes 的安装复杂度,并为部署、升级与回滚提供了稳定路径。当你的 RKE 集群由 Rancher Management Console/UI 托管时,应改走 Rancher 托管集群安装指南;本文只覆盖 standalone 场景。

一、安装前置:确认集群形态

在动手之前,先明确你的 RKE 集群属于哪种形态,对应的安装路径完全不同:

集群形态管理方式安装路径
Standalone RKE1直接使用rke up命令或 rke CLI 创建本文 RKE1 小节
Standalone RKE2直接使用rke2 server/ 二进制安装本文 RKE2 小节
Rancher 托管的 RKE1/2通过 Rancher 管理面创建与纳管Rancher 托管集群安装指南

此分类在 Documentation/installation/requirements-rke.rst 中同样得到印证:只有 standalone 的 RKE1/RKE2 集群才走本文介绍的安装流程。

二、安装 RKE1 集群:将网络插件切换为 none

RKE1 的安装步骤以 RKE1 官方安装指南 为准。关键一步是:生成config.yaml后,必须把默认网络插件修改为none,否则 RKE1 自带的 canal(Canal = Calico + Flannel)网络插件会先于 Cilium 抢占集群网络,导致 Cilium 无法接管 CNI。

config.yaml中的默认配置:

network: options: flannel_backend_type: "vxlan" plugin: "canal"

修改为:

network: plugin: none

修改后,rke up创建的集群将不部署任何 CNI 插件,Node 会处于NotReady状态,这正是 Cilium 将要填补的空位。这里的核心原理是:Kubernetes 每个节点同一时间只能运行一套 CNI 实现,Cilium 作为 eBPF 驱动的 CNI 必须独占node_config.h中的网络配置(见 bpf/node_config.h),因此先禁用 RKE 内置插件是安装 Cilium 的硬性前置条件。

三、安装 RKE2 集群:两种 CNI 接入方式

RKE2 的安装步骤以 RKE2 官方快速入门 为准。RKE2 提供了两种让 Cilium 接管网络的方案:

方式一:使用 RKE2 内置的 Cilium(推荐)

RKE2 发行版自身集成了 Cilium 作为可选 CNI,安装时直接选择 RKE2-integrated Cilium 即可,无需额外安装。此方式对大多数用户最为推荐,因为它与 RKE2 生命周期天然协同,升级路径统一。

方式二:cni: none+ 官方 Cilium Helm chart(进阶)

在 RKE2 服务端配置中显式声明cni: none(详见 RKE2 服务端配置参考),然后通过 Helm 安装 Cilium。

为什么 Cilium 高级用户倾向选择方式二?关键在于 Rancher 维护的rke2-ciliumHelm chart(基于 rancher/rke2-charts 仓库)有独立的发布周期,其 Cilium 版本与上游可能存在时间差。而方式二直接使用官方 Cilium Helm chart,由你自行掌控版本,从 Cilium 视角获得最大的灵活性,例如:更早用上新特性、按需定制 chart values、独立于 RKE2 节奏做升级。代价是需要自己管理 Cilium 的升级与回滚。

四、部署 Cilium:Helm v3 与 Cilium CLI 两种路径

集群就绪且 CNI 位置留空后,即可部署 Cilium。官方提供两种等价方式,任选其一。

方式 A:Helm v3

使用 Helm 直接安装:

helm install cilium cilium/cilium --namespace kube-system

实际安装时建议显式指定版本并携带自定义 values,例如:

helm repo add cilium https://helm.cilium.io/ helm install cilium cilium/cilium \ --namespace kube-system \ --version 1.16.0 \ --set ipam.mode=kubernetes

说明:kube-system是 Cilium 官方默认的部署命名空间,你也可通过--namespace $CILIUM_NAMESPACE自定义。

方式 B:Cilium CLI

Cilium CLI 不仅能安装 Cilium,还能检查安装状态、启用/禁用各类特性(如 ClusterMesh、Hubble)。先按系统架构安装最新版 CLI:

Linux(x86_64 / aarch64 自动识别):

CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCH=amd64 if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum} sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}

macOS:

CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCH=amd64 if [ "$(uname -m)" = "arm64" ]; then CLI_ARCH=arm64; fi curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum} shasum -a 256 -c cilium-darwin-${CLI_ARCH}.tar.gz.sha256sum sudo tar xzvfC cilium-darwin-${CLI_ARCH}.tar.gz /usr/local/bin rm cilium-darwin-${CLI_ARCH}.tar.gz{,.sha256sum}

上述下载与校验脚本的完整出处见 Documentation/installation/cli-download.rst。安装完 CLI 后执行:

cilium install --version 1.16.0

cilium install底层会调用cilium-cli/install包(见 cilium-cli/install),将官方 Helm chart 渲染并应用到集群。从源码结构看,该命令会读取 kubeconfig、校验集群 CNI 占用情况,再以 Helm 方式完成部署,因此它的行为与方式 A 完全等价。

五、验证安装:观察组件与状态

5.1 用 kubectl 观察组件滚动

安装后 Cilium 由两个核心组件组成:DaemonSetcilium(每节点一个,负责数据面)与 Deploymentcilium-operator(负责控制面逻辑,如 IP 分配)。用 watch 观察它们就绪:

$ kubectl -n kube-system get pods --watch NAME READY STATUS RESTARTS AGE cilium-operator-cb4578bc5-q52qk 0/1 Pending 0 8s cilium-s8w5m 0/1 PodInitializing 0 7s coredns-86c58d9df4-4g7dd 0/1 ContainerCreating 0 8m57s coredns-86c58d9df4-4l6b2 0/1 ContainerCreating 0 8m57s

全部组件拉起通常需要几分钟,最终状态应为:

cilium-operator-cb4578bc5-q52qk 1/1 Running 0 4m13s cilium-s8w5m 1/1 Running 0 4m12s coredns-86c58d9df4-4g7dd 1/1 Running 0 13m coredns-86c58d9df4-4l6b2 1/1 Running 0 13m

注意:Cilium 接管 CNI 后,之前因无网络插件而处于ContainerCreatingcoredns也会随之恢复 Running,这正是网络已打通的标志(参见 Documentation/installation/kubectl-status.rst)。

5.2 用 Cilium CLI 查看整体状态

$ cilium status --wait /¯¯\ /¯¯\__/¯¯\ Cilium: OK \__/¯¯\__/ Operator: OK /¯¯\__/¯¯\ Hubble: disabled \__/¯¯\__/ ClusterMesh: disabled \__/ DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2 Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2 Containers: cilium-operator Running: 2 cilium Running: 2 Image versions cilium quay.io/cilium/cilium:v1.9.5: 2 cilium-operator quay.io/cilium/operator-generic:v1.9.5: 2

输出说明(示例版本号 v1.9.5 会随你安装的版本而变化):Cilium: OK表示数据面健康,Operator: OK表示控制面健康,HubbleClusterMesh默认disabled,可按需通过 CLI 启用。命令来自 Documentation/installation/cli-status.rst,其实现逻辑可在 cilium-cli/status 中找到。

六、连通性验证:两条测试路线

路线一:cilium connectivity test(推荐)

运行内置的端到端连通性测试套件:

$ cilium connectivity test ℹ️ Monitor aggregation detected, will skip some flow validation steps ✨ [k8s-cluster] Creating namespace for connectivity check... (...) --------------------------------------------------------------------------------------------------------------------- 📋 Test Report --------------------------------------------------------------------------------------------------------------------- ✅ 69/69 tests successful (0 warnings)

该命令来自 Documentation/installation/cli-connectivity-test.rst,底层实现在 cilium-cli/connectivity(仓库中该目录包含 171 个 Go 文件与 109 个 YAML 场景)。它会自动创建临时命名空间、部署多组测试 Pod,覆盖 Pod 到 Pod、Pod 到 Service、多节点、FQDN、网络策略等路径,最后输出测试报告。

故障提示:如果测试 Pod 因 "too many open files" 无法启动,可在宿主机上调大inotify资源限制后重试。

路线二:kubectl 手动部署 connectivity-check

不想依赖 CLI 时,可手动部署官方连通性检查清单。先创建独立命名空间:

kubectl create ns cilium-test

再应用清单:

kubectl apply -n cilium-test -f examples/kubernetes/connectivity-check/connectivity-check.yaml

该清单(examples/kubernetes/connectivity-check/connectivity-check.yaml)会部署一系列 Deployment,它们通过有无 Service 负载均衡、多种网络策略组合等不同路径互相连通。Pod 名称即连通性变体标识,READYSTATUS直接反映测试成败:

$ kubectl get pods -n cilium-test NAME READY STATUS RESTARTS AGE echo-a-76c5d9bd76-q8d99 1/1 Running 0 66s echo-b-795c4b4f76-9wrrx 1/1 Running 0 66s echo-b-host-6b7fc94b7c-xtsff 1/1 Running 0 66s host-to-b-multi-node-clusterip-85476cd779-bpg4b 1/1 Running 0 66s host-to-b-multi-node-headless-dc6c44cb5-8jdz8 1/1 Running 0 65s pod-to-a-79546bc469-rl2qq 1/1 Running 0 66s pod-to-a-allowed-cnp-58b7f7fb8f-lkq7p 1/1 Running 0 66s pod-to-a-denied-cnp-6967cb6f7f-7h9fn 1/1 Running 0 66s pod-to-b-intra-node-nodeport-9b487cf89-6ptrt 1/1 Running 0 65s pod-to-b-multi-node-clusterip-7db5dfdcf7-jkjpw 1/1 Running 0 66s pod-to-b-multi-node-headless-7d44b85d69-mtscc 1/1 Running 0 66s pod-to-b-multi-node-nodeport-7ffc76db7c-rrw82 1/1 Running 0 65s pod-to-external-1111-d56f47579-d79dz 1/1 Running 0 66s pod-to-external-fqdn-allow-google-cnp-78986f4bcf-btjn7 1/1 Running 0 66s

单节点集群注意host-to-b-multi-node-*pod-to-b-multi-node-*这类检查多节点功能的 Pod 在单节点集群上会保持Pending,属预期行为——它们至少需要 2 个节点才能被调度。

测试完毕后清理命名空间:

kubectl delete ns cilium-test

至此,你已经拥有了一个完全可用的、由 Cilium 提供网络能力的 Kubernetes 集群。

七、后续进阶方向

安装验证完成后,官方文档 Documentation/installation/next-steps.rst 建议按需继续深入以下能力:

  • Hubble:可观测性层,包含 Hubble 安装(cilium hubble enable)、Hubble CLI 与 Hubble UI,用于服务依赖图、流日志与指标观测;
  • HTTP 感知策略(L7):通过gs_http指南体验基于 HTTP 方法的七层网络策略;
  • ClusterMesh:跨集群互联,让多个集群共享服务发现与网络安全策略。

以上参考章节的完整入口可在 Documentation/installation/k8s-toc.rst 中检索。

【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 23:56:28

智能指针的使用及其原理

目录: 1. 智能指针的使用2. RAII和智能指针3. C标准库智能指针的使用 3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr3.4 weak_ptr3.5 make_shared3.6 explicit 修饰构造函数 4. 删除器 4.1 数组的特化版本4.2 自定义删除器 1. 智能指针的使用 只要是堆上 new 出来的…

作者头像 李华
网站建设 2026/9/13 23:52:26

PyCharm高效开发:Yi-Coder-1.5B Python环境配置指南

开展高效开发, 关于Yi - Coder - 1.5B环境配置指南之一, 包含为何会选择Yi - Coder - 1.5B来进行配合。在平常的开发里面, 我们时常会需要迅速地生成代码片段, 去理解繁杂的逻辑, 补全函数调用, 甚至于依据注释自动生成实现。 Yi-Coder-1.5B身为一款专门为编程而优化的开源模型…

作者头像 李华
网站建设 2026/9/13 23:52:24

普通人学python有什么用 ?学好了能干什么

这种语言对普通人而言是很适宜去学习的, 在学习完毕以后, 能够从事的数据挖掘以及分析工作, 还有游戏开发工作, 自动化测试工作, 网站开发爬虫工作等等等。1普通人学习的好处运用学习, 能够提升工作效率, 借助几十行代码去进行一个简单爬虫工具的撰写, 几分钟即可自动抓取特定网…

作者头像 李华
网站建设 2026/9/13 23:52:17

谷歌 Gemini Advanced 更新,可直接在线编辑和运行 Python 代码

2月20日, IT之家传来消息, 2月8日时, 谷歌宣称要把Bard AI聊天机器人进行更名, 还打造并推出专门针对安卓的App, 这个App里搭载的Ultra 1.0模型版本, 是需要进行注册, 而后还要订阅的, 在逻辑推理这方面, 在此App中该模型版本比其他情况更具优势, 在执行指令方面, 它表现得更为…

作者头像 李华