标签: containerd

在containerd中添加不安全的注册表

尝试将不安全的注册表添加到containerd配置中,如下所示:

[plugins."io.containerd.grpc.v1.cri".cni]
      bin_dir = "/opt/cni/bin"
      conf_dir = "/etc/cni/net.d"
      max_conf_num = 1
      conf_template = ""
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]
        [plugin."io.containerd.grpc.v1.cri".registry.mirrors."test.http-registry.io"]
          endpoint = ["http://v048011.dom600.lab:5000"]
Run Code Online (Sandbox Code Playgroud)

即使将其添加到 后config.toml,当从不安全的注册表中提取映像时,它也会失败:

sudo ctr image pull v048011.dom600.lab:5000:5000/myjenkins:latest

ctr: failed to resolve reference "v048011.dom600.lab:5000/myjenkins:latest": failed to do request: Head https://v048011.dom600.lab:5000:5000/v2/myjenkins/manifests/latest: http: server gave HTTP response to HTTPS client
Run Code Online (Sandbox Code Playgroud)

docker我们可以将其添加insecure registry到文件中daemon.json,然后 docker 将从其中提取图像,我怎样才能在 中实现相同的目的containerd?替换 docker 作为 k8s 集群中的运行时。

kubernetes containerd

20
推荐指数
2
解决办法
4万
查看次数

仅使用containerd(不带Docker)修剪容器镜像

如果我刚刚containerd安装在Linux系统上(即安装Docker),如何删除未使用的容器映像以节省磁盘空间?

Docker 有这个方便的docker system prune命令,但我找不到任何类似的命令ctr或第三方工具。

linux docker containerd

16
推荐指数
1
解决办法
2万
查看次数

从容器运行时的角度来看,pod 和容器有什么区别?

Kubernetes 文档将 pod 描述为wrapper围绕一个或多个容器。inside运行Pod 的容器共享一组命名空间(例如网络),这让我认为namespaces它们是嵌套的(我对此表示怀疑)。wrapper从容器运行时的角度来看,这里是什么?

由于容器只是受namespaces, Cgroups例如也许,pod只是containerKubelet启动的第一个进程,其余容器启动并按名称空间分组。

kubernetes containerd

11
推荐指数
1
解决办法
1万
查看次数

OCI 运行时执行失败:执行失败:无法启动容器进程:打开/dev/pts/0:不允许操作:未知

我读过许多与我的问题类似的链接,但它们都没有帮助我解决问题。

类似链接

  1. 由于执行“systemctl daemon-reload”后权限问题,无法执行到容器中
  2. OCI 运行时执行失败:执行失败:无法启动容器进程:打开/dev/pts/0:不允许操作:未知
  3. CI运行时执行失败:执行失败:无法启动容器进程:打开/dev/pts/0:不允许操作:未知
  4. OCI 运行时执行失败:执行失败:无法启动容器进程:打开/dev/pts/0:不允许操作:未知
  5. docker exec 执行失败
  6. OCI运行时执行失败:执行失败:container_linux.go:348:启动容器进程导致“打开/ proc / self / fd:没有这样的文件或目录”:未知

问题描述

我已经使用创建了一个新的 Kubernetes 集群Kubespray。当我想在其中一个容器中执行一些命令时,我遇到了以下错误:

执行的命令
kubectl exec -it -n rook-ceph rook-ceph-tools-68d847b88d-7kw2v -- sh
Run Code Online (Sandbox Code Playgroud)
错误:

OCI 运行时执行失败:执行失败:无法启动容器进程:打开 /dev/pts/1:不允许操作:未知命令以退出代码 126 终止

我也登录了运行pod的节点,并尝试使用docker exec命令执行容器,但错误没有改变。

