cilium Cluster Mesh

小吉猫發表於2024-05-30

Introduction

Cluster Mesh 主要處理叢集間的通訊、網路策略以及路由等問題。它能夠處理跨多個 Kubernetes 叢集的 Pod IP 路由,透過隧道或直接路由實現無需閘道器或代理的跨叢集通訊,從而提高微服務架構的效率。
Cilium Cluster Mesh 可以連線多個叢集的網路,只要所有叢集都執行 Cilium 作為其 CNI,每個叢集中的 pod 都可以發現和訪問網格中所有其他叢集中的服務。這允許有效地將多個叢集連線到一個大型統一網路中,無論每個叢集執行的 Kubernetes 分佈或位置如何。

cilium Cluster Mesh

高可用性和容錯性

Cluster Mesh 增強了服務的高可用性和容錯能力。支援Kubernetes叢集在多個地域或者可用區的執行。如果資源暫時不可用、一個叢集中配置錯誤或離線升級,它可以將故障轉移到其他叢集,確保服務始終可訪問。

cilium Cluster Mesh

透明服務發現

Cluster Mesh 可自動發現 Kubernetes 叢集中的服務。使用標準 Kubernetes 服務,它會自動將跨叢集具有相同名稱和名稱空間的服務合併為全域性服務。這意味著應用程式可以發現服務並與服務互動,無論它們駐留在哪個叢集中,從而大大簡化了跨叢集通訊。

cilium Cluster Mesh

跨叢集共享服務

Cluster Mesh 支援在所有叢集之間共享服務,例如秘密管理、日誌記錄、監控或 DNS。這降低了運維成本,簡化了管理,並在租戶叢集之間保持隔離。

cilium Cluster Mesh

統一的網路策略

Cluster Mesh將Cilium的第3層到第7層網路策略執行擴充套件到網格中的所有叢集。它標準化了網路策略的應用,確保在您的整個Kubernetes部署中始終採用一致的安全策略,無論涉及的叢集數量如何。

cilium Cluster Mesh

Local Service 親和性

在某些情況下,跨多個叢集的負載平衡可能並不理想。可以使用註釋service.cilium.io/affinity: "local|remote|none"來指定首選的終端目標。例如,如果註釋service.cilium.io/affinity的值為local,全域性服務將在健康的本地後端之間進行負載均衡,並且僅當所有本地後端不可用或不健康時才使用遠端端點。

cilium Cluster Mesh

apiversion: v1
kind: Service
metadata:
  name: backend-service
  annotations: 
    io.cilium/global-service: "true"
    io.cilium/service-affinity: local
  spec:
    type: ClusterIP 
    ports:
    - port: 80
    selector:
      name: backend

Remote Service 親和性

cilium Cluster Mesh

apiversion: v1
kind: Service
metadata:
  name: backend-service
  annotations:
    io.cilium/global-service: "true"
    io.cilium/service-affinity: remote
  spec:
    type: ClusterIP 
    ports:
    - port: 80
    selector:
      name: backend

參考文件

https://docs.cilium.io/en/stable/network/clustermesh/

相關文章