在 Rancher Desktop 上安装 Cilium:禁用默认 CNI、替换为 eBPF 数据面的完整指南
【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium
本指南基于当前仓库的官方安装文档 Documentation/installation/rancher-desktop.rst,完整讲解如何在 Rancher Desktop(一款面向 macOS、Windows 和 Linux 的开源桌面容器与 Kubernetes 应用)上部署 Cilium。你将掌握三个关键环节:通过override.yaml覆盖配置禁用 Rancher Desktop 自带的默认 CNI(flannel)、挂载 eBPF 所需的 BPF 文件系统与 cgroup v2;安装并使用 Cilium CLI 完成cilium install;最后通过cilium status与cilium connectivity test验证安装与网络连通性。
Rancher Desktop 安装 Cilium 的原理概述
Rancher Desktop 内部使用 Lima 虚拟机承载 Kubernetes 发行版,并通过 YAML 配置文件(override.yaml)向底层注入定制参数。要在其上运行 Cilium,核心前提是:
- 关闭默认 CNI:Rancher Desktop 默认携带的 flannel CNI 会与 Cilium 冲突,必须通过 K3s 启动参数
--flannel-backend=none将其禁用; - 关闭内置网络策略引擎:使用
--disable-network-policy关闭 K3s 自带的网络策略控制器,把策略执行完全交给 Cilium; - 准备 eBPF 运行环境:Cilium 数据面依赖挂载到宿主机并共享的 BPF 文件系统(
/sys/fs/bpf)与 cgroup v2 文件系统(/run/cilium/cgroupv2),需要以 root 权限在虚拟机内完成挂载。
其中--flannel-backend=none --disable-network-policy这一组参数在仓库的 Documentation/installation/k3s.rst 中同样用于原生 K3s 安装,是 Cilium 官方在 K3s 系发行版上的标准做法。
第一步:配置 Rancher Desktop(创建并部署 override.yaml)
官方配置说明见 Documentation/installation/rancher-desktop-configure.rst:Rancher Desktop 的配置完全通过一个 YAML 覆盖文件完成,其作用就是在 K3s 启动前把默认 CNI 替换为 Cilium。
1.1 以 containerd 模式启动并创建覆盖文件
首先,启动 Rancher Desktop 并确保其容器运行时选择containerd(而非 Docker)。然后创建一份override.yaml,内容与仓库提供的模板 Documentation/installation/rancher-desktop-override.yaml 一致:
env: # needed for cilium INSTALL_K3S_EXEC: '--flannel-backend=none --disable-network-policy' provision: # needs root to mount - mode: system script: | #!/bin/sh set -e # needed for cilium mount bpffs -t bpf /sys/fs/bpf mount --make-shared /sys/fs/bpf mkdir -p /run/cilium/cgroupv2 mount -t cgroup2 none /run/cilium/cgroupv2 mount --make-shared /run/cilium/cgroupv2/这份文件包含两段关键配置:
| 配置块 | 作用 | 说明 |
|---|---|---|
env.INSTALL_K3S_EXEC | 向 K3s 安装脚本传递启动参数 | --flannel-backend=none禁用 flannel CNI;--disable-network-policy关闭 K3s 内建网络策略控制器,避免与 Cilium 的策略执行重复 |
provision[].script | 在虚拟机启动的 provisioning 阶段以系统模式(mode: system,即 root 权限)执行挂载脚本 | 挂载并共享 BPF 文件系统与 cgroup v2,这是 Cilium 加载 eBPF 程序和管理 Pod 生命周期所必需的前置条件 |
其中挂载脚本对应 Cilium 运行时依赖的两个关键路径:
/sys/fs/bpf:BPF 文件系统挂载点,Cilium 将在此固定(pin)各类 eBPF 程序与 map,--make-shared确保挂载传播属性为共享,使容器命名空间内也能访问;/run/cilium/cgroupv2:cgroup v2 挂载点,Cilium 的 BPF cgroup 程序依赖它对容器进行生命周期跟踪与策略控制。
1.2 将覆盖文件放入 Lima 配置目录
创建完成后,把override.yaml复制到 Rancher Desktop 的 Lima 配置目录lima/_config下。根据操作系统选择对应命令:
Linux:
cp override.yaml ~/.local/share/rancher-desktop/lima/_config/override.yamlmacOS:
cp override.yaml ~/Library/Application\ Support/rancher-desktop/lima/_config/override.yaml1.3 重置 Kubernetes 使配置生效
打开 Rancher Desktop 图形界面,进入Troubleshooting(故障排查)面板,点击"Reset Kubernetes"(重置 Kubernetes)。几分钟后 Rancher Desktop 会重新启动,此时虚拟机已按新配置就绪:flannel 已被禁用,BPF 文件系统与 cgroup v2 已挂载,可以直接安装 Cilium。
第二步:安装 Cilium CLI
Cilium CLI 用于安装 Cilium、检查已安装状态以及启用/禁用各类功能(如 ClusterMesh、Hubble)。官方安装脚本见 Documentation/installation/cli-download.rst。
Linux(amd64 / arm64):
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(Intel / Apple Silicon):
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}上述脚本做了三件事:从stable.txt获取最新稳定版本号;按 CPU 架构(uname -m判断 aarch64/arm64)下载对应二进制压缩包;先校验 SHA-256 校验和再解压安装到/usr/local/bin,并清理临时文件。
第三步:安装 Cilium
确认 Rancher Desktop 的 kubeconfig 可用后,在终端执行安装命令(|CHART_VERSION|在渲染后的文档中会被替换为当前文档对应的 Cilium 版本号,你可以显式指定目标版本):
cilium install --version <VERSION>例如安装当前仓库VERSION文件对应的开发版本对应的正式发行版时,可写成:
cilium install --version v1.16.0从 CLI 源码看,--version标志定义在 cilium-cli/cli/install.go,其默认值来自 Helm 的默认版本字符串,也就是说不带--version时 CLI 会尝试安装默认版本;安装过程本身基于 Helm chart(实现在 cilium-cli/install/ 目录,其中 helm.go 负责 chart 的拉取与渲染,install.go 负责实际资源下发)。安装期间 CLI 会自动检测集群环境(对应 autodetect.go),适配 K3s 等发行版的数据面配置。
命令执行后,Cilium 会以 DaemonSet(每节点一个ciliumAgent Pod)加 Deployment(cilium-operator)的形式部署到集群。
第四步:验证安装
4.1 检查组件状态
运行cilium status查看各组件健康状态,--wait让命令持续等待直到状态成功(无错误且无警告),官方示例输出见 Documentation/installation/cli-status.rst:
$ 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输出解读:
- 顶部的 ASCII 横幅汇总了
Cilium、Operator、Hubble、ClusterMesh四个维度的状态,本例中 Hubble 与 ClusterMesh 默认处于disabled(未启用); DaemonSet cilium与Deployment cilium-operator展示期望副本数与就绪/可用副本数;Image versions列出各工作负载实际运行的镜像及其版本。
--wait及配套参数的实现位于 cilium-cli/cli/status.go:--wait控制是否等待状态报告成功,--wait-duration控制最大等待时长,--ignore-warnings决定等待期间是否容忍警告。
4.2 运行连通性测试
安装确认无误后,执行端到端网络连通性测试,验证集群具备正常的网络能力:
$ 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)该测试会创建临时命名空间,在集群内自动部署一组测试 Pod,逐一验证 Pod 间连通性、DNS、服务路由(Service)转发、策略执行等场景,最后输出测试报告。✅ 69/69 tests successful (0 warnings)表示全部通过。
已知问题提示:如果连通性测试因一个或多个 Pod 报错而无法完成部署,通常是宿主机打开文件数过多所致。可在宿主机上提高
inotify相关资源限制后重试,该问题的描述同样记录在 Documentation/installation/cli-connectivity-test.rst 中。
后续步骤
安装并验证通过后,可以基于当前集群继续深入使用 Cilium 的能力,仓库文档给出的推荐路线(见 Documentation/installation/next-steps.rst)包括:
- 启用 Hubble:开启 Hubble 可观测性组件,获取 Service 依赖图、流量日志与指标;
- 安装 Hubble CLI:通过命令行查询与过滤流经集群的流量;
- 部署 Hubble UI:以可视化界面浏览依赖关系与服务拓扑;
- HTTP 网络策略入门:学习如何编写 L7 HTTP 层网络策略,实现对应用流量的细粒度管控;
- 配置 ClusterMesh:将多个 Kubernetes 集群(包括本机上的 Rancher Desktop 集群)组成 ClusterMesh,实现跨集群服务发现与负载均衡。
这些功能均可在已安装 Cilium 的 Rancher Desktop 集群上通过ciliumCLI 的相应子命令逐步启用,无需重新安装 Cilium 本身。
小结
在 Rancher Desktop 上运行 Cilium 的关键不是安装命令本身,而是前置的运行时准备:通过override.yaml禁用 flannel、关闭 K3s 内建网络策略、以 root 挂载并共享 BPF 文件系统与 cgroup v2,随后再使用 Cilium CLI 完成部署与验证。这套流程让开发者可以在一台笔记本的桌面应用内获得完整、可编程的 eBPF 网络数据面,为后续实验 Hubble 可观测性、L7 策略与 ClusterMesh 打下基础。
【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考