解决方法

  • 据我发现,错误代码(126)意味着权限不足,但我sh在 Docker 或 Kubernetes 中没有遇到过这种错误(例如执行)。

  • 我还检查了是否SELinux启用(正如第三个链接中所述)。

    apt install policycoreutils
    sestatus
    # Output
    SELinux status:                 disabled
    
    Run Code Online (Sandbox Code Playgroud)
  • 在第5个链接中,据说检查你是否更新了内核,而我没有升级节点上的任何内容。

    id; stat /dev/pts/0
    # output
    uid=0(root) gid=0(root) groups=0(root)
      File: /dev/pts/0
      Size: 0               Blocks: …
    Run Code Online (Sandbox Code Playgroud)

runc docker kubernetes containerd kubernetes-rook

11
推荐指数
1
解决办法
3万
查看次数

如何删除containerd中的所有容器和镜像?

我只安装了containerd,我将它用于我的k8s 容器运行时。我正在努力清理事情。与 containerd 中的 ff docker 命令等效的内容可能是:

sudo docker rm -vf $(docker ps -a -q)
sudo docker rmi -f $(docker images -a -q)
Run Code Online (Sandbox Code Playgroud)

docker containerd

9
推荐指数
1
解决办法
2万
查看次数

使用 containerd 在 Kubernetes 内运行 docker

自 K8S v1.11 起,运行时从 dockerd 更改为 Containerd。我使用 Jenkins 而不是 kubernetes 在 Docker (dood) 之外使用 Docker 构建 docker 镜像。

当我尝试切换到使用常规 docker 客户端的 conatinerd 套接字文件(containerd/containerd.sock 映射到 /var/run/docker.sock)时,出现以下错误Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x00\x00\x00\x04\x00\x00\x00\x00\x00".

docker客户端可以和containerd一起使用吗?

docker kubernetes containerd

8
推荐指数
1
解决办法
6442
查看次数

如何在 CLI 中使用 ctr 在 containerd 中运行 docker 图像?

我正在探索如何containerd代替 dockerd 使用。这仅用于学习和作为 cli 工具,而不是任何管道或自动化。

到目前为止,关于在 cli (via ctr) 中使用 containerd 的文档非常有限。甚至官方文档都是containerd直接使用 Go lang 来使用的。

我学到的是ctr命令扮演docker命令控制的角色containerd。到目前为止,我已经创建了一个 docker 映像并将其导出为 .tar 格式。现在使用ctr i import hello.tar我已将其导入为图像。

现在ctr i ls给我以下输出:

REF                                     TYPE                                       DIGEST                                                                  SIZE      PLATFORMS   LABELS
docker.io/library/hello-java-app:latest application/vnd.oci.image.manifest.v1+json sha256:ef4acfd85c856ea020328959ff3cac23f37fa639b7edfb1691619d9bfe1e06c7 628.7 MiB linux/amd64 -
Run Code Online (Sandbox Code Playgroud)

尝试运行容器要求我提供图像 ID:

root@slave-node:~/images/sample# ctr run
ctr: image ref must be provided
root@slave-node:~/images/sample# ctr run docker.io/library/hello-java-app:latest
ctr: container id must be provided
Run Code Online (Sandbox Code Playgroud)

我不确定从哪里获取图像 ID。是否有任何相关的文档ctrcontainerd …

containers docker containerd

8
推荐指数
1
解决办法
1万
查看次数

在 azure 上创建 ejbca docker 容器时,containerd 错误“无法通过 uid 找到用户”

当我尝试为EJBCA-ce创建 Azure 容器实例时,出现错误并且看不到任何日志。

我期待以下结果: azure 门户容器实例事件成功

但我收到以下错误:

azure 门户容器实例事件失败

Failed to start container my-azure-container-resource-name, Error response: to create containerd task: failed to create container e9e48a_________ffba97: guest RPC failure: failed to find user by uid: 10001: expected exactly 1 user matched '0': unknown

一些背景:

我在 azure 云容器实例上运行容器

我试过

  • 来自 ARM 模板
  • 来自 Azure 门户。
  • 安装了文件共享
  • 使用数据库环境变量
  • 没有任何环境变量

它使用相同的环境变量(数据库配置)在本地运行良好。几周前,它曾经以相同的配置运行。

