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/
标签:service,Cluster,Mesh,集群,io,cilium From: https://www.cnblogs.com/wangguishe/p/18179275