用 Cilium 搭建 Kubernetes 网络与可观测性

适用场景

需要 eBPF 网络、替换 kube-proxy、细粒度网络策略、Hubble 流量观测或跨集群网络。Cilium 适合对性能、安全和可观测性有要求的 Kubernetes 集群。

前置条件

步骤

  1. 安装 Cilium CLI 并检查环境:
cilium install --dry-run
cilium status --wait
  1. 使用 Helm 安装,开启 kube-proxy 替换和 Hubble:
helm repo add cilium https://helm.cilium.io
helm install cilium cilium/cilium \
  --namespace kube-system \
  --set kubeProxyReplacement=true \
  --set k8sServiceHost=<API_SERVER_HOST> \
  --set k8sServicePort=<API_SERVER_PORT> \
  --set hubble.relay.enabled=true \
  --set hubble.ui.enabled=true
  1. 如果集群已有 kube-proxy,先不要直接替换;先用 Cilium 的 chaining 模式或在新集群验证。

  2. 验证连通性:

cilium connectivity test
cilium status
kubectl -n kube-system get pods -l k8s-app=cilium
  1. 配置网络策略。默认拒绝所有入站,再按标签放行:
kubectl apply -f - <<'EOF'
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: allow-frontend
  namespace: demo
spec:
  endpointSelector:
    matchLabels:
      app: backend
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend
    toPorts:
    - ports:
      - port: "8080"
        protocol: TCP
EOF
  1. 开启 Hubble 观测:
cilium hubble enable --ui
cilium hubble port-forward &
hubble observe --namespace demo --follow
  1. 需要跨集群通信时再部署 Cluster Mesh,先保证每个集群的 Pod CIDR 不重叠。

验证

回滚

常见坑

相关命令