以下是我从 az cli 附加容器组时得到的一些日志。

(count: 1) (last timestamp: 2020-11-03 16:04:32+00:00) pulling image "primekey/ejbca-ce:6.15.2.3"
(count: 1) (last timestamp: 2020-11-03 16:04:37+00:00) Successfully pulled image "primekey/ejbca-ce:6.15.2.3"
(count: 28) …
Run Code Online (Sandbox Code Playgroud)

azure docker ejbca azure-container-instances containerd

8
推荐指数
1
解决办法
806
查看次数

containerd-shim的父进程是什么进程?

我使用 minikube 设置了 2 个 k8s 环境。一张带--container-runtime=docker旗帜,一张带--container-runtime=containerd旗帜。这是我看到的差异。

当我设定时container-runtime=docker,这些事情就会发生

  1. 有一个dockerd服务正在运行
  2. 该服务作为其自己的子项dockerd生成containerd
  3. 有些/usr/bin/containerd-shim-runc-v2进程运行实际的容器,每个进程的父进程containerd-shim-runc-v2在系统上都是 PID 1。

当我设定时container-runtime=containerd,这些事情就会发生

  1. 那里没有dockerd服务,没有任何含糊之处。
  2. 有一个containerd进程,其所有者为 PID 1。同样,这并不奇怪。
  3. 有些containerd-shim进程运行实际的容器,每个containerd-shim进程的父进程是containerd

这是我的问题

  1. containerd-shim和之间有什么区别containerd-shim-runc-v2?他们似乎大多采用相似的旗帜等。
  2. 为什么在场景 1 中,垫片是 PID 1 的子级,而场景 2 中的垫片是 containerd 的子级

编辑:刚刚想到编辑。在ubuntu 20机器上,如果我安装docker,dockerd是一个单独的进程,其父进程是PID 1,containerd是一个单独的进程,其父进程是PID 1,所有容器都是container-shim-runc-v2的子进程,其PID为1 ?!?!为什么不是containerd孩子dockerd?这是在哪里配置的?

runc minikube containerd docker-daemon

8
推荐指数
1
解决办法
2万
查看次数

Kubernetes:增加 K3s 中 OverlayFS/containerd 运行时卷的大小

我有一个使用 Rancher 的 K3s 部署的轻量级 Kubernetes 集群。

大多数时候 Pod 在其中运行良好,但我注意到它有时会遇到NodeDiskPressure,这会导致现有 Pod 被驱逐。

通过查看主机中的可用磁盘,我发现在此问题发生之前较高的集群负载与Containerd运行时存储中的高使用量一致。在正常情况下,这些卷的已用空间量为 70%,但它们会上升到 +90%,这可能会导致 pod 被驱逐。

overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/3cd5b4cad915d0914436df95359e7685aa89fcd3f95f0b51e9a3d7db6f11d01b/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/fd2a513ce2736f10e98a203939aaa60bd28fbbb4f9ddbbd64a0aedbf75cae216/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/73865fcfa8b448d71b9b7c8297192b16612bd01732e3aa56d6e6a3936305b4a2/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/fc68e6653cec69361823068b3afa2ac51ecd6caf791bf4ae9a65305ec8126f37/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/7fcd3e8789f0ca7c8cabdc7522722697f76456607cbd0e179dd4826393c177ec/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/9334ed12649bcdb1d70f4b2e64c80168bdc86c897ddf699853daf9229516f5cf/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/de1c6f47cf82ff3362f0fc3ed4d4b7f5326a490d177513c76641e8f1a7e5eb1a/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/079c26817021c301cb516dab2ddcf31f4e224431d6555847eb76256369510482/rootfs
overlay                          6281216  4375116   1906100  70% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/d0da2f62430306d25565072edf478ad92752255a40830544101aeb576b862a5f/rootfs
overlay                          6281216  4375116   1906100  70% …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes containerd k3s overlayfs

7
推荐指数
1
解决办法
9046
查看次数