我正在使用 kube-adm 工具初始化集群但失败了。原因是当 kube-api 服务器启动时,它会查找配置,并且在配置中我们将“--advertise-address”标志设置为 DNS 条目而不是实际 IP。
当我们将其更改为 IP 地址时,集群就会启动,但用例是我们需要在那里有 DNS 条目。有什么办法吗?
ubuntu@ac1poc-20210407164708-dbvault-master1:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6dadb094ef45 4d217480042e "kube-apiserver --ad…" 8 seconds ago Exited (1) 7 seconds ago k8s_kube-apiserver_kube-apiserver-ac1poc-20210407164708-dbvault-master1_kube-system_d178ca26dd6ecb571ee1d795bf05d13c_0
9800cd1306ca k8s.gcr.io/pause:3.4.1 "/pause" 8 seconds ago Up 7 seconds k8s_POD_kube-apiserver-ac1poc-20210407164708-dbvault-master1_kube-system_d178ca26dd6ecb571ee1d795bf05d13c_0
447ca3b7c4e5 0369cf4303ff "etcd --advertise-cl…" 18 seconds ago Up 17 seconds k8s_etcd_etcd-ac1poc-20210407164708-dbvault-master1_kube-system_aeecb86186a97a57d7b33389c398d994_0
f10dee583a73 k8s.gcr.io/pause:3.4.1 "/pause" 18 seconds ago Up 17 seconds k8s_POD_etcd-ac1poc-20210407164708-dbvault-master1_kube-system_aeecb86186a97a57d7b33389c398d994_0
ff24fb98ffc4 62ad3129eca8 "kube-scheduler --au…" 28 seconds ago Up 27 seconds k8s_kube-scheduler_kube-scheduler-ac1poc-20210407164708-dbvault-master1_kube-system_043da16f3c9ebc5b6dc6a04761c2f844_0
3fb783c0d8c7 k8s.gcr.io/pause:3.4.1 "/pause" 28 seconds ago Up 27 seconds k8s_POD_kube-scheduler-ac1poc-20210407164708-dbvault-master1_kube-system_043da16f3c9ebc5b6dc6a04761c2f844_0
ubuntu@ac1poc-20210407164708-dbvault-master1:~$ sudo docker logs 6dadb094ef45
Error: invalid argument "ac1poc-20210407164708-kube-api-f5082ea18c7584ad.elb.us-east-1.amazonaws.com" for "--advertise-address" flag: failed to parse IP: "ac1poc-20210407164708-kube-api-f5082ea18c7584ad.elb.us-east-1.amazonaws.com"
答案1
无法在 中使用 DNS 地址--apiserver-advertise-address
。
官方文件指出:
API 服务器将公布其正在监听的 IP 地址。如果未设置,则将使用默认网络接口。
有一次,似乎会添加这样的功能[api 服务器 #33] [Kubernetes #59288],但最终报废, 和公关 #56956合并以确保只有IPv4和IPv6可以使用。
解决方法是使用ControlPlaneEndpoint
,但如果 IP 发生变化,API 服务器将不会启动,因此这不是最佳解决方案。