【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

时间:2024-09-30 22:39:23

k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

  • 一、环境介绍
    • 1.1 本次环境规划
    • 1.2 kubernetes简介
    • 1.3 kubernetes特点
  • 二、本次实践介绍
    • 2.1 本次实践介绍
    • 2.2 报错场景
  • 三、查看报错日志
    • 3.1 查看pod描述信息
    • 3.2 查看pod日志
  • 四、报错分析
  • 五、故障处理方法
  • 六、检查集群状态

在这里插入图片描述

一、环境介绍

1.1 本次环境规划

  • 本次环境规划介绍
hostname IP地址 操作系统版本 k8s版本 角色
k8s-master 192.168.3.201 centos7.6 v1.27.4 master节点
k8s-node01 192.168.3.202 centos7.6 v1.27.4 worker节点
k8s-node02 192.168.3.203 centos7.6 v1.27.4 worker节点

1.2 kubernetes简介

Kubernetes(简称为"k8s")是一种开源平台,用于自动化部署、扩展和管理容器化应用程序。Kubernetes最初是由Google设计并开源的,它旨在帮助开发者更轻松地部署和管理应用程序,以及更好地利用云计算的优势。Kubernetes提供了一个可扩展的系统,用于自动化部署、扩展和管理容器化的应用程序和服务。它可以管理多个容器化应用程序和服务,并提供了一致的部署、扩展和管理方式,使得应用程序的维护更加容易。

1.3 kubernetes特点

  • 容器编排:Kubernetes提供了一种容器编排机制,可以自动将容器部署到集群中的节点上,并提供负载均衡、扩展和自动恢复等功能。
  • 自动化运维:Kubernetes提供了一种自动化运维机制,可以自动处理节点故障、容器故障、网络故障等情况,并确保应用程序的高可用性。
  • 可扩展性:Kubernetes可以扩展到数千个节点,并支持多租户模式,使得它适用于云计算和企业应用。
  • 兼容性:Kubernetes可以运行在多种云平台和操作系统上,并支持多种容器运行时,如Docker、CRI-O等。

二、本次实践介绍

2.1 本次实践介绍

1.本次实践为在k8s环境中部署flatnotes笔记工具;
2.在查看所有系统pod状态时候,发现calico-kube-controllers状态为“ImagePullBackOff”。
3.解决此pod异常,使本地k8s集群处于可用正常状态。

2.2 报错场景

使用以下命令,查看所有系统pod状态,发现calico-kube-controllers状态为“ImagePullBackOff”。

