docker 无法运行 k8s 容器(包括控制平面):“无法找到用户 0:参数无效”

docker 无法运行 k8s 容器(包括控制平面):“无法找到用户 0:参数无效”

我有一个 k8s 集群,运行了一段时间,没有出现问题。几天前,它无法启动,当 kubelet 启动时,它会创建许多控制平面容器(明显是无限循环),所有容器都标记为已创建,Docker 和 kubelet 日志中每个创建的容器都出现以下错误:

Handler for POST /v1.40/containers/<ID>/start returned error: unable to find user 0: invalid argument

背景信息:

  • 当我注意到 kubelet 版本为 v1.19.1 时,集群仍在运行 v1.19.0
  • docker 在 Debian 上的版本是 19.03.12(在 Linux 5.7.0-3 和 5.8.0-1 上进行了测试)
  • 我最初怀疑升级到 kubelet v1.19.1(从 v1.19.0)有问题,但撤销升级并没有解决问题
  • 我尝试了几种docker run -it <image> sh -i不同的图像,但它们运行良好,包括使用命令行进行卷安装-v和转发端口时;这些容器运行良好-p
  • 重新安装docker并apt purge ... && apt install ...没有解决问题,即使/var/lib/{docker,kubelet}在重新安装之前删除
  • 也没有kubeadm reset ... && kubeadm init
  • docker 使用 overlay2 存储驱动程序和 systemd cgroup 驱动程序
  • 我没有启动时的日志,因为我几天没有使用这个(开发)集群,随后的错误填满了日志

任何提示和建议都值得赞赏。遗憾的是,错误消息不足以帮助找出问题所在,甚至无法找出依赖链中的问题所在。

答案1

正如 @mdaniel 在评论中提到的,该问题可能与未安装的 docker 版本有关。

按照此 github 上的步骤解决了这个问题邮政按用户恩克雷斯韦尔

好的,在 Debian 10 上运行良好,即使安装了 AppArmour 并强制执行策略。

我从 Docker 官方 Repo 安装了 Docker CE。 https://docs.docker.com/engine/install/debian/

请执行相同操作并恢复..请注意,在 Debian 11 发布为“稳定版”之前,我们不会提供任何支持。

![图片]([https://user-images.githubusercontent.com/23178133/92718216-a3be2880-f3b5-11ea-9ef4-e9af69de882b.png](https://user-images.githubusercontent.com/23178133/92718216-a3be2880-f3b5-11ea-9ef4-e9af69de882b.png))

顺便提一下,其他人也遇到了这个问题,并在这里向 Debian 维护人员报告:bugs.debian.org/cgi-bin/bugreport.cgi?bug=970525

相关内容