使用kops创建集群时创建LoadBalancer的原因是什么

What is the reason of creating LoadBalancer when create cluster using kops

我尝试使用 kops 在 aws 上创建 k8s 集群。

使用默认定义创建集群后,我看到已经创建了一个LoadBalance。

apiVersion: kops/v1alpha2
kind: Cluster
metadata:
  name: bungee.staging.k8s.local
spec:
  api:
    loadBalancer:
      type: Public
....

我只是想知道创建 LoadBalancer 和集群的原因。

欣赏!

在kops创建的集群类型中apiserver(上文简称api,Kubernetes master的一个组件,又名control plane)可能 没有静态 IP 地址。此外,kops 可以创建一个 HA(复制)控制平面,这意味着 有多个 IP,其中 api 服务器可用。

api服务器充当所有其他 Kubernetes 组件的中央连接枢纽,例如,所有节点都连接到它,操作人员也通过 kubectl 连接到它们。一方面,这些配置文件不支持 api 服务器的多个 IP 地址(为了使用 HA 设置)。加上每次 api 服务器 IP 地址更改时更新配置文件会很困难。

因此,负载平衡器作为 api 服务器的前端,具有单个静态 IP 地址(具有 AWS/GCP 的任播 IP)。此负载均衡器 IP 是在 Kubernetes 组件的配置文件中指定的,而不是实际的 api 服务器 IP。

实际上,也可以通过使用解析为 api 服务器 IP 的 DNS 名称以及保持此记录更新的机制来解决此程序。该解决方案无法像负载均衡器那样快速响应底层 IP 的变化,但它确实可以为您节省几美元,而且它不太可能失败并且减少对云提供商的依赖。可以这样配置:

spec:
  api:
    dns: {}

有关详细信息,请参阅 specification