cilium Cluster Mesh

Introduction

Cluster Mesh 主要处理集群间的通信、网络策略以及路由等问题。它能够处理跨多个 Kubernetes 集群的 Pod IP 路由,通过隧道或直接路由实现无需网关或代理的跨集群通信,从而提高微服务架构的效率。
Cilium Cluster Mesh 可以连接多个集群的网络,只要所有集群都运行 Cilium 作为其 CNI,每个集群中的 pod 都可以发现和访问网格中所有其他集群中的服务。这允许有效地将多个集群连接到一个大型统一网络中,无论每个集群运行的 Kubernetes 分布或位置如何。

高可用性和容错性

Cluster Mesh 增强了服务的高可用性和容错能力。支持Kubernetes集群在多个地域或者可用区的运行。如果资源暂时不可用、一个集群中配置错误或离线升级,它可以将故障转移到其他集群,确保服务始终可访问。

透明服务发现

Cluster Mesh 可自动发现 Kubernetes 集群中的服务。使用标准 Kubernetes 服务,它会自动将跨集群具有相同名称和命名空间的服务合并为全局服务。这意味着应用程序可以发现服务并与服务交互,无论它们驻留在哪个集群中,从而大大简化了跨集群通信。

跨集群共享服务

Cluster Mesh 支持在所有集群之间共享服务,例如秘密管理、日志记录、监控或 DNS。这降低了运维成本,简化了管理,并在租户集群之间保持隔离。

统一的网络策略

Cluster Mesh将Cilium的第3层到第7层网络策略执行扩展到网格中的所有集群。它标准化了网络策略的应用,确保在您的整个Kubernetes部署中始终采用一致的安全策略,无论涉及的集群数量如何。

Local Service 亲和性

在某些情况下,跨多个集群的负载平衡可能并不理想。可以使用注释service.cilium.io/affinity: "local|remote|none"来指定首选的终端目标。例如,如果注释service.cilium.io/affinity的值为local,全局服务将在健康的本地后端之间进行负载均衡,并且仅当所有本地后端不可用或不健康时才使用远程端点。

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 亲和性

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/

posted @ 2024-05-30 09:04  小吉猫  阅读(11)  评论(0编辑  收藏  举报