在k8s(v1.10)集群上创建Redis POD问题,POD创建卡在“ContainerCreating”
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 30m default-scheduler Successfully assigned redis to k8snode02
Normal SuccessfulMountVolume 30m kubelet, k8snode02 MountVolume.SetUp succeeded for volume "default-token-f8tcg"
Warning FailedCreatePodSandBox 5m (x1202 over 30m) kubelet, k8snode02 Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod "redis_default" network: failed to find plugin "loopback" in path [/opt/loopback/bin /opt/cni/bin]
Normal SandboxChanged 47s (x1459 over 30m) kubelet, k8snode02 Pod sandbox changed, it will be killed and re-created.
8条答案
按热度按时间zujrkrfu1#
当我使用Calico作为CNI时,我遇到了类似的问题。
容器仍处于创建状态,我检查了主节点上的/etc/cni/net.d和/opt/cni/bin是否都存在,但不确定工作节点上是否也需要。
在worker节点NGINX正在尝试启动,但被退出,我不知道这里发生了什么-我是kubernetes的新手&无法解决这个问题-
我还检查了工作节点上的/etc/cni/net.d和/opt/cni/bin,它在那里-
xoefb8l82#
确保
/etc/cni/net.d
及其友元/opt/cni/bin
都存在,并且在 * 所有节点 * 上正确填充了CNI配置文件和二进制文件。具体到flannel,可以使用flannel cni repojogvjijk3#
我在GCP上的GKE集群中使用了一个抢占式节点池,遇到了这个问题。多亏了检查
/etc/cni/net.d
完整性的@mdaniel tip,我可以使用命令gcloud compute ssh <name of some node> --zone <zone-of-cluster> --internal-ip
通过ssh在测试集群的节点中再次重现这个问题。然后,我简单地编辑了文件/etc/cni/net.d/10-gke-ptp.conflist
并修改了"routes": [ {"dst": "0.0.0.0/0"} ]
上的值(从0.0.0.0/0
更改为1.0.0.0/0
)。之后,我删除了在其中运行的pod,它们都陷入了
ContainerCreating
状态,永远生成带有错误Failed create pod sandbox: rpc error: code...
的kublet事件请注意,为了进行测试,我已将节点池设置为最多1个节点。否则,它将向上扩展一个新节点,并在新节点上重新创建pod。在我的生产事件中,节点池达到了最大节点数,因此将测试设置为最多1个节点会重现类似的情况。
从那以后,从GKE中删除节点解决了生产中的问题,我创建了一个Python脚本,列出集群上的所有事件,并过滤掉那些具有关键字
"Failed create pod sandbox: rpc error: code"
的事件。然后,我检查所有事件并获取它们的pod,然后从pod中,我得到了节点,最后我循环遍历这些节点,从Kubernetes API和Compute API的Python客户端中删除它们。对于Python脚本,我使用了库:例如kubernetes
和google-cloud-compute
。这是脚本的简单版本。请在使用前进行测试:
z6psavjg4#
AWS EKS尚不支持t3a、m5ad和r5ad示例
nx7onnlm5#
我正打算驱逐所有节点上的pod,没想到一直出错的pod变成Running了,你可以试试执行,希望对你有用
xytpbqjk6#
当我在AWS EKS上添加PVC时,这个问题出现在我身上。
将aws-node CNI插件更新到最新版本解决了此问题-
https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html
czfnxgou7#
以下步骤重置kubernetes集群,并帮助我解决了我的问题。
1.停止所有运行的pod
1.从群集中删除所有工作节点
1.在主节点和节点上执行kubeadm重置
1.初始化主节点kubeadm init --apiserver-advertisement-address
1.安装Pod网络“WeaveNet”kubectl应用-f“https://cloud.weave.works/k8s/net?k8s-version =$(kubectl版本|64进制|tr -d '\n')和环境IP分配范围= 192.168.0.0/16”
1.将节点加入群集
1.重新启动所有节点
8ftvxx2r8#