使用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状态的解决方法相关推荐

  1. Windows 10 安装SVN 不显示状态图标--解决方法

    Windows 10 安装SVN 不显示状态图标--解决方法 参考文章: (1)Windows 10 安装SVN 不显示状态图标--解决方法 (2)https://www.cnblogs.com/lz ...

  2. ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法

    ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法 参考文章: (1)ORA-01502:索引或这类索引的分区处于不可用状态 的解决方法 (2)https://www.cnblogs. ...

  3. ArcGIS Engine 10 开发常见问题的解决方法

    ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...

  4. Kubernetes master无法加入etcd 集群解决方法

    Kubernetes master无法加入etcd 集群解决方法 参考文章: (1)Kubernetes master无法加入etcd 集群解决方法 (2)https://www.cnblogs.co ...

  5. elasticsearch 单节点状态yellow解决方法

    docker  elasticsearch 单节点状态yellow解决方法 kibana+elasticsearch使用ik分词器发现同一个请求,有时会报错,有时成功 原因是单节点状态下无法分配rep ...

  6. linux服务器上tcp有大量time_wait状态的解决方法和原因解释

    在检查服务器时,发现有很多连接超时情况出现,用netstat命令查看,tcp的time_wait状态较多,需要进行优化. 1. 看一下现在time_wait的数量 netstat -an | grep ...

  7. License Manager 10.3启动失败解决方法

    License Manager 10.3启动失败解决方法 参考文章: (1)License Manager 10.3启动失败解决方法 (2)https://www.cnblogs.com/xixihu ...

  8. 计算机网络中常用设备处于脱机状态,win7 64位系统网络正常网页提示处于脱机状态的解决方法...

    据了解,win7系统用户平时使用电脑过程中花费时间最多是浏览网页.在浏览网页时有时候会时不时的弹出脱机提示:请求的网页在脱机状态下无法使用.要查看该页请单击"连接".可是我们的网络 ...

  9. yum处于锁定状态的解决方法

    参考:https://www.linuxidc.com/Linux/2019-02/157044.html 使用yum命令时出现 [root@yyj yuanyujing]# yum clean al ...

  10. Kubernetes 创建pod一直处于ContainerCreating 状态解决过程

    = = . 遇到问题了又,创建的pods一直出于ContainerCreating状态. 说一下自己这次的解决流程. 首先去网上搜一搜这种类似问题的解决办法,然后结合自己的情况进行解决. 首先遇到的我 ...

最新文章

  1. 消除 activity 启动时白屏、黑屏问题
  2. 模板 - 质数筛法(线性筛法、二次筛法)
  3. python绘制3维图-python——绘制二元高斯分布的三维图像,
  4. 如何用python实现自动化_如何使用Python实现自动化水军评论
  5. leetcode 112. Path Sum, 113. Path Sum II | 112,113. 路径总和 I, II(Java)
  6. Windows访问令牌相关使用方法
  7. __ATTRIBUTE__ 你知多少?
  8. 品鉴贝叶斯公式里的大道理
  9. 如何在 R 中计算 线性模型 SST、SSR 和 SSE
  10. 数学模型学习——图与网络
  11. 计算机教案画圆形和方形,小学信息《画方形和圆形》教学设计
  12. 更新linux yum源,CentOS 更新yum源
  13. 【LaTeX笔记12】Latex分栏布局及模板使用
  14. 计算机三种校验方式,三种校验码
  15. 医疗信息系统安全事件案例...
  16. vue 项目实现水印效果
  17. std::copy与memcpy比较
  18. 常用DC-DC;AC-DC电源芯片
  19. python中hub_如何用Python实现hub
  20. python画图实践(超级简单)

热门文章

  1. 基于simulink的有源功率因数校正(APFC) 系统的性能仿真
  2. C语言植物大战僵尸辅助(含源码),实现无尽模式最轻松的打法
  3. 浅析高速公路网络数据集制作
  4. 公路通用复化辛普森公式匝道点位坐标计算4800源程序
  5. iOS-纯代码编写本地音乐播放器AVAudioPlayer
  6. 移动通信基础(12)分集
  7. 360安全浏览器支持国密功能
  8. 计算机组成原理实验移位运算,移位运算实验
  9. 全面了解什么是TPS、QPS以及两者的区别
  10. [渝粤教育] 四川大学 营养与食品卫生学Ⅱ 参考 资料