ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

在 Rancher Desktop 上安装 Cilium:禁用默认 CNI、替换为 eBPF 数据面的完整指南

2026/9/14 19:06:03 拓冰建站 浏览量
在 Rancher Desktop 上安装 Cilium:禁用默认 CNI、替换为 eBPF 数据面的完整指南 在 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 自带的默认 CNIflannel、挂载 eBPF 所需的 BPF 文件系统与 cgroup v2安装并使用 Cilium CLI 完成cilium install最后通过cilium status与cilium connectivity test验证安装与网络连通性。Rancher Desktop 安装 Cilium 的原理概述Rancher Desktop 内部使用 Lima 虚拟机承载 Kubernetes 发行版并通过 YAML 配置文件override.yaml向底层注入定制参数。要在其上运行 Cilium核心前提是关闭默认 CNIRancher Desktop 默认携带的 flannel CNI 会与 Cilium 冲突必须通过 K3s 启动参数--flannel-backendnone将其禁用关闭内置网络策略引擎使用--disable-network-policy关闭 K3s 自带的网络策略控制器把策略执行完全交给 Cilium准备 eBPF 运行环境Cilium 数据面依赖挂载到宿主机并共享的 BPF 文件系统/sys/fs/bpf与 cgroup v2 文件系统/run/cilium/cgroupv2需要以 root 权限在虚拟机内完成挂载。其中--flannel-backendnone --disable-network-policy这一组参数在仓库的 Documentation/installation/k3s.rst 中同样用于原生 K3s 安装是 Cilium 官方在 K3s 系发行版上的标准做法。第一步配置 Rancher Desktop创建并部署 override.yaml官方配置说明见 Documentation/installation/rancher-desktop-configure.rstRancher 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-backendnone --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-backendnone禁用 flannel CNI--disable-network-policy关闭 K3s 内建网络策略控制器避免与 Cilium 的策略执行重复provision[].script在虚拟机启动的 provisioning 阶段以系统模式mode: system即 root 权限执行挂载脚本挂载并共享 BPF 文件系统与 cgroup v2这是 Cilium 加载 eBPF 程序和管理 Pod 生命周期所必需的前置条件其中挂载脚本对应 Cilium 运行时依赖的两个关键路径/sys/fs/bpfBPF 文件系统挂载点Cilium 将在此固定pin各类 eBPF 程序与 map--make-shared确保挂载传播属性为共享使容器命名空间内也能访问/run/cilium/cgroupv2cgroup v2 挂载点Cilium 的 BPF cgroup 程序依赖它对容器进行生命周期跟踪与策略控制。1.2 将覆盖文件放入 Lima 配置目录创建完成后把override.yaml复制到 Rancher Desktop 的 Lima 配置目录lima/_config下。根据操作系统选择对应命令Linuxcp override.yaml ~/.local/share/rancher-desktop/lima/_config/override.yamlmacOScp 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 CLICilium CLI 用于安装 Cilium、检查已安装状态以及启用/禁用各类功能如 ClusterMesh、Hubble。官方安装脚本见 Documentation/installation/cli-download.rst。Linuxamd64 / arm64CILIUM_CLI_VERSION$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCHamd64 if [ $(uname -m) aarch64 ]; then CLI_ARCHarm64; 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}macOSIntel / Apple SiliconCILIUM_CLI_VERSION$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt) CLI_ARCHamd64 if [ $(uname -m) arm64 ]; then CLI_ARCHarm64; 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加 Deploymentcilium-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),仅供参考