2

根据参考,其中两个选项kube-apiserver--bind-address--advertise-address在我看来,它们相互冲突。

两者之间的实际差异是什么?

进程将监听--bind-address的地址是什么?kube-apiserver

--advertise-address广告的地址是kube-apiserver它要监听的地址吗?如果是这样,它是如何做广告的?它是否通过网络进行某种广播?

4

1 回答 1

2

根据您引用的reference-kube-apiserver

--advertise-address ip 向集群成员通告 apiserver 的 IP 地址。集群的其余部分必须可以访问此地址。如果为空,将使用 --bind-address。如果 --bind-address 未指定,将使用主机的默认接口。

--bind-address ip 侦听 --secure-port 端口的 IP 地址。集群的其余部分和 CLI/Web 客户端必须可以访问关联的接口。如果为空,将使用所有接口(所有 IPv4 接口为 0.0.0.0,所有 IPv6 接口为 ::)。(默认 0.0.0.0)

这些参数是可配置的,但请记住它们应该在集群引导期间指定。

API 服务器端口和 IP 地址

  • 默认“安全端口”是6443,但可以使用 --secure-port标志更改。如文档中所述- 主节点应为其他集群组件公开安全端口以与 Kubernetes API 服务器进行通信。
  • 默认 IP 是第一个非本地主机网络接口,但可以使用--bind-address标志更改。

上述参数 (--secure-port--bind-address) 允许您为 Kubernetes API 配置具有安全端口的网络接口。如前所述,如果您不指定任何值:

默认情况下,默认 IP 是第一个非本地主机网络接口和 6443 端口。

请注意:
--advertise-address将用于kube-apiserver为负责准备端点的 Kubernetes 控制器kubernetes.default.svcService负责内部应用程序和 API 服务器之间的通信的核心)通告此地址。这个 Kubernetes 服务 VIP 由 kube-proxy 配置为每个节点的负载平衡。有关kubernetes 控制器
的更多信息,请参见此处kubernetes.default.svc

集群 <-> 主通信

从集群到 master 的所有通信路径都终止于 apiserver(其他 master 组件均未设计为公开远程服务)。在典型的部署中,apiserver 被配置为侦听安全 HTTPS 端口 (443) 上的远程连接。 kubernetes 服务配置了一个虚拟 IP 地址,该地址被重定向(通过 kube-proxy)到 apiserver 上的 HTTPS 端点。

从主服务器(apiserver)到集群有两条主要的通信路径。第一个是从 apiserver 到运行在集群中每个节点上的 kubelet 进程。第二种是通过 apiserver 的代理功能从 apiserver 到任何节点、pod 或服务。

此外,您可以通过阅读master-node-communicationcontrol-plane-node-communication了解有关集群内通信的更多信息。

于 2021-02-18T12:04:34.483 回答