Mạng liên Cluster đa đám mây với Cilium ClusterMesh, BGP Control Plane và eBPF
Mạng liên Cluster đa đám mây với Cilium ClusterMesh, BGP Control Plane và eBPF
Khi hạ tầng Kubernetes của doanh nghiệp mở rộng trên nhiều nền tảng đám mây (như AWS EKS, Google Cloud GKE, và Bare-Metal/On-Premises), các mô hình mạng truyền thống bắt đầu bộc lộ nhiều hạn chế về độ trễ, băng thông, khả năng định tuyến IP và tính năng bảo mật zero-trust. Các mạng overlay truyền thống (như VXLAN hoặc Geneve không có native routing) làm tăng chi phí đóng gói gói tin (encapsulation overhead), giới hạn MTU, tiêu tốn CPU và ẩn IP của Pod khỏi các thiết bị mạng vật lý bên ngoài.
Sự kết hợp giữa Cilium ClusterMesh, eBPF Native Routing và Cilium BGP Control Plane giải quyết triệt để các rào cản này. Kiến trúc này cho phép định tuyến pod-to-pod liên cluster hiệu năng cao, vượt qua ranh giới cloud mà không cần sidecar proxy hay các thiết bị NAT gateway phức tạp.
1. Tổng quan Kiến trúc Doanh nghiệp
Giải pháp dựa trên ba thành phần cốt lõi hoạt động trên các môi trường cloud riêng biệt:
- eBPF Datapath: Thay thế hoàn toàn
iptablesvà Linux bridge bằng các chương trình eBPF chạy trực tiếp tại tầng nhân Linux (gắn vào TC filters và XDP hooks). Cung cấp khả năng cân bằng tải cấp socket, định tuyến trực tiếp và mã hóa băng thông qua WireGuard/IPsec. - Cilium BGP Control Plane: Tự động quảng bá các dải Pod CIDR, Service LoadBalancer IP và ClusterIP tới các thiết bị Switch ToR hoặc Router ảo của nhà cung cấp cloud (AWS Transit Gateway, GCP Cloud Router) thông qua giao thức eBGP chuẩn (tích hợp GoBGP trong Cilium Agent).
- Cilium ClusterMesh: Đồng bộ hóa trạng thái Endpoint và Identity metadata giữa các Kubernetes cluster độc lập bằng etcd KVStore mesh. Thiết lập cơ chế phát hiện dịch vụ toàn cục (Global Service Discovery), tự động chuyển vùng sự cố (failover) và áp dụng chính sách bảo mật đồng nhất.
+---------------------------------------+ +---------------------------------------+
| AWS EKS Cluster | | GCP GKE Cluster |
| Pod CIDR: 10.240.0.0/16 (Cluster ID:1) | | Pod CIDR: 10.241.0.0/16 (Cluster ID:2)|
| +---------------------------------+ | | +---------------------------------+ |
| | Cilium Agent + eBPF | | | | Cilium Agent + eBPF | |
| +---------------------------------+ | | +---------------------------------+ |
| | BGP Session (eBGP) | | | BGP Session (eBGP) |
+---------|-----------------------------+ +---------|-----------------------------+
| |
v v
+------------------+ AWS DirectConnect / Cloud Interconnect +------------------+
| AWS Transit Gateway| <==========================================> | GCP Cloud Router |
+------------------+ +------------------+2. Chiến lược Quản lý Địa chỉ IP (IPAM)
Định tuyến Native liên cluster qua BGP yêu cầu quy hoạch địa chỉ IP không trùng lặp (Non-overlapping IPAM). Dải IP của Pod và Node giữa các cụm cloud phải được phân bổ duy nhất.
| Tên Cluster | Cluster ID | Node CIDR | Pod CIDR | Service CIDR |
|---|---|---|---|---|
| AWS EKS (us-east-1) | 1 | 10.100.0.0/16 | 10.240.0.0/16 | 172.20.0.0/16 |
| GCP GKE (us-central1) | 2 | 10.101.0.0/16 | 10.241.0.0/16 | 172.21.0.0/16 |
3. Cấu hình Cilium với Native Routing và BGP
Triển khai Cilium bằng Helm, bật chế độ Native Routing (tắt encapsulation VXLAN), cấu hình Cluster ID duy nhất và kích hoạt BGP Control Plane.
# cilium-aws-values.yaml
cluster:
name: eks-us-east-1
id: 1
routingMode: native
ipv4NativeRoutingCIDR: 10.0.0.0/8
autoDirectNodeRoutes: true
ebpf:
masquerade: true
bgpControlPlane:
enabled: true
clustermesh:
useAPIServer: true
apiserver:
service:
type: LoadBalancer
ipam:
mode: kubernetes
tunnelMode: "disabled"
endpointRoutes:
enabled: trueSau khi cài đặt Cilium, áp dụng Custom Resource Definition (CRD) CiliumBGPPeeringPolicy để thiết lập eBGP peering với router ảo của hạ tầng cloud.
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPPeeringPolicy
metadata:
name: bgp-peering-aws
spec:
nodeSelector:
matchLabels:
cilium.io/bgp-virtual-router: "true"
virtualRouters:
- localASN: 65001
exportPodCIDR: true
neighbors:
- peerAddress: "10.100.0.1/32"
peerASN: 65000
eBGPMultihop: 1
connectRetryTimeSeconds: 10
holdTimeSeconds: 30
keepAliveTimeSeconds: 10
serviceSelector:
matchLabels:
type: global-lb4. Thiết lập Cilium ClusterMesh liên Cloud
Khi định tuyến IP giữa AWS và GCP đã thông suốt qua BGP, tiến hành kết nối ClusterMesh giữa hai cụm bằng Cilium CLI.
# Bật ClusterMesh trên AWS EKS
cilium clustermesh enable --context context-aws-eks --service-type LoadBalancer
# Bật ClusterMesh trên GCP GKE
cilium clustermesh enable --context context-gcp-gke --service-type LoadBalancer
# Kết nối AWS EKS tới GCP GKE ClusterMesh
cilium clustermesh connect --context context-aws-eks --destination-context context-gcp-gke
# Kiểm tra trạng thái kết nối ClusterMesh
cilium clustermesh status --context context-aws-eks5. Định tuyến Dịch vụ Toàn cục & Chính sách Bảo mật
Định nghĩa Kubernetes Service với annotation service.cilium.io/global: "true" để bật tính năng cân bằng tải liên cluster. EndpointSlices sẽ tự động được đồng bộ qua ClusterMesh.
apiVersion: v1
kind: Service
metadata:
name: payment-gateway
namespace: production
annotations:
service.cilium.io/global: "true"
service.cilium.io/shared: "true"
service.cilium.io/global-affinity: "local"
spec:
type: ClusterIP
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
app: payment-gatewayCilium Network Policy cho phép áp đặt chính sách bảo mật Zero-Trust giữa các Pod thuộc các Cloud khác nhau thông qua nhãn Identity thay vì dựa vào địa chỉ IP tĩnh:
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: allow-cross-cluster-checkout
namespace: production
spec:
endpointSelector:
matchLabels:
app: payment-gateway
ingress:
- fromEndpoints:
- matchLabels:
app: checkout-service
io.cilium.k8s.policy.cluster: gke-us-central1
toPorts:
- ports:
- port: "8080"
protocol: TCP6. Chẩn đoán và Kiểm tra Trạng thái eBPF/BGP
Sử dụng các công cụ chẩn đoán tích hợp sẵn trong Cilium agent để kiểm tra các bảng eBPF map và phiên BGP:
# Kiểm tra trạng thái kết nối BGP Peer
kubectl -n kube-system exec -it ds/cilium -- cilium-dbg bgp peers
# Kiểm tra bảng cilium_ipcache chứa thông tin ánh xạ Pod IP toàn cục
kubectl -n kube-system exec -it ds/cilium -- cilium-dbg map get cilium_ipcache
# Theo dõi luồng gói tin thực tế bằng eBPF Monitor
kubectl -n kube-system exec -it ds/cilium -- monitor --type drop,bpf7. Kết luận
Kiến trúc mạng liên cluster đa đám mây kết hợp giữa Cilium ClusterMesh, BGP Control Plane và eBPF giúp loại bỏ các điểm nghẽn hiệu năng của mô hình VPN Overlay truyền thống. Bằng cách thực thi định tuyến trực tiếp trong Linux Kernel qua eBPF và quảng bá dải IP qua BGP chuẩn, doanh nghiệp đạt được tốc độ xử lý gói tin tối ưu, khả năng bảo mật Zero-Trust linh hoạt và độ tin cậy cao cho các ứng dụng phân tán đa vùng.
