摘要:负载均衡器仅适用于某些云服务提供商(例如 Amazon 或 Cloud),并且均衡器功能是特定于提供商的。 由于它作为基本控制器在内部运行,因此与外部负载均衡器不同,对功能的访问相对不受限制,并且某些负载均衡器可能无法在层级别访问。
很多企业在部署容器时选择Kubernetes作为容器编排系统。 这是对 Kubernetes 的可靠性、灵活性和能力的广泛肯定。 本文详细介绍了 Kubernetes 如何处理非常常见且必要的任务负载均衡。 在许多非容器环境(即服务器之间的平衡)中,负载平衡是一项相对简单的任务,但是当涉及容器时,则需要额外的特殊处理。
管理容器
要了解 Kubernetes 中的负载均衡,首先需要了解 Kubernetes 如何构建容器。
容器通常用于运行特定的服务或一组服务,因此它们不仅仅是服务的单个实例(即单个容器),而是取决于它们提供的服务。一看。 事实上,这就是 Kubernetes 所做的。
放在 Pod 中
在 Kubernetes 中,Pod 是基本的功能单元。 Pod 是一组容器及其共享卷。 容器通常在功能和服务方面密切相关。
服务是具有相同功能的 Pod 集合的抽象。 这些服务由基于 Kubernetes 构建的应用程序的客户端访问。 这些独立 Pod 中的服务可以管理对组成它们的容器的访问,从而使客户端与容器本身隔离。
管理 Pod
现在让我们看一些具体细节。 Pod 通常由 Kubernetes 创建和销毁,并非设计为持久实体。 每个 Pod 都有自己的 IP 地址(基于本地地址)、UID 和端口号。 新创建的 Pod(当前 Pod 或之前的 Pod)每个副本都会分配一个新的 UID 和 IP 地址。
每个 Pod 内的容器之间可以进行通信,但无法直接与不同 Pod 中的容器进行通信。 让 Kubernetes 处理事务
Kubernetes 使用自己的内置工具来管理与各个 Pod 的通信。 这意味着正常情况下,依靠 Kubernetes 对 pod 的内部监控就足够了,不需要担心创建、删除或克隆 pod。 但是,在某些情况下,您可能希望至少使 Kubernetes 管理应用程序的某些内部元素对底层网络可见。 如果发生这种情况,您的解决方案必须解决缺少持久 IP 地址的问题。
Pod 和节点
在很多方面,Kubernetes 可以被视为 Pod 管理系统以及容器管理系统。 大多数基础设施在 Pod 级别而不是容器级别处理容器。
从Kubernetes内部管理的角度来看,pod以上的组织层级就相当于节点。 节点是包含管理和通信资源的虚拟机,是部署 Pod 的环境。 节点本身也可以在内部创建、销毁和替换/重新部署。 它在节点和 Pod 级别的创建、销毁、重新部署、使用和扩展均由称为控制器的内部进程处理。
充当调度程序的服务
服务是 Kubernetes 在管理层处理容器和 Pod 的方式。 然而,如上所述,功能相关或相同的 pod 也被抽象为服务,当外部客户端或应用程序内的其他元素与 pod 交互时,Kubernetes 处于服务级别。
该服务有一个相对稳定的IP地址(由Kubernetes内部使用)。 当程序需要使用服务的功能时,它会向服务而不是单个 Pod 发出请求。 然后该服务充当调度程序,用于处理请求的 Pod。
调度和负载平衡
您可能会看到这个并想知道负载平衡是否是在调度级别完成的。 确实如此。 Kubernetes 服务就像一个巨大的设备池,根据需要将具有相同功能的机器发送到指定区域。 作为调度过程的一部分,必须仔细考虑可用性管理以避免资源瓶颈。
让kube-proxy执行负载均衡
Kubernetes中最基本的负载均衡其实就是负载均衡,在调度层面就可以轻松完成。实施的。 Kubernetes 使用两种负载均衡方法。 两者都是通过 kube-proxy 功能完成的,该功能负责管理服务使用的虚拟 IP。 Kube-proxy的默认模式是iptables,它支持相当复杂的基于规则的IP管理。 在iptables模式下,负载均衡的原生方法是随机选择。 这意味着传入请求会随机选择您服务中的一个 Pod。 之前版本中的 kube- 代理模式(以及原来的默认模式)是用户空间,使用循环负载均衡,分配 IP 列表中的下一个可用 pod,并替换列表(或 )。
真正的负载均衡:Ingress
前面我们讨论了两种负载均衡方法,但它们并不是真正的负载均衡。 许多领域用于实现真正负载平衡的最常见、最灵活的方法是 Ingress,它通过专用 Kubernetes Pod 内的控制器进行操作。 控制器由一组管理流量的规则和入口资源组成,入口资源是应用这些规则的守护进程。
该控制器具有独特的负载平衡功能,具有非常先进的功能。 入口资源还可以包括更复杂的负载平衡规则,以满足特定系统或提供商的负载平衡能力和要求。
使用负载均衡器作为替代方案
除了 Ingress 之外,您还可以使用负载均衡器类型的服务来替代它。 该服务使用外部基于云的负载平衡器。 负载均衡器仅适用于某些云服务提供商,例如 AWS、Azure、OpenStack、CloudStack 和 Google Compute Engine,并且均衡器功能是特定于提供商的。 服务提供商和第三方还提供其他负载平衡方法。
Ingress 仍然是普遍推荐的。
Ingress是目前推荐的负载均衡方法。 由于它在 Kubernetes 中作为基于 Pod 的控制器运行,因此对 Kubernetes 功能的访问相对不受限制(与外部负载均衡器不同,某些负载均衡器可能无法在 Pod 级别访问)。 入口资源包括可配置的规则,这些规则可实现高度详细和精细的负载平衡,可以根据应用程序的功能要求和操作条件进行自定义。
评论前必须登录!
注册