kubernetes 为什么我不能部署pod,为什么它显示NOMINATED NODE NONE?

5vf7fwbs  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(2)|浏览(204)

我在部署一些应用程序。我有的是时间

kubectl get pods -o wide

NAME                                            READY   STATUS             RESTARTS          AGE   IP             NODE           NOMINATED NODE   READINESS GATES
pic-applet-example-anc-pic-66c9cc4df4-xvqkf   0/1     OOMKilled          543 (5m19s ago)   46h   45.234.76.51   mynode23   <none>           <none>
anc-pic-1-6f6f4f8766-4nwms                    0/1     ImagePullBackOff   0                 43h   45.234.76.57   mynode23   <none>           <none>

字符串
当我查看事件时,

DNSConfigForming  100s (x12084 over 43h)  kubelet  Search Line limits were exceeded, some search paths have been omitted, the applied search line is: default.svc.cluster.local svc.cluster.local cluster.local xmp.net.intra net.intra eu.net.intra


如何查看是什么阻止了pod的创建?

gblwokeq

gblwokeq1#

DNSConfigForming 100 s(x12084 over 43 h)kubelet搜索行超出限制,部分搜索路径被省略,应用的搜索行为:default.svc.cluster.local svc. cluster.local cluster.local xmp.net.intra net.intra eu.net.intra

当满足以下条件时会出现上述错误:NGINX Controller主机系统上的/etc/resolv.conf文件中包含三个以上用户定义的搜索域。您可能会在以下位置遇到此消息:/var/log/messages文件

Kubernetes最多可以有六个搜索域。在/etc/resolv.conf文件中最多只能定义三个搜索域,因为CoreDNS在运行时而不是在文件中创建三个搜索域。

解决问题

您可以验证NGINX Controller主机系统的/etc/resolv.conf文件的搜索域不超过三个,以解决此问题。如果超过三个,则减少在节点的/etc/resolv.conf文件中建立的自定义搜索域的数量将解决此问题。
要使修改在编辑resolv.conf文件后在新Pod中生效,您可能需要重新启动Kubelet和coredns部署:

每个节点上:

systemctl restart kubelet

字符串
在运行kubectl的机器上:

kubectl -n kube-system rollout restart deployment coredns

您可以参考此Lumigo doc来解决图像拉回和OOM killed错误。如需进一步参考,您也可以参考此官方文档和Steven西尔维斯特撰写的blog

dsf9zpds

dsf9zpds2#

对于第一个pod,您没有足够的内存分配给pod中的容器,增加其内存资源请求和限制。
对于第二个pod,k8s无法拉取pod模板的容器规范中提到的docker镜像。检查image:标签并验证它是否存在。

相关问题