当我使用 --apiserver-advertise-address 时 kubeadm init 失败

当我使用 --apiserver-advertise-address 时 kubeadm init 失败

我正在 RHEL 7.7 操作系统上安装一个独立的 Kubernetes 集群(kubeadm 版本为 1.14)。我为 Kubernetes 主节点配置了一个负载均衡器(具有私有 IP 地址的私有 LB)。当我发出命令时

kubeadm init --apiserver-advertise-address=<IP Address of the LB>

我收到以下错误:

无法向 API 服务器注册节点“主节点名称”。写入 tcp“主节点的 IP 地址”:<52444>--“LB 的 IP 地址”:6443。对等方重置连接。

如果我只发出kubeadm init,该命令将成功启动集群。

此外,如果我使用 LB 的 DNS 并尝试创建多平面集群(使用 controlPlaneEndpoint 作为 LB 的 DNS),这也可以正常工作。知道为什么会失败吗--apiserver-advertise-address

另外,如果我使用创建多平面集群(controlPlaneEndpoint)的方法,但使用作为独立集群构建的集群,会怎么样?(即不添加任何其他主节点)。这会引起任何问题吗?

答案1

如果我正确理解了你的用例,这可能是不可能的。

apiserver-advertise-address用于设置api-server将要绑定的节点接口。因此,您无法绑定到 LB 接口,因为它不是实际接口。官方来源

(可选)除非另有说明,否则kubeadm使用与默认网关关联的网络接口来设置此特定控制平面节点的 API 服务器的广告地址。要使用其他网络接口,请指定 的参数 --apiserver-advertise-address=<ip-address>kubeadm init要使用 IPv6 寻址部署 IPv6 Kubernetes 集群,您必须指定 IPv6 地址,例如 --apiserver-advertise-address=fd00::101

--apiserver-advertise-address用于设置此特定控制平面节点的 API 服务器的广告地址--control-plane-endpoint可用于设置所有控制平面节点的共享端点。

相关内容