使用 Kubernetes 和 Istio 进行多集群管理

你是否有多个 Kubernetes 集群和服务网格?Kubernetes 集群中的虚拟机和服务是否需要交互?本文将带你了解使用 Kubernetes 和 Istio Service Mesh 构建混合云的过程和注意事项。Kubernetes 和 Istio 一起可用于将混合工作负载整合到网格中,并实现多集群的互操作性。但另一层基础结构(管理平面)有助于管理多集群或多网格部署。

Kubernetes

使用 Kubernetes 可以快速部署分布式环境,从而实现云互操作性并统一云上的控制平面。它还提供资源对象(如服务、入口和网关)来处理应用程序流量。Kubernetes API 服务器与集群中每个节点上的 kube-proxy 组件通信,为节点创建 iptables 规则,并将请求转发给其他 pod。

假设客户端现在想要访问 Kubernetes 中的服务,则首先将请求发送到入口/网关,然后根据入口/网关中的路由配置转发到后端服务(下图中的服务 A)。然后,服务 A 轮询服务 B 的实例以获取服务 B 请求的流量。最后,服务 A 为服务 B 请求的流量将转发到服务 B 的实例。

使用 Kubernetes 和 Istio 进行多集群管理

Kubernetes Multicluster

多群集管理的最常见使用方案包括:

  • 服务流量负载均衡
  • 隔离开发和生产环境
  • 解耦数据处理和数据存储
  • 跨云备份和灾难恢复
  • 灵活分配计算资源
  • 跨区域对服务的低延迟访问
  • 避免供应商锁定

企业内通常有多个 Kubernetes 集群;而 KubeFed 实现的 Kubernetes 集群联盟 由多集群 SIG 开发,实现了多集群管理能力,允许通过同一接口管理所有 Kubernetes 集群。

使用群集联合身份验证时,需要解决几个常规问题:

  • 配置需要联合的集群
  • API 资源需要在集群之间传播
  • 配置 API 资源如何分发到不同的集群
  • 在群集中注册 DNS 记录以启用跨群集的服务发现

以下是 KubeSphere 的多集群架构(最常用的 Kubernetes 多集群管理架构之一),其中主机集群充当控制平面,其中包含两个成员集群,即西部和东部。

使用 Kubernetes 和 Istio 进行多集群管理

主机集群需要能够访问成员集群的 API 服务器,但成员集群之间的网络连接不是必需的。主机集群独立于它管理的成员集群,并且成员集群不知道主机集群的存在。这样做的好处是,当控制平面发生故障时,成员集群不会受到影响,并且部署的负载仍然可以正常运行而不会受到影响。

主机集群还承担 API 门户的角色,主机集群将资源请求转发到成员集群,方便聚合,也便于统一授权认证。我们看到主机群集中有一个联合控制平面,其中推送协调器将标识、角色和角色绑定从联合群集传播到所有成员群集。

当我们在 Kubernetes 中运行多语言、多版本微服务,并且需要更细粒度的金丝雀发布和统一的安全策略管理以实现服务间的可观测性时,请考虑使用 Istio 服务网格。Istio 通过使用 IPTables 透明地拦截进出应用程序的所有流量,并绕过主要的 kube 代理负载均衡,实现了从应用层到集群中其他支持 Service Mesh 服务的智能应用感知负载均衡。Istio 控制平面与 Kubernetes API 服务器通信,以获取集群中所有已注册服务的信息。

下图说明了 Istio 的基础知识,其中所有节点都属于同一个 Kubernetes 集群。

使用 Kubernetes 和 Istio 进行多集群管理

你最终可能会得到至少几个 Kubernetes 集群,每个集群都托管微服务。Istio 的多集群部署存在多种部署模型——取决于网络隔离、主集群和备份网络隔离——在使用 Istio Operator 进行部署时,可以通过声明来指定。群集中这些微服务之间的通信可以通过服务网格增强。在集群中,Istio 提供了通用的通信模式,以提高弹性、安全性和可观察性。

以上都是关于 Kubernetes 上的应用程序负载管理,但对于虚拟机上的遗留应用程序:如何在同一平面上管理它们?Istio 支持虚拟机上的应用程序,那么为什么我们需要管理平面呢?

管理平面

要管理网关、流量和安全分组,并将它们应用于不同的集群和命名空间,你需要在 Istio 之上添加另一层抽象:管理平面。下图显示了四特服务网桥 (TSB) 的多租户模型。TSB使用下一代访问控制(NGAC)——一个细粒度的授权框架——来管理用户访问,并促进零信任网络的构建。

使用 Kubernetes 和 Istio 进行多集群管理

Istio 提供工作负载识别,由强大的 mTLS 加密保护。这种零信任模型优于基于拓扑信息(如源 IP)信任工作负载。多集群管理的通用控制平面构建在 Istio 之上。然后添加管理平面来管理多个集群,提供多租户、管理配置、可观测性等。

下图显示了四联服务桥的架构。

使用 Kubernetes 和 Istio 进行多集群管理

总结

异构集群的互操作性是通过 Kubernetes 实现的。Istio 将容器化和虚拟机负载整合到单个控制平面中,以统一集群内的流量、安全性和可观测性。但是,随着集群数量、网络环境和用户权限变得越来越复杂,需要在 Istio 的控制平面之上构建另一个管理平面(例如 Tetrate 服务桥)进行混合云管理。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/302647.html

(0)
上一篇 2023年9月12日 18:56
下一篇 2023年9月12日 19:24

相关推荐

发表回复

登录后才能评论