跳到主要内容

概述

Cilium 是一个基于 eBPF 的开源云原生网络解决方案,可为 Kubernetes 集群提供高性能网络、高级网络安全策略、可观测性等能力。本系列教程介绍如何在 TKE 集群中安装和使用 Cilium。

文章地图​

入门篇​

文章内容适合读者
安装 Cilium空集群创建、helm 安装、验证、回滚首次上手
Cilium 功能测试功能测试方法与实测数据所有安装后的用户
Cilium 性能测试网络基准性能与各方案横向对比关注性能的用户

网络增强​

文章内容适用方案
使用 Gateway APICilium 内置 Gateway API 实现流量路由仅 Overlay(ipam=multi-pool)
Egress Gateway 应用实践按策略选择固定出口 IP 访问外部三种方案(Native 已实测)
启用通信加密WireGuard / IPsec 加密节点间 Pod 流量WireGuard 全方案(IPsec 有限制,见该篇)
使用 Cilium 构建多集群网络ClusterMesh 打通多集群服务互访全方案(需跨集群网络互通,见该篇前提)

安全策略​

文章内容
NetworkPolicy 应用实践CiliumNetworkPolicy 入门与常见模式 20+ 例

可观测性​

文章内容
增强可观测性启用 Hubble Relay / Hubble UI / 网络流日志审计
使用 Cilium + CLS 实现网络流日志审计将 Hubble 流日志投递到 CLS 检索分析

附录​

文章内容
Cilium 网络性能 Benchmark三方案横向压测:吞吐 / RPS / Service 规模化 / 策略开销
大规模集群 Cilium 调优指南200+ 节点规模下的参数、资源、BPF map 调优
已验证的节点操作系统8 种 OS 的兼容性验证结果
sysctlfix 与 rp_filter 机制详解为什么两种模式都禁用 sysctlfix、udev 覆盖机制、Overlay 的 DaemonSet 补偿
VPC-CNI Native Routing 模式详解local-router-ipv4、sysctlfix 与 rp_filter 机制、Host Routing 配置原理
为什么不提供 GR Native Routing完整试错记录与 4 类不可用问题
Cilium 与 Nodelocal DNSCache 共存自建 NodeLocal DNS 加速 DNS 解析
配置 IP 伪装让 Pod 借节点 EIP 出公网,无需 NAT 网关
使用 TCR 托管镜像生产环境用内网 TCR 替代公网镜像拉取

故障排查​

文章内容
连接 apiserver 报错 operation not permittedCilium bug 排查与根因分析
Overlay 模式下 Webhook 连接超时托管集群 apiserver 调用 webhook 超时的根因与 hostNetwork 方案
Cilium 调试速查cilium status、monitor、hubble observe、BPF map 等常用调试命令

快速决策树​

根据你的需求,从下面快速定位到目标文章:

你想干什么?
├─ 安装 Cilium
│ ├─ 新建集群,首次安装 → 安装 Cilium
│ ├─ 已有集群,想测试是否正常 → 功能测试
│ └─ 关心性能表现 → 性能测试
├─ 配置网络能力
│ ├─ 暴露 HTTP/HTTPS 服务(Ingress 替代)→ Gateway API
│ ├─ Pod 要出公网
│ │ ├─ 已有 NAT 网关 → 无需额外配置
│ │ ├─ 想复用节点 EIP → 配置 IP 伪装
│ │ └─ 想指定固定出口 IP → Egress Gateway
│ ├─ 加密节点间流量 → 启用通信加密
│ ├─ 让多个集群互通 → 构建多集群网络
│ └─ 加速 DNS 解析 → Nodelocal DNSCache
├─ 写网络策略
│ └─ 限制 Pod 间/出站/入站访问 → NetworkPolicy 应用实践
├─ 做可观测性
│ ├─ 看看集群服务拓扑 → 增强可观测性
│ └─ 做网络流日志审计 → Cilium + CLS 日志审计
├─ 调优与排障
│ ├─ 大规模集群优化 → 大规模集群调优指南
│ ├─ 检查 OS 兼容性 → 已验证的节点操作系统
│ ├─ 连接 apiserver 报错 → 对应故障排查文章
│ └─ Webhook(cert-manager 等)连接超时 → 对应故障排查文章
└─ 了解设计原理
├─ Host Routing 是什么 → Native Routing 模式详解
├─ 为什么配 local-router-ipv4 → Native Routing 模式详解
└─ 为什么 GR 不行 → GR Native 不推荐原因

网络模式​

Cilium 路由支持两种模式:

  1. Encapsulation(封装模式):在原有网络上再做一层网络封包(如 vxlan)转发。兼容性好、可适配各种网络环境,缺点是性能略低。
  2. Native-Routing(原生路由):Pod IP 直接在底层网络上进行路由转发,Cilium 不管。性能好,但依赖底层网络对 Pod IP 路由转发的支持。

在包括 TKE 在内的云上托管的 Kubernetes 集群中,VPC 底层网络都已支持 Pod IP 的路由转发,无需再走一层 overlay,可获得最佳网络性能,所以通常使用 Native-Routing 模式。

但如果你有以下需求,可以选择 Encapsulation(vxlan overlay)模式:

  • VPC IP 资源紧张,不希望 Pod IP 占用 underlay IP。
  • 需要纳管 IDC 集群,替代 TKE 内置的 CiliumOverlay 网络模式。
  • 希望使用最新版本的 Cilium,获得满血功能(不与 kube-proxy 共存,避免 NetworkPolicy 等功能降级)。

更多详情请参考 Cilium 官方文档:Routing。

三种推荐部署方案​

本系列教程提供以下三种经过完整 e2e 测试的部署方案:

方案集群网络模式路由模式Pod IP 来源核心特点
Native Routing (VPC-CNI)VPC-CNINativeVPC 子网 IPPod 被 VPC 原生识别
Overlay (VPC-CNI)VPC-CNIVXLAN独立 CIDRIP 与 VPC 解耦、满血功能
Overlay (GR)GRVXLAN独立 CIDR仅推荐已有 GR 集群使用

GR + Native Routing 因兼容性问题不再提供,详见 为什么不提供 GR Native Routing 部署方案?。

前提条件​

如果要在 TKE 集群中安装 Cilium,需满足以下前提条件:

配套工具​

本系列配套了一个一键安装脚本 cilium.sh,封装了安装、测试、卸载等常见操作:

子命令功能
cilium.sh install自动检测集群环境,交互式引导安装
cilium.sh uninstall卸载 Cilium,恢复 TKE 组件
cilium.sh test跑通 130+ 功能测试用例(含国内地域适配)
cilium.sh perf执行网络性能基准测试(TCP_RR / TCP_STREAM)
cilium.sh enable-hubble一键启用 Hubble Relay + UI
cilium.sh enable-egress-gateway一键启用 Egress Gateway
cilium.sh install-localdns一键安装 NodeLocal DNSCache(与 Cilium 共存)

关键能力​

在 TKE 中安装 Cilium 后,可以替代或增强以下 TKE 原生网络组件:

能力TKE 原生Cilium 替代/增强
kube-proxy默认安装kubeProxyReplacement(完全替代)
NetworkPolicy不支持 L7/DNSCiliumNetworkPolicy(支持 L7 / FQDN)
可观测性无Hubble(服务拓扑 + 网络流日志)
Egress 控制需额外配置Egress Gateway(按策略选择出口 IP)
加密无WireGuard / IPsec 透明加密
IP 伪装ip-masq-agent内置 BPF 版 ip-masq-agent(性能更好)
多集群网络无ClusterMesh(跨集群 Service 互访)