【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