我在部署Pod时收到错误消息“ networkPlugin cni无法设置Pod”

时间:2020-03-03 13:02:46

标签: kubernetes kubernetes-pod

我是Kubernetes的新手。尝试将第一个Pod部署在从属服务器上时,我遇到以下错误,只需设置一个主服务器和另一个从属服务器(两个Ec2实例)的堆栈即可。你能把我赶出去吗?错误文件已附加。

错误:

警告FailedCreatePodSandBox 34m kubelet,从节点失败创建Pod沙箱失败:rpc错误:代码=未知desc =未能设置沙箱容器“ 26cdaf3170806455a4731218d20c482bb2a41ded6ef85c90b560058e332df684”网络将Pod网络标签集设置为Pod网络标签: “ label-demo_default”网络:打开/run/flannel/subnet.env:没有此类文件或目录

1 个答案:

答案 0 :(得分:0)

由于该群集的状态,部署的精确度以及kubectlkubelet的输出消息是未知的,我将尝试给出一些故障排除步骤和情况,这些可能会导致解决这里遇到的一些问题。

  • Kubeadm
  • 绒布
  • Kubelet
  • 复制
  • 其他链接

Kubeadm

第一件事是使用kubeadm

的Kubernetes集群的供应过程。

使用官方文档检查所有要求和步骤:

调用$ kubeadm init命令时,请确保添加如下参数:

  • --apiserver-advertise-address=IP_ADDRESS_OF_MASTER_NODE
  • --pod-network-cidr=POD_NETWORK_CIDR_WITH_ACCORDANCE_TO_CNI

不提供--pod-network-cidr参数的配置群集可能会导致与CNI相关的问题。

对于Flannel,默认的pod网络cidr为10.244.0.0/16

kubeadm init之后,您需要应用许多CNI(例如Flannel或Calico),因为kubeadm工具不会自动执行此操作。

请使用以下命令检查是否所有节点都处于Ready状态:

$ kubectl get nodes -o wide

此命令的输出应如下所示:

NAME   STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
k1     Ready    master   69m   v1.17.3   10.156.0.29   <none>        Ubuntu 18.04.4 LTS   5.0.0-1031-gcp   docker://19.3.7
k2     Ready    <none>   65m   v1.17.3   10.156.0.30   <none>        Ubuntu 18.04.4 LTS   5.0.0-1031-gcp   docker://19.3.7
k3     Ready    <none>   63m   v1.17.3   10.156.0.35   <none>        Ubuntu 18.04.4 LTS   5.0.0-1031-gcp   docker://19.3.7

此外,您可以$ kubectl describe node NAME_OF_THE_NODE获取有关每个节点的更多详细信息。

绒布

有有关解决绒布相关问题的官方文档:Github.com: flannel troubleshooting

您从kubelet收到的消息:

警告FailedCreatePodSandBox 34m kubelet,从节点失败创建Pod沙箱失败:rpc错误:代码=未知desc =未能设置沙箱容器“ 26cdaf3170806455a4731218d20c482bb2a41ded6ef85c90b560058e332df684”网络将Pod网络标签集设置为Pod网络标签: “ label-demo_default”网络:打开/run/flannel/subnet.env:没有此类文件或目录

告诉我们在计划安排subnet.env吊舱的节点上缺少sandbox个文件。

此外,请检查Flannel Pod是否运行正常。您可以使用以下任一方法进行检查:

  • $ kubectl get pods -A
  • $ kubectl get pods -n kube-system

此外,您还可以通过运行以下命令来检查此Pod的日志: $ kubectl logs NAME_OF_FLANNEL_CONTAINER

Kubelet

您可以使用以下方法(在systemd操作系统上)检查kubelet日志:

  • $ systemctl status kubelet
  • $ journalctl -u kubelet

复制

我设法重现了您遇到的错误,并且该错误在以下时间发生:

  • --pod-network-cidr=CIDR未与$ kubeadm init一起使用
  • 在没有$ kubeadm init的{​​{1}}之后应用了法兰式CNI

其他链接:

有一篇有关网络故障排除的文章:Kubernetes.feisky.xyz: Network

如果还有其他问题,请告诉我