尝试将不安全的注册表添加到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 集群中的运行时。
如果我刚刚containerd
安装在Linux系统上(即未安装Docker),如何删除未使用的容器映像以节省磁盘空间?
Docker 有这个方便的docker system prune
命令,但我找不到任何类似的命令ctr
或第三方工具。
Kubernetes 文档将 pod 描述为wrapper
围绕一个或多个容器。inside
运行Pod 的容器共享一组命名空间(例如网络),这让我认为namespaces
它们是嵌套的(我对此表示怀疑)。wrapper
从容器运行时的角度来看,这里是什么?
由于容器只是受namespaces, Cgroups
例如也许,pod只是container
Kubelet启动的第一个进程,其余容器启动并按名称空间分组。
我读过许多与我的问题类似的链接,但它们都没有帮助我解决问题。
类似链接:
问题描述:
我已经使用创建了一个新的 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)我只安装了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) 自 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一起使用吗?
我正在探索如何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。是否有任何相关的文档ctr
或containerd …
当我尝试为EJBCA-ce创建 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 云容器实例上运行容器
我试过
它使用相同的环境变量(数据库配置)在本地运行良好。几周前,它曾经以相同的配置运行。
以下是我从 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) 我使用 minikube 设置了 2 个 k8s 环境。一张带--container-runtime=docker
旗帜,一张带--container-runtime=containerd
旗帜。这是我看到的差异。
当我设定时container-runtime=docker
,这些事情就会发生
dockerd
服务正在运行dockerd
生成containerd
/usr/bin/containerd-shim-runc-v2
进程运行实际的容器,每个进程的父进程containerd-shim-runc-v2
在系统上都是 PID 1。当我设定时container-runtime=containerd
,这些事情就会发生
dockerd
服务,没有任何含糊之处。containerd
进程,其所有者为 PID 1。同样,这并不奇怪。containerd-shim
进程运行实际的容器,每个containerd-shim
进程的父进程是containerd
这是我的问题
containerd-shim
和之间有什么区别containerd-shim-runc-v2
?他们似乎大多采用相似的旗帜等。编辑:刚刚想到编辑。在ubuntu 20机器上,如果我安装docker,dockerd是一个单独的进程,其父进程是PID 1,containerd是一个单独的进程,其父进程是PID 1,所有容器都是container-shim-runc-v2的子进程,其PID为1 ?!?!为什么不是containerd
孩子dockerd
?这是在哪里配置的?
我有一个使用 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) containerd ×10
docker ×7
kubernetes ×5
runc ×2
azure ×1
containers ×1
ejbca ×1
k3s ×1
linux ×1
minikube ×1
overlayfs ×1