我正在尝试使用 kubeadm v1.13.1 在具有两个 IP 地址的机器上启动 kubernetes 集群。我希望 kube-apiserver 进程专门绑定到其中一个。我已经成功地通过将以下配置传递给 来完成此操作kubeadm init
,但 apiserver 清单的健康检查部分使用了另一个(默认路由)IP 地址。这导致 kubelet 因健康检查失败而拆除 kube-apiserver 容器。
kind: InitConfiguration
apiVersion: kubeadm.k8s.io/v1beta1
localApiEndpoint:
advertiseAddress: 192.168.10.10
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
apiServer:
certSANs:
- 192.168.10.10
extraArgs:
advertise-address: 192.168.10.10
bind-address: 192.168.10.10
controlPlaneEndpoint: 192.168.10.10:6443
似乎 localApiEndpoint 根本没有被使用,因为我可以在 advertiseAddress 字段中放入任何多余的内容而不会导致错误或警告。拼写错误的 localApiEndpoint 或 advertiseAddress 确实会导致警告,这意味着我没有拼写错误。
如何让 kubeadm 正确生成 apiserver 清单的健康检查部分?
答案1
我将 localAPIEndpoint 拼写错误为 localApiEndpoint。修正拼写后问题就解决了。
有趣的是:
- localApiEndpoint - 似乎被默默忽略了
- localAPIEndpoint-正常工作
- localAPIEndpoints - 引发警告