Kubernetes 未能创建pod沙盒:rpc错误:代码=未知描述=未能设置沙盒容器
我们正试图创建POD,但该POD的状态在ContainerCreating中出现了很长一段时间 这是运行命令后得到的输出:kubectl descripe podKubernetes 未能创建pod沙盒:rpc错误:代码=未知描述=未能设置沙盒容器,kubernetes,kubectl,kubeadm,Kubernetes,Kubectl,Kubeadm,我们正试图创建POD,但该POD的状态在ContainerCreating中出现了很长一段时间 这是运行命令后得到的输出:kubectl descripe pod Name: demo-6c59fb8f77-9x6sr Namespace: default Priority: 0 Node: k8-slave2/10.0.0.5 Start Time: Wed, 23 Dec 2020 10:16:23 +0000 Label
Name: demo-6c59fb8f77-9x6sr
Namespace: default
Priority: 0
Node: k8-slave2/10.0.0.5
Start Time: Wed, 23 Dec 2020 10:16:23 +0000
Labels: app=demo
pod-template-hash=6c59fb8f77
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: ReplicaSet/demo-6c59fb8f77
Containers:
private-docker-registry:
Container ID:
Image: private-docker-registry:5000/mahin/mof-docker-demo:v1
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ContainerCreating
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-p94zw (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-p94zw:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-p94zw
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 10m default-scheduler Successfully assigned default/demo-6c59fb8f77-9x6sr to k8-slave2
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8eee497a2176c7f5782222f804cc63a4abac7f4a2fc7813016793857ae1b1dff" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "95e72bfc6f6c13de7f5c96eb76b012c2e6639ca03f4c2f270b23ed1a09b90413" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "566370012e4a1d32af2ef9035ff64d743cd81f36f25d2724e7b033e393b8247e" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "7d499e40f572cfc29ecfb44f8376493df56a44213b1c1e9333b65499a0c288cd" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "53241e64de1e4470712b4061e2c82f44916d654bc532f8f1d12e5d5d4e136914" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "fd168faab4546f988dc38fc56df2f71cf80c922e86d3f869be15a43f08328f99" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e578afe329abb0cba64802dfa480e00f2bbbb8c80be537791c24a31c853eb62f" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "a3cb32dba55907ca907fc4f38f7ca05ef6db10a6af2dd1fa3c4db166e4ab9ffe" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "7e4368ba8ec460b3c94de24ab0a04b6c799eb28df885cbbacfc3bb3ffa8c1e67" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Warning FailedCreatePodSandBox 10m (x4 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "c4aaa8f8cd2dc1eff788baf04774c4ecc845568d00ed1b386df311ec224eb6f3" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
Normal SandboxChanged 56s (x551 over 10m) kubelet Pod sandbox changed, it will be killed and re-created.
azureuser@k8-master:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default demo-6c59fb8f77-2jq6k 0/1 ContainerCreating 0 5m23s
kube-system coredns-f9fd979d6-q8s9b 1/1 Running 2 27h
kube-system coredns-f9fd979d6-qnm4j 1/1 Running 2 27h
kube-system etcd-k8-master 1/1 Running 2 27h
kube-system kube-apiserver-k8-master 1/1 Running 3 27h
kube-system kube-controller-manager-k8-master 1/1 Running 3 27h
kube-system kube-flannel-ds-kqz4t 0/1 CrashLoopBackOff 92 27h
kube-system kube-flannel-ds-szqzn 1/1 Running 3 27h
kube-system kube-flannel-ds-v9q47 0/1 CrashLoopBackOff 142 27h
kube-system kube-proxy-4mb47 1/1 Running 2 27h
kube-system kube-proxy-54m9b 1/1 Running 2 27h
kube-system kube-proxy-wdxfz 1/1 Running 1 27h
kube-system kube-scheduler-k8-master 1/1 Running 3 27h
kubernetes-dashboard dashboard-metrics-scraper-7b59f7d4df-zmlvs 0/1 ContainerCreating 0 27h
kubernetes-dashboard kubernetes-dashboard-665f4c5ff-cnsvn 0/1 ContainerCreating 0 6h3m
kubeadm版本:
azureuser@k8-master:~$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.4", GitCommit:"d360454c9bcd1634cf4cc52d1867af5491dc9c5f", GitTreeState:"clean", BuildDate:"2020-11-11T13:15:05Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
每当我试图安排pod创建时,法兰绒都会崩溃。Background
我认为你的问题是由你的2个法兰绒CNI
podsCrashLoopBackOff
状态决定的
你的错误
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8eee497a2176c7f5782222f804cc63a4abac7f4a2fc7813016793857ae1b1dff" network for pod "demo-6c59fb8f77-9x6sr": networkPlugin cni failed to set up pod "demo-6c59fb8f77-9x6sr_default" network: open /run/flannel/subnet.env: no such file or directory
指出由于缺少/run/flannel/subnet.env
文件,无法创建pod。
在文档中,您可以找到:
Flannel在每台主机上运行一个称为flanneld的小型二进制代理,并负责从更大的预配置地址空间中为每台主机分配子网租约。
这意味着,为了正常工作,Flannel
pod应该在每个节点上运行,因为它包含子网信息。从您的输出中,我可以看到在3个法兰绒吊舱中,只有1个工作正常
NAMESPACE NAME READY STATUS RESTARTS AGE
...
kube-system kube-flannel-ds-kqz4t 0/1 CrashLoopBackOff 92 27h
kube-system kube-flannel-ds-szqzn 1/1 Running 3 27h
kube-system kube-flannel-ds-v9q47 0/1 CrashLoopBackOff 142 27h
如果提到的pod被安排在flannel pod不工作的节点上,则由于CNI网络问题将不会创建该pod。除了您的demo
pod外,kubernetes仪表板
pod在ContainerCreating
状态方面也存在同样的问题
结论
由于Kubernetes遇到一些与flannel配置文件相关的网络问题(…network:open/run/flannel/subnet.env:没有此类文件或目录),因此无法安排您的demo
pod
您的法兰绒吊舱重新启动计数非常高,为27小时
。您必须确定原因并修复它。这可能是由于缺乏资源、基础设施存在网络问题或其他许多原因造成的。一旦所有flannel
pod都能正常工作,您就不会遇到此错误
解决方案
您必须使法兰绒吊舱在每个节点上正常工作
其他疑难解答详细信息
有关详细调查,请提供
$ kubectl describe kube-flannel-ds-kqz4t -n kube-system
$ kubectl describe kube-flannel-ds-v9q47 -n kube-system
日志详细信息也会有所帮助
$ kubectl logs kube-flannel-ds-kqz4t -n kube-system
$ kubectl logs kube-flannel-ds-v9q47 -n kube-system
请用kubectl-get-pods-o-wide-A
替换kubectl-get-pods-o-wide-A
,并输出kubectl-get-nodes-o-wide
如果您愿意提供这些信息,应该可以确定flannel
pods问题的根本原因,我将用精确的解决方案编辑此答案。Hi,您需要检查flannel pods的日志吗?为什么是CrashLoopBackOffing请将错误输出粘贴为文本,而不是图片。你能分享更多的细节,比如kubernetes版本,你的环境吗?您是否尝试过除法兰纳以外的其他CNI,例如印花布?您是否能够提供一些复制此问题的步骤?您是否更改了群集中的节点数?您是否也可以描述其他受影响的豆荚的一些豆荚?您是否有足够的资源(RAM、CPU)?有任何污染,防火墙改变吗?没有,除了法兰绒,我们没有使用任何其他CNI。并对您提到的帖子进行了更改。是的,我们有足够的资源。你们检查过你们提到的目录中是否有文件吗<代码>/run/flannel/subnet.env
?如果没有,您可以按照中的说明手动创建,或者重新部署flannel
。您是否也可以共享受影响的法兰绒吊舱日志kubectl日志-n kube系统
?您在使用kubeadm init
之前是否部署了flannel?是的,我在使用kubeadm init之后安装了flannel。@Giridharan M您能解决您的问题吗?您好@PjoterS,我也有同样的问题,介意您提供一些帮助吗?我对k get po-o wide-A的输出显示coredns“Completed”和flannel ds“CrashLoopBackOff”;第二个命令显示所有节点“就绪”@Spencer Trinh如果您在堆栈上创建新问题并提供一些详细信息(如descripe o flanne pod、env details和复制问题的步骤),则会更好。我在每次重新启动时都找到了解决方案,但我需要重新创建此文件。这是正常的行为吗?
$ kubectl logs kube-flannel-ds-kqz4t -n kube-system
$ kubectl logs kube-flannel-ds-v9q47 -n kube-system