1. 课程导学与实验环境准备:多租户隔离与Cilium网络调优的重要性

1.1 为什么多租户隔离与Cilium网络调优是Kubernetes生产环境的必修课

在Kubernetes集群中,多租户隔离与网络性能调优是保障业务安全、稳定、高效运行的两大核心挑战。随着企业将越来越多的关键业务容器化,一个集群内往往需要承载多个团队、多个环境甚至多个客户的工作负载。如果缺乏有效的隔离机制,租户间的网络攻击面、资源争抢、配置冲突等问题将直接导致生产事故。

Cilium作为基于eBPF的新一代CNI插件,凭借其内核级网络策略执行、可观测性以及高性能数据平面,已成为解决多租户网络隔离与性能调优的首选方案。本课程将带领你从零搭建一套具备生产级多租户隔离能力的Kubernetes集群,并深入Cilium网络调优的实战细节。

核心痛点: 传统NetworkPolicy基于iptables,在大规模多租户场景下存在规则膨胀、性能衰减、策略管理复杂等问题。Cilium通过eBPF将网络策略下推到内核,实现毫秒级规则生效与线速转发。

1.2 课程目标与学习路径

本课程共30章,覆盖从基础概念到高级调优的完整知识体系。完成本课程后,你将能够:

  • 掌握多租户隔离设计原则: 理解Namespace、NetworkPolicy、CiliumNetworkPolicy、基于身份的隔离等层次化隔离模型。
  • 独立搭建Cilium网络环境: 在Kubernetes集群中部署Cilium并启用Hubble可观测性组件。
  • 精通Cilium网络策略编写: 从基础L3/L4策略到L7 HTTP/gRPC策略,再到基于DNS和FQDN的策略。
  • 实施网络性能调优: 掌握MTU、带宽管理、DSR、Maglev、eBPF加速等关键调优参数。
  • 构建生产级可观测性: 利用Hubble实时监控网络流量、服务依赖与安全事件。
模块 章节范围 核心产出
基础篇 第1-5章 多租户集群搭建 + Cilium基础部署
策略篇 第6-12章 L3-L7网络策略实战 + 租户隔离策略模板
调优篇 第13-22章 性能基准测试 + 内核参数调优 + 数据平面优化
观测篇 第23-27章 Hubble监控 + 告警 + 网络拓扑可视化
实战篇 第28-30章 生产级多租户集群迁移与故障排查

1.3 实验环境搭建要求

本课程所有实验均基于一套标准化的Kubernetes集群环境。请确保你的实验环境满足以下最低要求:

  • 节点数量: 至少1个控制平面节点 + 2个工作节点(推荐3个工作节点以模拟多租户调度)。
  • 操作系统: Ubuntu 22.04 LTS 或 Rocky Linux 9.x,内核版本 ≥ 5.10(推荐5.15+以支持完整eBPF特性)。
  • 容器运行时: containerd 1.6+ 或 CRI-O 1.24+。
  • Kubernetes版本: v1.28+(推荐v1.30以兼容最新Cilium特性)。
  • Cilium版本: v1.16+(本课程基于v1.16.5编写)。
  • Hubble: 作为Cilium组件启用,用于网络可观测性。
推荐工具链: 使用 kubeadm 或 kubespray 快速部署集群。Cilium安装推荐使用 helm 或 cilium-cli。所有实验步骤均提供命令行示例。

1.4 实验环境架构图

下图展示了本课程实验环境的整体架构,包括多租户命名空间划分、Cilium Agent部署位置以及Hubble可观测性数据流。

实验环境架构:多租户K8s集群 + Cilium + Hubble 控制平面节点 kube-apiserver etcd / kube-scheduler 工作节点 1 Cilium Agent 租户A: Pods 租户B: Pods Hubble Relay 工作节点 2 Cilium Agent 租户A: Pods 租户C: Pods Hubble UI Cilium 网络策略层 CiliumNetworkPolicy (L3/L4/L7) Clusterwide CiliumNetworkPolicy (全局策略) CiliumClusterwideEnvoyConfig (L7代理) Hubble 可观测性 (流量/策略审计) 组件说明 • Cilium Agent:每个节点运行, 管理eBPF程序与网络策略 • Hubble Relay:聚合集群内 所有节点的流量事件 • Hubble UI:提供Web可视化 界面查看服务依赖与策略 • 多租户隔离:通过Namespace + CiliumNetworkPolicy实现 • eBPF数据平面:内核级网络 处理,无需iptables遍历 • 性能优势:延迟降低50%+, 吞吐量提升3-5倍

1.5 快速部署命令参考

以下命令可用于快速搭建实验环境的基础Kubernetes集群并安装Cilium + Hubble:

# 1. 使用kubeadm初始化控制平面节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 2. 安装Cilium CLI
curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
rm cilium-linux-amd64.tar.gz

# 3. 使用Cilium CLI安装Cilium并启用Hubble
cilium install --version v1.16.5 \
  --set hubble.relay.enabled=true \
  --set hubble.ui.enabled=true

# 4. 验证安装状态
cilium status --wait
cilium connectivity test

# 5. 访问Hubble UI(端口转发)
kubectl port-forward -n kube-system svc/hubble-ui 12000:80
# 浏览器访问 http://localhost:12000
注意: 如果使用云厂商托管Kubernetes服务(如AKS、EKS、GKE),请确保集群支持eBPF(如GKE Dataplane V2)或使用自管理节点。部分云厂商默认内核可能缺少eBPF所需特性,建议使用Ubuntu 22.04 LTS镜像。

1.6 本章小结