我正在尝试在AWS内配置HA kubernetes集群,而且在控制平面上使用ELB一直没有运气(现在使用TLS侦听器的NLB,但尝试使用ALB和HTTPS作为好)。无论我做什么,它总是在等待控制平面步骤中失败。如果我提高了输出的详细信息,则可以看到它在此步骤中每秒使我的负载均衡器端点发生卷曲,并且在4分钟后它失败了。没有任何迹象表明来自负载均衡器的响应是什么,这是我看到的输出示例:
curl -k -v -XGET -H "Accept: application/json, */*" -H "User-Agent: kubeadm/v1.17.3 (linux/amd64) kubernetes/06ad960" 'https://<load-balancer-dns>:443/healthz?timeout=10s'
I0408 13:51:07.899477 27075 round_trippers.go:443] GET https://<load-balancer-dns>:443/healthz?timeout=10s in 4 milliseconds
I0408 13:51:07.899497 27075 round_trippers.go:449] Response Headers:
(响应头之后没有任何内容。)
奇怪的是,当init运行时,我可以在浏览器中拉出/ healthz端点,这只会导致页面显示“ ok”。我还可以从另一个终端窗口中卷曲它,然后获得HTTP 200,一切看起来都很好。
更多详细信息-初始化失败后,没有崩溃的Docker容器。 Kubeadm建议检查kubelet服务状态和日志,我看到的是这样的行:
E0408 14:50:36.738997 11649 reflector.go:153] k8s.io/client-go/informers/factory.go:135: Failed to list *v1beta1.CSIDriver: Get https://<load-balancer-dns>:443/apis/storage.k8s.io/v1beta1/csidrivers?limit=500&resourceVersion=0: x509: certificate signed by unknown authority
卷曲该地址不会给我任何证书错误,尽管它确实会给我403。应该正确地信任证书,因为(我认为)它的链是正确导入的。所以我不确定为什么kubelet在抱怨它。
问题似乎与我使用的--control-plane-endpoint标志有关。 如果我只是将其默认设置为单个实例的IP ,则kubeadm init
将成功完成,集群已初始化,我可以将工作人员加入其中,等等。 >
FWIW,我的初始化命令如下:
kubeadm init --control-plane-endpoint "<load-balancer-dns>:<port>" --ignore-preflight-errors=ImagePull --apiserver-bind-port=30400 --v=10
我可以检查哪些内容以找出问题所在?