kube系统:Pod Warning FailedScheduling默认调度程序没有节点可用于调度Pod



我为什么得到:

kube-system 1m 1h 245 kube-dns-fcd468cb-8fhg2.156899dbda62d287 Pod Warning FailedScheduling default-scheduler no nodes available to schedule pods

UPDATE-我现在已经将整个集群迁移到us-west-2而不是eu-west-1,这样我就可以开箱即用地运行代码,以防止引入任何错误。tfstate文件显示正在引用正确的EKS AMI。

例如

720: "image_id": "ami-00c3b2d35bddd4f5c",

FWIW,我跟随https://www.terraform.io/docs/providers/aws/guides/eks-getting-started.html并使用它在Github中链接到的代码,即。https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started

注意:在EC2实例中,我可以看到2个EKS节点使用正确的AMI ID运行。

===更新

检查节点:

kubectl get nodes
No resources found.

ssh进入其中一个节点并运行journalctl显示:

Nov 21 12:28:25 ip-10-0-0-247.us-west-2.compute.internal kubelet[4417]: E1121 12:28:25.419465    4417 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:461: Failed to list *v1.Node: Unauthorized
Nov 21 12:28:25 ip-10-0-0-247.us-west-2.compute.internal kubelet[4417]: E1121 12:28:25.735882    4417 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized
Nov 21 12:28:26 ip-10-0-0-247.us-west-2.compute.internal kubelet[4417]: E1121 12:28:26.237953    4417 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:47: Failed to list *v1.Pod: Unauthorized
Nov 21 12:28:26 ip-10-0-0-247.us-west-2.compute.internal kubelet[4417]: W1121 12:28:26.418327    4417 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
Nov 21 12:28:26 ip-10-0-0-247.us-west-2.compute.internal kubelet[4417]: E1121 12:28:26.418477    4417 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: n

鉴于Auth可能是一个问题,我检查了Terraform代码,它似乎是正确的。例如:

https://github.com/terraform-providers/terraform-provider-aws/blob/master/examples/eks-getting-started/outputs.tf#L9-L20

有什么办法我可以更详细地测试一下吗?或者有什么进一步的建议吗?

我猜您的集群中没有注册任何节点。仅仅因为EC2节点没有启动,并不意味着您的集群能够使用它们。您可以查看:

$ kubectl get nodes

另一种可能性是,您的节点是可用的,但它们没有足够的资源(这是不可能的(。

另一种可能性是你的节点被这样的东西污染了:

$ kubectl taint node node1 key=value:NoSchedule

你可以检查并删除它:

$ kubectl describe node node1
$ kubectl taint node node1 key:NoSchedule-

另一种可能性是,您的pod规范中有nodeSelector,并且没有用该节点选择器标记节点。检查方式:

$ kubectl get nodes --show-labels

最新更新