k8s多集群管理还是有很多场景,譬如容灾高可用。但k8s多个集群之间是相互独立,两个集群的pod 之间是无法直接通信的。如果要实现 k8s中多集群之间的Pod互通,主要有两种思路。
第一种思路是使用统一网络转发组件,譬如下面的两个k8s 共用一套flannel ,对于flannel 来说是不感知两个集群的存在。
两个集群里面的每台机器都有全部的路由信息,从而建立一个大的vxlan 网络。
第二种思路是 共享 网络配置,一个集群的网络插件可以访问另一个集群的网络配置。比如下面的Cilium的思路
每个Kubernetes集群都维护自己的etcd集群,然后每个集群通过一组etcd代理公开其自己的etcd。在其他集群中运行的Cilium agent连接到etcd代理以监视更改,并将多集群相关状态复制到自己的集群中。使用etcd代理可确保etcd观察程序的可伸缩性。访问受TLS证书保护。
其实还有第三种思路,就是网络配置信息的相互同步,但不建议这样做,双写会导致数据的混乱,方案二中一个集群的etcd 对另外一个集群是只读,从而保障两个集群的隔离和安全性。
页面更新:2024-03-28
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号