轻量级Kubernetes之k3s:10:ContainerCreating状态的解决方法
使用k3s搭建的集群,进行pod创建或者缺省pod创建的时候都可能会出现pod状态处于ContainerCreating的情况,常见的原因之一是镜像拉取失败。最简单的方式就是手动加载,由于k3s缺省使用containerd,这里同时总结一下containerd和docker的手动镜像加载方式。
现象:pod处于ContainerCreating状态
缺省安装的集群,通过kubectl get pods -A获得所有pod的信息是发现,所有的pod都是pending状态,结果如下所示。
[root@host121 k3s]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-d798c9dd-mpbpc 0/1 ContainerCreating 0 81m
kube-system helm-install-traefik-vkwnp 0/1 ContainerCreating 0 81m
kube-system local-path-provisioner-58fb86bdfd-fczsg 0/1 ContainerCreating 0 81m
kube-system metrics-server-6d684c7b5-lx7fk 0/1 ContainerCreating 0 81m
[root@host121 k3s]#
原因确认:failed to pull image "k8s.gcr.io/pause:3.1
以coredns的pod为例确认一下pod的详细信息
[root@host121 k3s]# kubectl describe pods coredns-d798c9dd-mpbpc -n kube-system
Name: coredns-d798c9dd-mpbpc
Namespace: kube-system
Priority: 0
Node: host123/192.168.163.123
Start Time: Fri, 29 Nov 2019 16:58:26 -0500
Labels: k8s-app=kube-dnspod-template-hash=d798c9dd
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: ReplicaSet/coredns-d798c9dd
Containers:coredns:Container ID: Image: coredns/coredns:1.6.3Image ID: Ports: 53/UDP, 53/TCP, 9153/TCPHost Ports: 0/UDP, 0/TCP, 0/TCPArgs:-conf/etc/coredns/CorefileState: WaitingReason: ContainerCreatingReady: FalseRestart Count: 0Limits:memory: 170MiRequests:cpu: 100mmemory: 70MiLiveness: http-get http://:8080/health delay=60s timeout=5s period=10s #success=1 #failure=5Readiness: http-get http://:8181/ready delay=10s timeout=5s period=10s #success=1 #failure=5Environment: <none>Mounts:/etc/coredns from config-volume (ro)/var/run/secrets/kubernetes.io/serviceaccount from coredns-token-bvb5w (ro)
Conditions:Type StatusInitialized True Ready False ContainersReady False PodScheduled True
Volumes:config-volume:Type: ConfigMap (a volume populated by a ConfigMap)Name: corednsOptional: falsecoredns-token-bvb5w:Type: Secret (a volume populated by a Secret)SecretName: coredns-token-bvb5wOptional: false
QoS Class: Burstable
Node-Selectors: beta.kubernetes.io/os=linux
Tolerations: CriticalAddonsOnlynode.kubernetes.io/not-ready:NoExecute for 300snode.kubernetes.io/unreachable:NoExecute for 300s
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled <unknown> default-scheduler Successfully assigned kube-system/coredns-d798c9dd-mpbpc to host123Warning FailedScheduling <unknown> default-scheduler 0/4 nodes are available: 4 node(s) had taints that the pod didn't tolerate.Warning FailedCreatePodSandBox 91s (x29 over 21m) kubelet, host123 Failed create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.1": failed to pull image "k8s.gcr.io/pause:3.1": failed to pull and unpack image "k8s.gcr.io/pause:3.1": failed to resolve reference "k8s.gcr.io/pause:3.1": failed to do request: Head https://k8s.gcr.io/v2/pause/manifests/3.1: dial tcp 108.177.97.82:443: i/o timeout
[root@host121 k3s]#
原因已经非常清楚了,failed to pull image "k8s.gcr.io/pause:3.1,镜像拉不到。
加载方法
找到3.1的pause的镜像,然后加载进去,这个镜像压缩之后大概300多K,所以被我放到了easypack中,在easypack/k8s/shell/data下你可找到这个文件。当然你也可以使用各种其他方式。
[root@host121 data]# pwd
/root/easypack/k8s/shell/data
[root@host121 data]#
[root@host121 data]# ls
pause-amd64-3.1.tar.gz
[root@host121 data]#
containerd的加载方式:ctr命令方式
在4个节点都把puase镜像加载进去
[root@host121 data]# ctr --version
ctr github.com/rancher/containerd v1.3.0-k3s.4
[root@host121 data]# ls
pause-amd64-3.1.tar.gz
[root@host121 data]# gunzip pause-amd64-3.1.tar.gz
[root@host121 data]# ls
pause-amd64-3.1.tar
[root@host121 data]# ctr images import pause-amd64-3.1.tar
unpacking gcr.io/google_containers/pause-amd64:3.1 (sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c)...done
[root@host121 data]# ctr images list
REF TYPE DIGEST SIZE PLATFORMS LABELS
gcr.io/google_containers/pause-amd64:3.1 application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
[root@host121 data]# ctr images tag gcr.io/google_containers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
k8s.gcr.io/pause:3.1
[root@host121 data]#
确认一下,已经加载进来了
[root@host121 data]# ctr images list
REF TYPE DIGEST SIZE PLATFORMS LABELS
gcr.io/google_containers/pause-amd64:3.1 application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
[root@host121 data]#
但是名称还是不同,所以需要tag命令来帮助一下
[root@host121 data]# ctr images tag gcr.io/google_containers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
k8s.gcr.io/pause:3.1
[root@host121 data]# ctr images list
REF TYPE DIGEST SIZE PLATFORMS LABELS
gcr.io/google_containers/pause-amd64:3.1 application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
k8s.gcr.io/pause:3.1 application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
sha256:da86e6ba6ca197bf6bc5e9d900febd906b133eaa4750e6bed647b0fbe50ed43e application/vnd.oci.image.manifest.v1+json sha256:0968e31df05b727234888883ba43ccaa4ec75566113c75065af5a6124b62d93c 729.0 KiB linux/amd64 io.cri-containerd.image=managed
[root@host121 data]#
Docker的加载方式:ctr命令方式
如果是Docker作为容器运行环境的情况,使用docker load -i命令将pause镜像加载进去即可。
执行命令:docker load -i pause镜像名称
结果确认
稍等一会,或者直接重启一下k3s的服务,即可确认到所有的pod均处于Running状态了。
[root@host121 data]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-d798c9dd-mpbpc 1/1 Running 0 101m
kube-system helm-install-traefik-vkwnp 1/1 Running 0 101m
kube-system metrics-server-6d684c7b5-lx7fk 1/1 Running 0 101m
kube-system local-path-provisioner-58fb86bdfd-fczsg 1/1 Running 0 101m
[root@host121 data]#
轻量级Kubernetes之k3s:10:ContainerCreating状态的解决方法相关推荐
- Windows 10 安装SVN 不显示状态图标--解决方法
Windows 10 安装SVN 不显示状态图标--解决方法 参考文章: (1)Windows 10 安装SVN 不显示状态图标--解决方法 (2)https://www.cnblogs.com/lz ...
- ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法
ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法 参考文章: (1)ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法 (2)https://www.cnblogs. ...
- ArcGIS Engine 10 开发常见问题的解决方法
ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...
- Kubernetes master无法加入etcd 集群解决方法
Kubernetes master无法加入etcd 集群解决方法 参考文章: (1)Kubernetes master无法加入etcd 集群解决方法 (2)https://www.cnblogs.co ...
- elasticsearch 单节点状态yellow解决方法
docker elasticsearch 单节点状态yellow解决方法 kibana+elasticsearch使用ik分词器发现同一个请求,有时会报错,有时成功 原因是单节点状态下无法分配rep ...
- linux服务器上tcp有大量time_wait状态的解决方法和原因解释
在检查服务器时,发现有很多连接超时情况出现,用netstat命令查看,tcp的time_wait状态较多,需要进行优化. 1. 看一下现在time_wait的数量 netstat -an | grep ...
- License Manager 10.3启动失败解决方法
License Manager 10.3启动失败解决方法 参考文章: (1)License Manager 10.3启动失败解决方法 (2)https://www.cnblogs.com/xixihu ...
- 计算机网络中常用设备处于脱机状态,win7 64位系统网络正常网页提示处于脱机状态的解决方法...
据了解,win7系统用户平时使用电脑过程中花费时间最多是浏览网页.在浏览网页时有时候会时不时的弹出脱机提示:请求的网页在脱机状态下无法使用.要查看该页请单击"连接".可是我们的网络 ...
- yum处于锁定状态的解决方法
参考:https://www.linuxidc.com/Linux/2019-02/157044.html 使用yum命令时出现 [root@yyj yuanyujing]# yum clean al ...
- Kubernetes 创建pod一直处于ContainerCreating 状态解决过程
= = . 遇到问题了又,创建的pods一直出于ContainerCreating状态. 说一下自己这次的解决流程. 首先去网上搜一搜这种类似问题的解决办法,然后结合自己的情况进行解决. 首先遇到的我 ...
最新文章
- 消除 activity 启动时白屏、黑屏问题
- 模板 - 质数筛法(线性筛法、二次筛法)
- python绘制3维图-python——绘制二元高斯分布的三维图像,
- 如何用python实现自动化_如何使用Python实现自动化水军评论
- leetcode 112. Path Sum, 113. Path Sum II | 112,113. 路径总和 I, II(Java)
- Windows访问令牌相关使用方法
- __ATTRIBUTE__ 你知多少?
- 品鉴贝叶斯公式里的大道理
- 如何在 R 中计算 线性模型 SST、SSR 和 SSE
- 数学模型学习——图与网络
- 计算机教案画圆形和方形,小学信息《画方形和圆形》教学设计
- 更新linux yum源,CentOS 更新yum源
- 【LaTeX笔记12】Latex分栏布局及模板使用
- 计算机三种校验方式,三种校验码
- 医疗信息系统安全事件案例...
- vue 项目实现水印效果
- std::copy与memcpy比较
- 常用DC-DC;AC-DC电源芯片
- python中hub_如何用Python实现hub
- python画图实践(超级简单)