Kubernetes 负载均衡器详解及使用(12)
本文是Kubernetes权威指南系列的一部分,你可以点击Kubernetes权威指南查看所有教程
Kubernetes 负载均衡器简介
负载平衡是我们可以将网络流量或客户端请求分配到多个服务器的方法。这是一个关键策略,应该在解决方案中正确设置;否则,即使所有服务器都工作正常,客户端也无法访问服务器;问题仅在负载均衡器端。有效使用时,负载平衡器有助于最大限度地提高可扩展性和高可用性。
在 Kubernetes 中,负载均衡有多种选择,但每种都有一个权衡。因此,请明智地选择并选择您的优先事项。实际上,负载均衡在很多环境中都是一个简单直接的概念,但是对于容器来说,它需要更精确的决策和特别的照顾。
什么是 Kubernetes 负载均衡器?
在Kubernetes中,在学习负载平衡等高级概念之前,您必须了解一些基本概念。这些基本概念包括: –
- Pods,是一组相互关联的容器功能。
- 服务,这是一组提供相同服务的相关 pod。
- Kubernetes 会自动创建和销毁 Pod。所以可用的 pod 的 IP 不是。
- 由于 Pod 没有稳定的 IP。所以,Services一定要稳定。
- 来自任何外部资源的请求都指向服务。
- 服务将向其发出的任何请求分派到可用的 Pod。
- 如果您只需要允许外部流量到运行某些应用程序的 Pod 上的特定端口,请使用 NodePort 而不是负载均衡器。
- 当您优化到许多服务器的流量但需要控制外部负载均衡器提供商(如 AWS、Azure 和 GCP)收取的成本时,您可以考虑 Ingress。但是为此,您必须准备好接受 Ingress 具有更复杂的配置,并且您将管理您的实现规则所在的 Ingress Controller。
在 Kubernetes 中,我们有两种不同类型的负载均衡。
- 内部负载平衡以平衡具有相同容器的流量。在 Kubernetes 中,最基本的负载均衡是用于可以在调度级别完成的负载分配。这可以通过 kube-proxy 来完成,它管理分配给服务的虚拟 IP。它的默认模式是 iptables,它适用于基于规则的随机选择。但这并不是真正的负载均衡器,如 Kubernetes Ingress,它在内部与自定义 Kubernetes pod 中的控制器一起工作。此外,还有一组规则,即运行这些规则的守护进程。
- 由于 Ingress 在 Kubernetes 内部,因此它可以访问 Kubernetes 功能。考虑到这一点,Ingress 资源中定义的可配置规则非常允许细节和粒度。这些可以根据应用程序的要求及其先决条件进行修改。
- 外部负载平衡,将外部流量分配到可用 Pod 之间的服务,因为外部负载均衡器不能直接连接到 Pod/容器。如果您的环境在云中,或者在支持外部负载平衡器的环境中,则可以在云中使用外部负载平衡器。AWS、Azure、GCP 等云提供外部负载。
如何使用 Kubernetes 负载均衡器?
要在您的主机环境中使用可用的负载均衡器,您需要更新服务配置文件以将字段类型设置为负载均衡器。您还应该为端口字段指定端口值。当您部署此配置文件时,您将获得一个 IP 地址,即。外部可访问,将流量发送到集群节点上的指定端口,这些节点实际上需要由外部源(如云)提供的外部负载均衡器访问。
当您使用 Kubectl 在命令行上创建服务时,有一种替代方法可以指定 type=LoadBalancer 标志。我们将在本节中看到一些示例。
您可以通过创建新配置文件或将规范添加到现有服务配置文件来向集群添加外部负载均衡器。让我们举一个例子,如下所示;在这里,您可以看到 type 和 Ports 在提到 type: LoadBalancer 时被定义。
现在举一个像下面这样的服务文件的例子,你在服务配置文件中指定它: –
现在在应用如下配置文件后:
kubectl apply -f service-file.yaml
您可以检查可用的负载均衡器和相关服务,如下所示;请注意,在此负载平衡器示例中,外部 IP 显示为待处理状态。
kubectl get services
负载均衡器创建完成后,外部 IP 将显示如下外部 IP,还要注意端口列显示传入端口/节点级别的端口格式。此处未显示规范文件中提到的容器端口。
kubectl get services
要通过负载均衡器配置文件获取有关负载均衡器的更多详细信息,我们使用 Kubectl,如下所示:
kubectl describe service sample-load-balancer
您将输出如下内容。在这里,您将获得所有详细信息,例如:
- 负载均衡器名称
- 选择器
- 入口 IP
- 内部IP
- 节点端口
- 容器的目标端口
- 服务端口
- Namespace
- 指定的任何标签
- Annotations
Kubernetes 负载均衡器的重要性
负载均衡器服务是向外部客户端公开您的服务的标准方式。在 GCP、AWS 等云平台上,我们可以使用外部负载均衡器服务。他们还可以提供平台来创建网络负载均衡器,该平台将为您提供一个 IP 地址,所有外部 IP 地址将通过该地址转发给您的服务。
但是不会有任何流量过滤,没有路由。这意味着任何类型的流量都可以通过负载均衡器。因此,这非常有用,因为负载均衡器不仅限于一个协议或一组协议。
结论
负载均衡器在流量既有外部也有内部的混合环境中发挥着重要作用,除了服务的外部流量外,还需要将流量从服务路由到同一网络块中的另一个。我们应该根据支持的云提供商选择外部负载均衡器作为您使用的外部资源,或者使用 Ingress 作为内部负载均衡器,以节省多个外部负载均衡器的成本。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!