我正在 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
可用于设置所有控制平面节点的共享端点。