kubernetes - kube-system:Pod 警告 FailedScheduling default-scheduler 没有可用于调度 Pod 的节点
问题描述
为什么我得到:
kube-system 1m 1h 245 kube-dns-fcd468cb-8fhg2.156899dbda62d287 Pod Warning FailedScheduling default-scheduler no nodes available to schedule pods
更新 - 我现在已经将整个集群迁移到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 个使用正确 AMI ID 运行的 EKS 节点。
==== 更新
检查节点:
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
鉴于身份验证可能是一个问题,我检查了似乎正确的 Terraform 代码。例如:
有什么办法可以更详细地测试一下吗?或者有什么进一步的建议?
解决方案
我猜你的集群上没有注册任何节点。仅仅因为 EC2 节点未启动,并不意味着您的集群能够使用它们。您可以通过以下方式检查:
$ kubectl get nodes
另一种可能性是您的节点可用,但它们没有足够的资源(这不太可能)。
另一种可能性是您的节点被这样的东西污染:
$ kubectl taint node node1 key=value:NoSchedule
您可以检查并删除它:
$ kubectl describe node node1
$ kubectl taint node node1 key:NoSchedule-
另一种可能性是nodeSelector
您的 pod 规范中没有使用该节点选择器标记的节点。检查:
$ kubectl get nodes --show-labels
推荐阅读
- unity3d - 如何在 Unity 中处理很长的句子?
- hibernate - WildFly/Hibernate:更新嵌入属性失败
- python - 在“plotnine”图例中合并颜色和形状
- elasticsearch - Elasticsearch NEST 查询的行为与 Kibana 开发工具中的等效查询不同
- html - 简单网页设计中的外部 CSS 有时工作,有时不在我的笔记本电脑中,有什么原因吗?
- wordpress - 如何为非管理员用户禁用 WordPress 博客中的评论?
- firebase - 旅行计划者的 Firestore 数据建模
- c# - 为什么只在更改控件的可见属性时才抛出跨线程异常?
- php - 如何从 HTML 字符串中获取特殊字符列表
- python - 操作具有很长字符串的列表时出现运行时错误 (Python3)