我正在关注Run a pod sandbox链接以使用crictl创建一个沙箱。我收到了以下错误
root@cri-master:~# crictl runs sandbox-config.json
FATA[0000] run pod sandbox failed: rpc error: code = Unknown desc =failed to setup network for sandbox "3ad790c715c817d22e6f6df95bf612dbc0ceaf05d2d94f94e62aa4b57234ea57": pods "nginx-sandbox" not found
请有人告诉我这里做错了什么
所以我在cri-containerd github问题中发布了同样的问题,我得到了这个答案。这解释了一切
IIRC,calico daemonset watch apiserver获取pod的列表,并根据pod规范应用网络配置。我认为这是问题所在。
如果您自己使用
crictl create
沙盒,则apiserver上不会有相应的pod,因此calico会报告该错误。实际上,我们不建议用户在Kubernetes节点上运行
crictl runs
和crictl create
,这些命令只适用于某些特殊的调试案例。这也是我们使命令难以使用的原因(用户需要准备配置文件来创建沙箱/容器)。事实上,即使您能够创建沙箱,
kubelet
最终也会停止并删除它,因为它没有在apiserver上看到相应的pod。如果您只想尝试crictl,则错误是由上述原因引起的。 如果您只想尝试创建一个pod,请改用kubectl。 :)