所有kubectl命令(例如kubectl获取pod和kubectl代理等)均失败,并显示错误消息,表明它无法连接到kubernetes api服务器(api.services.ourdomainname.com)。
是什么引起的:
我们试图在集群中增加一个节点以增加容量。为此,我们运行了以下命令...
$ kops edit ig --name=ppe.services.ourdomainname.com nodes
$ kops upgrade cluster --name ppe.services.ourdomainname.com --yes
$ kops update cluster ppe.services.ourdomainname.com --yes
$ kops rolling-update cluster --yes
我尝试进行滚动更新后发生了问题。本质上,滚动更新在更新主节点时失败。
WARNING: Deleting pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet: etcd-server-events-ip-xx-xx-60-141.us-west-2.compute.internal, etcd-server-ip-xx-xx-60-141.us-west-2.compute.internal, kube-apiserver-ip-xx-xx-60-141.us-west-2.compute.internal, kube-controller-manager-ip-xx-xx-60-141.us-west-2.compute.internal, kube-proxy-ip-xx-xx-60-141.us-west-2.compute.internal, kube-scheduler-ip-xx-xx-60-141.us-west-2.compute.internal
pod "dns-controller-xxxx03014-fq2sj" evicted
pod "masked-tapir-aws-cluster-autoscaler-xxxx6cf8f-fpcqq" evicted
pod "kubernetes-dashboard-3313488171-t578p" evicted
node "ip-xx-xx-60-141.us-west-2.compute.internal" drained
I0501 17:30:23.679575 31176 instancegroups.go:237] Stopping instance "i-024deccc522cc2bf7", node "ip-xxx-xx-60-141.us-west-2.compute.internal", in group "master-us-west-2a.masters.ppe.services.ourdomainname.com".
I0501 17:35:24.345270 31176 instancegroups.go:161] Validating the cluster.
I0501 17:35:54.345805 31176 instancegroups.go:209] Cluster did not validate, will try again in "30s" util duration "5m0s" expires: cannot get nodes for "ppe.services.ourdomainname.com": Get https://api.ppe.services.ourdomainname.com/api/v1/nodes: dial tcp xx.xx.147.151:443: i/o timeout. ...
error validating cluster after removing a node: cluster did not validate within a duation of "5m0s"
此后,kubectl停止工作。经过一些挖掘,然后
kops rolling-update cluster --yes --cloudonly
。这删除了旧的Ec2节点,并添加了新的EC2节点。但是并没有解决问题。并使情况变得更糟。以前我们的应用程序可以访问我们的服务器,但是运行此命令后,现在即使我们的应用程序也无法访问服务器。从本质上讲,它破坏了nginx入口点,现在AWS ELB开始返回500,表明无法连接。因此,我们的实时服务中断了! :-(
关于如何解决kubernetes集群的任何想法?有什么方法可以找出为什么无法访问k8s api服务器?我们该怎么做才能恢复连接?
非常感谢您的帮助。
最佳答案
分享关于什么是问题以及我们为解决这些问题所做的工作的学习...
看起来像在三月,dockerproject存储库被关闭了,由于kubernetes试图从那里下载某些依赖项,导致启动api服务器失败。也没有ssh键可以将ssh放入这些框,这使其变得更加复杂。另外,master正在使用t2.medium,这会导致问题,因为它的CPU信用用尽了。
我们做了什么:
关于amazon-web-services - Kubectl无法访问kubernetes api。 k8s部署无法到达,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61555327/