[root@k8s-master ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS             RESTARTS         AGE
default       nfs-client-provisioner-86b7fb96cc-9wlfx    1/1     Running            37 (3m16s ago)   157d
kube-system   calico-kube-controllers-85578c44bf-8xg6x   0/1     ImagePullBackOff   0                6h6m
kube-system   calico-node-8tts7                          1/1     Running            15 (14m ago)     355d
kube-system   calico-node-fx8mv                          1/1     Running            17 (14m ago)     355d
kube-system   calico-node-n8rt4                          1/1     Running            18 (14m ago)     355d
kube-system   coredns-7bdc4cb885-9dbfp                   1/1     Running            6 (14m ago)      6h6m
kube-system   coredns-7bdc4cb885-g49qn                   1/1     Running            4 (14m ago)      6h6m
kube-system   etcd-k8s-master                            1/1     Running            16 (14m ago)     355d
kube-system   kube-apiserver-k8s-master                  1/1     Running            18 (14m ago)     355d
kube-system   kube-controller-manager-k8s-master         1/1     Running            52 (3m11s ago)   355d
kube-system   kube-proxy-6vvw5                           1/1     Running            15 (14m ago)     355d
kube-system   kube-proxy-867jg                           1/1     Running            15 (14m ago)     355d
kube-system   kube-proxy-lgsc8                           1/1     Running            15 (14m ago)     355d
kube-system   kube-scheduler-k8s-master                  1/1     Running            51 (2m22s ago)   355d
kube-system   metrics-server-5bb4678945-5dd4j            1/1     Running            6 (13m ago)      6h6m
kube-system   metrics-server-5bb4678945-m8fn7            1/1     Running            35 (13m ago)     222d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述

三、查看报错日志

3.1 查看pod描述信息

通过查看该pod的描述信息,发现其镜像拉取失败。

kubectl describe pods -n kube-system calico-kube-controllers-85578c44bf-8xg6x
  • 1

在这里插入图片描述

3.2 查看pod日志

检查该问题pod日志,确定了该故障原因为镜像拉取失败造成。

[root@k8s-master ~]# kubectl logs  -n kube-system calico-kube-controllers-85578c44bf-8xg6x
Error from server (BadRequest): container "calico-kube-controllers" in pod "calico-kube-controllers-85578c44bf-8xg6x" is waiting to start: trying and failing to pull image
  • 1
  • 2

四、报错分析

由于近期各大厂商的容器镜像服务限制等原因,造成大部分时候镜像拉取失败,故当本地没有该镜像需要拉取时候,就会出现异常。

  • 检查k8s的master节点本地镜像
[root@k8s-master ~]# crictl images
IMAGE                                                             TAG                 IMAGE ID            SIZE
/calico/cni                                              v3.26.1             9dee260ef7f59       93.4MB
/calico/node                                             v3.26.1             8065b798a4d67       86.6MB
/google_containers/coredns                   v1.10.1             ead0a4a53df89       16.2MB
/google_containers/etcd                      3.5.7-0             86b6af7dd652c       102MB
/google_containers/kube-apiserver            v1.27.4             e7972205b6614       33.4MB
/google_containers/kube-controller-manager   v1.27.4             f466468864b7a       31MB
/google_containers/kube-proxy                v1.27.4             6848d7eda0341       23.9MB
/google_containers/kube-scheduler            v1.27.4             98ef2570f3cde       18.2MB
/google_containers/pause                     3.6                 6270bb605e12e       302kB
/google_containers/pause                     3.9                 e6f1816883972       322kB
/hub/kruise-manager   v1.0.1              6be1df0067c40       81.3MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 查询该pod的镜像名称
kubectl edit  pods  -n kube-system calico-kube-controllers-85578c44bf-8xg6x
  • 1

在这里插入图片描述

五、故障处理方法

使用以下命令,修改该pod的镜像名为/jeson/kube-controllers:v3.26.1

kubectl edit  pods  -n kube-system calico-kube-controllers-85578c44bf-8xg6x
  • 1

在这里插入图片描述

六、检查集群状态

修改为改镜像后,重新查看k8s集群状态,发现所有系统pod都已经恢复正常状态了。

[root@k8s-master ~]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS       AGE
default       nfs-client-provisioner-86b7fb96cc-9wlfx    1/1     Running   37 (14m ago)   157d
kube-system   calico-kube-controllers-85578c44bf-8xg6x   1/1     Running   0              6h17m
kube-system   calico-node-8tts7                          1/1     Running   15 (25m ago)   355d
kube-system   calico-node-fx8mv                          1/1     Running   17 (25m ago)   355d
kube-system   calico-node-n8rt4                          1/1     Running   18 (25m ago)   355d
kube-system   coredns-7bdc4cb885-9dbfp                   1/1     Running   6 (25m ago)    6h17m
kube-system   coredns-7bdc4cb885-g49qn                   1/1     Running   4 (25m ago)    6h17m
kube-system   etcd-k8s-master                            1/1     Running   16 (25m ago)   355d
kube-system   kube-apiserver-k8s-master                  1/1     Running   18 (25m ago)   355d
kube-system   kube-controller-manager-k8s-master         1/1     Running   52 (14m ago)   355d
kube-system   kube-proxy-6vvw5                           1/1     Running   15 (25m ago)   355d
kube-system   kube-proxy-867jg                           1/1     Running   15 (25m ago)   355d
kube-system   kube-proxy-lgsc8                           1/1     Running   15 (25m ago)   355d
kube-system   kube-scheduler-k8s-master                  1/1     Running   51 (13m ago)   355d
kube-system   metrics-server-5bb4678945-5dd4j            1/1     Running   6 (24m ago)    6h17m
kube-system   metrics-server-5bb4678945-m8fn7            1/1     Running   35 (24m ago)   222d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18