Agent节点的containerd的hosts.toml

环境信息:
K3s 版本: v1.27.16+k3s1

集群配置: 1 servers, 2 agents

问题描述:
我在k3s中部署KubeEdge的EdgeCore时,通过ctr -n手动拉取镜像下来后EdgeCore可以安装在节点上,但是查看日志报错:unknown service runtime.v1.RuntimeService,在将/etc/containerd/hosts.toml文件中的disable注释掉后EdgeCore可以正常运行,但是该节点的pod将全部处于CrashLoopBackOff。

复现步骤:

附加上下文/日志:

日志


4月 04 19:54:16 agent2 edgecore[29326]: W0404 19:54:16.217371 29326 edged.go:504] failed to get kubelet healthz syncloop, err: Get “http://localhost:10350/healthz/syncloop”: dial tcp [::1]:10350: connect: connection refused
4月 04 19:54:16 agent2 systemd[1]: edgecore.service: main process exited, code=exited, status=1/FAILURE
4月 04 19:54:16 agent2 edgecore[29326]: E0404 19:54:16.218857 29326 edged.go:145] Start edged failed, err: failed to run Kubelet: validate service connection: validate CRI v1 runtime API for endpoint “unix:///run/containerd/containerd.sock”: rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService



正常来说,安装 k3s 会自动部署 containerd,对应的配置文件在 /var/lib/rancher/k3s/agent/etc/containerd/certs.d/ 中,你修改的 /etc/containerd/hosts.toml 正常不会影响到 K3s,对于K3s 来说,也不会生效。

至于你说 K3S pod 全部 CrashLoopBackOff ,有可能你在主机上手动启动了一个 containerd,K3s 的 containerd 因为冲突启动失败导致。

我现在在尝试让edgecore使用k3s的containerd,但是我把他的unix改为unix:///run/k3s/containerd/containerd.sock后当前节点的pod也会启动失败
describe pod:Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: read init-p: connection reset by peer: unknown
是因为和k3s的containerd冲突了吗,如果我想用k3s的containerd我要怎么修改呢

我对 edgecore 不了解,但正常来说,配置 unix:///run/k3s/containerd/containerd.sock 应该就没问题了。

但是你也要确认下,配置 k3s containerd.sock 之后,原来的 containerd 的服务是否停止了,否则还是有冲突