Cilium 利用 eBPF 技术为 Kubernetes 提供高性能、可观测和安全的网络基础,是现代云原生网络与安全治理的核心方案。
Cilium 是为云原生环境设计的网络、可观测性和安全平台,基于 Linux 内核的 eBPF 技术,能够透明地为容器和服务提供网络连接、负载均衡和安全防护,无需修改应用代码或容器配置。
扩展的伯克利包过滤器(eBPF, Extended Berkeley Packet Filter)是 Linux 内核中的一项创新技术,允许在内核空间运行沙盒程序,无需修改内核源码或加载内核模块。eBPF 最初用于网络包过滤,现已扩展到系统调用过滤、性能分析和安全等领域。
eBPF 的主要特点:
Hubble 是 Cilium 的网络可观测性组件,提供对 Kubernetes 集群网络流量的深度可视化和监控。
Hubble 支持多种监控和可视化工具:
Cilium 通过 eBPF 技术实现了高性能、身份驱动和应用层感知的网络安全能力。
Cilium 能理解和处理 L7 应用层协议,支持 HTTP、gRPC、Kafka 等:
Cilium 支持多种网络模型,适应不同基础设施和性能需求。
适用于底层网络受限、跨云或混合云场景。
适用于高性能、可控网络环境。
Cilium 采用分布式组件架构,便于扩展和集成。
{width=1619 height=1443}
每个节点运行 Cilium Agent,负责:
支持 REST、gRPC、CNI 等多种接口。
负责集群级操作:
Cilium 使用 Kubernetes 的 etcd 存储身份映射、网络策略、服务与节点信息等。
Cilium 提供丰富的命令行工具,便于日常运维和调试。
# 查看集群状态
cilium status
# 管理网络端点
cilium endpoint list
cilium endpoint get <endpoint-id>
# 网络策略管理
cilium policy get
cilium policy import <policy-file>
cilium policy delete <policy-name>
# 网络连通性测试
cilium connectivity test
# 监控网络流量
cilium monitor
cilium monitor --type=drop
# 服务和负载均衡
cilium service list
cilium bpf lb list
# 调试和故障排除
cilium debuginfo
cilium bpf tunnel list
以下为典型的 Cilium 网络策略配置:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "l7-rule"
spec:
endpointSelector:
matchLabels:
app: web-server
ingress:
- fromEndpoints:
- matchLabels:
app: api-gateway
toPorts:
- ports:
- port: "80"
protocol: TCP
rules:
http:
- method: "GET"
path: "/api/v1/.*"
- method: "POST"
path: "/api/v1/data"
headers:
- "Content-Type: application/json"
该策略允许带有 app: api-gateway 标签的 Pod 通过 HTTP GET 和 POST 方法访问 app: web-server 的特定路径。
为获得最佳性能和稳定性,建议关注以下方面。
cilium monitor 追踪包丢弃和策略命中Cilium 与 Kubernetes 及主流云原生工具深度集成。
Cilium 通过 eBPF 技术为 Kubernetes 提供了高性能、可观测和安全的网络解决方案,支持细粒度安全控制和深度网络可视性。建议结合实际场景选择合适的部署模式和策略,充分发挥 Cilium 在云原生网络治理中的优势。