我有一个使用 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网络上旋转1000个容器,所有这些都来自同一个Docker镜像.
目前部署需要很长时间.我已经分离的过程分为docker create
和docker start
,而不是单片docker run
.
有没有办法同时旋转容器? - 很高兴在编程接口(Go,C,无论如何)中工作,或使用CLI命令.
相关:Docker Engine可以并行启动容器 [3年前询问和回答]
我已经使用 containerd 运行时创建了一个 Kind 集群。这是我的节点:
root@dev-001:~# k get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
local-cluster-control-plane Ready control-plane,master 7d8h v1.20.2 172.18.0.2 <none> Ubuntu 20.10 5.4.0-81-generic containerd://1.4.0-106-gce4439a8
local-cluster-worker Ready <none> 7d8h v1.20.2 172.18.0.5 <none> Ubuntu 20.10 5.4.0-81-generic containerd://1.4.0-106-gce4439a8
local-cluster-worker2 Ready <none> 7d8h v1.20.2 172.18.0.3 <none> Ubuntu 20.10 5.4.0-81-generic containerd://1.4.0-106-gce4439a8
local-cluster-worker3 Ready <none> 7d8h v1.20.2 172.18.0.4 <none> Ubuntu 20.10 5.4.0-81-generic containerd://1.4.0-106-gce4439a8
Run Code Online (Sandbox Code Playgroud)
我如何 ssh 进入节点?
种类版本:0.11.1 或更高版本
运行时:containerd(不是docker)
我目前正在使用 containerd 运行我的应用程序容器进行测试,但遇到网络问题。
我需要向应用程序容器的端口 5000 发送一些请求,尽管 ctr 手册上没有关于运行具有端口转发的容器的描述。
使用 docker,我们可以执行如下操作:
docker run test-image -d -p 5000:5000
Run Code Online (Sandbox Code Playgroud)
我可以使用 ctr 命令做同样的事情吗?我知道 nerdctl 可以做到这一点,但由于某些原因在我的公司内很难使用这个工具。
我正在尝试使用来自私有不安全注册表的 docker 容器映像创建一个 k8s pod。使用最新的 K8s,我收到 ErrImagePull,因为它抱怨 http 与 https 的注册表不安全。
\n Type Reason Age From Message\n ---- ------ ---- ---- -------\n Normal Scheduled 7s default-scheduler Successfully assigned imagename to xxxx\n Normal Pulling 7s kubelet Pulling image "registry:5000/imagename:v1\xe2\x80\x9d\n Warning Failed 6s kubelet Failed to pull image "registry:5000/imagename:v1\xe2\x80\x9d: rpc error: code = Unknown desc = failed to pull and unpack image "registry:5000/imagename:v1\xe2\x80\x9d: failed to resolve reference "registry:5000/imagename:v1\xe2\x80\x9d: failed to do request: Head "https://registry:5000/v2/imagename/manifests/v1\xe2\x80\x9d: http: server gave HTTP response to HTTPS client\n …
Run Code Online (Sandbox Code Playgroud) 首先,我不是容器编排工具方面的专家。
我刚刚根据指南 安装了microk8s :https: //microk8s.io/docs/
如果我运行microk8s kubectl get nodes
,我会看到我的节点实际上正在运行containerd
引擎。
我的应用程序构建过程设置为生成 docker 文件并自动创建 docker 映像,因此我希望 microk8s 也使用 docker。
我用的是minikube,现在决定尝试一下microk8s。现在我有点困惑,也许从一开始就坚持使用 docker 是个坏主意?
是否可以为microk8s设置docker引擎?
我以前从未使用过 contains,并且我不知道如何为我的应用程序准备 contains 图像。这就是我问的原因。
我在 Ubuntu 上安装了 microk8s,以拥有一个简单的 Kubernetes 集群用于测试目的。
我有一个用例,我必须使用另一个用户(而不是用于运行容器的用户)在容器(在 kubernetes pod 中)中执行命令。
由于 kubectl 不提供这种可能性,因此 docker 环境的解决方法是使用docker exec -u
. 但microk8s安装的Kubernetes集群并没有使用docker作为容器运行时,而只使用containerd。
我没有找到使用containerd的ctr cli作为另一个用户在容器中执行命令(因为可以使用docker)的可能性。
有可能吗?
使用 ctr相当于什么docker stop [containerID]
?我似乎无法通过 contianer 选项找到它,或者我错过了一些 ctr 概念......
我是 Containerd 的新手,我正在尝试使用 Containerd 运行 Windows 容器。安装 Containerd 后,我只是尝试从注册表中提取映像,但遇到了以下问题。我遇到的问题来自处理图像时的容器运行时 hcssshim::ProcessBaseLayer 方法。请帮助我解决问题。我正在使用containerd 1.6.0-rc.1(预发布)。我之所以使用它是因为我想尝试 Windows HostProcess 容器。PFB 问题。
PS C:\Program Files\containerd> .\crictl.exe pull mcr.microsoft.com/windows/nanoserver:20H2
time="2022-01-21T07:29:44Z" level=fatal msg="pulling image: rpc error: code = Unknown desc = failed to pull and unpack image \"mcr.microsoft.com/windows/nanoserver:20H2\": failed to extract layer sha256:4370934b39e53babdf58bfe6ff2bcc662e068d3b71bd015ea280a402a89e6673: hcsshim::ProcessBaseLayer \\\\?\\C:\\ProgramData\\containerd\\root\\io.containerd.snapshotter.v1.windows\\snapshots\\12: The specified module could not be found.: unknown"
Run Code Online (Sandbox Code Playgroud) 我正在使用 crictl pull 来拉取图像,但它挂在 PullImageRequest 处。我想知道发生了什么,那么containerd的日志文件在哪里,不是容器运行的日志,而是containerd本身的日志
containerd ×10
docker ×6
kubernetes ×6
microk8s ×2
containers ×1
k3s ×1
kind ×1
overlayfs ×1
shim ×1