当前位置: 首页 > news >正文

K8s Error: ImagePullBackOff 故障排除

Error: ImagePullBackOff 故障排除

1. 起因

起因是要在一组k8s环境下做个Prometheus的测试,当时虚拟机用完直接暂停了.
启动完master和node节点后重启了这些节点.
当检查dashboard时候发现Pod处于ImagePullBackOff状态,使用命令查看详细情况

kubectl describe pods -n kubernetes-dashboard kubernetes-dashboard-6948fdc5fd-7szc9

发现镜像拉取失败

1.1 报错信息如下:

Events:Type     Reason          Age                From               Message----     ------          ----               ----               -------Normal   Scheduled       25s                default-scheduler  Successfully assigned kubernetes-dashboard/kubernetes-dashboard-6948fdc5fd-7szc9 to 192.168.31.112Normal   SandboxChanged  23s                kubelet            Pod sandbox changed, it will be killed and re-created.Normal   BackOff         20s (x3 over 22s)  kubelet            Back-off pulling image "harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0"Warning  Failed          20s (x3 over 22s)  kubelet            Error: ImagePullBackOffNormal   Pulling         9s (x2 over 24s)   kubelet            Pulling image "harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0"Warning  Failed          9s (x2 over 24s)   kubelet            Failed to pull image "harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0": rpc error: code = Unknown desc = Error response from daemon: Get "https://harbor.intra.com/v2/": x509: certificate signed by unknown authorityWarning  Failed          9s (x2 over 24s)   kubelet            Error: ErrImagePull

2. 排查思路

这个故障明显是由于node节点拉取harbor中镜像失败造成.那么可能的原因就是以下几点,我们对此一一排查

  1. harbor.intra.com解析错误或者服务器没有启动,使用ping命令排查
  2. harbor.intra.com上harbor服务异常造成,使用网页浏览或者curl命令排查
  3. node节点到harbor身份验证异常,docker login检查.检查daemon.json和config.json

2.1 ping harbor

直接到node2节点ping

root@k8s-node-2:~# ping harbor.intra.com -c 3
PING harbor.intra.com (192.168.31.189) 56(84) bytes of data.
64 bytes from harbor.intra.com (192.168.31.189): icmp_seq=1 ttl=64 time=0.249 ms
64 bytes from harbor.intra.com (192.168.31.189): icmp_seq=2 ttl=64 time=1.36 ms
64 bytes from harbor.intra.com (192.168.31.189): icmp_seq=3 ttl=64 time=0.108 ms

现在确定ping是正常的,那么至少服务器我们开了

2.2 检查harbor服务是否正常

用curl测试下harbor是否通

root@k8s-node-2:~# curl https://harbor.intra.com/harbor -k
<!doctype html>
<html><head><meta charset="utf-8"><title>Harbor</title><base href="/"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico?v=2"><link rel="preload" as="style" href="./light-theme.css?buildTimestamp=1639627836207"><link rel="preload" as="style" href="./dark-theme.css?buildTimestamp=1639627836207">
<link rel="stylesheet" href="styles.e71e5822ddf4adf262c4.css"></head>
<body><harbor-app><div class="spinner spinner-lg app-loading app-loading-fixed">Loading...</div></harbor-app>
<script src="runtime.5ed5a3869dd69991407a.js" defer></script><script src="polyfills.a5e9bc0ea6dbbbdc0878.js" defer></script><script src="scripts.fc1928a0f22676249790.js" defer></script><script src="main.8b949aee92f43fe7c3ab.js" defer></script></body>

这里我们确认了harbor服务是正常的,通过网页也能访问到
在这里插入图片描述

2.3 docker login harbor

此时发生了报错,明显是验证失败了.且失败原因是没有授权的仓库造成的.

root@k8s-node-2:~# docker login https://harbor.intra.com
Password: ting with existing credentials...
Error: Password Requiredrror: Error response from daemon: Get "https://harbor.intra.com/v2/": x509: certificate signed by unknown authority

那么我们到node1上试下是否登录harbor成功

root@k8s-node-1:~# docker login https://harbor.intra.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

那么我们将node1的/etc/docker/daemon.json同步到node2上

root@k8s-node-1:~# scp /etc/docker/daemon.json 192.168.31.112:/etc/docker/daemon.json
root@192.168.31.112's password:
daemon.json      

再到node2上重启docker服务,此时可以看到授权的镜像仓库里有了https://harbor.intra.com/

root@k8s-node-2:~# systemctl restart docker
root@k8s-node-2:~# docker info |tail -10
WARNING: No swap limit support
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabledInsecure Registries:127.0.0.0/8192.168.31.0/24Registry Mirrors:https://docker.mirrors.ustc.edu.cn/http://hub-mirror.c.163.com/https://harbor.intra.com/https://192.168.31.189/Live Restore Enabled: true

3. 解决

尝试再次登录harbor并拉取镜像

root@k8s-node-2:~# docker login https://harbor.intra.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
root@k8s-node-2:~# docker pull harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0
v2.4.0: Pulling from baseimages/kubernetesui/dashboard
Digest: sha256:2d2ac5c357a97715ee42b2186fda39527b826fdd7df9f7ade56b9328efc92041
Status: Image is up to date for harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0
harbor.intra.com/baseimages/kubernetesui/dashboard:v2.4.0

此时dashboard pod状态也变成了Running

root@k8s-master-01:~# kubectl get pod -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS      AGE
dashboard-metrics-scraper-6848d4dd7d-g7k6b   1/1     Running   4 (49m ago)   226d
kubernetes-dashboard-6948fdc5fd-7szc9        1/1     Running   0             6m2s
http://www.lryc.cn/news/215963.html

相关文章:

  • 爬虫之爬虫介绍、requests模块、携带请求参数、url 编码和解码、携带请求头
  • pytorch笔记:split
  • K8S运维 解决openjdk:8-jdk-alpine镜像时区和字体问题
  • Kubectl详解(陈述式、声明式)
  • 使用HttpClient库的爬虫程序
  • VSIX:C#项目 重命名所有标识符(Visual Studio扩展开发)
  • 【CSDN 每日一练 ★★☆】【动态规划】最小路径和
  • 前端学习之webpack的使用
  • 【java学习—十一】泛型(1)
  • CN考研真题知识点二轮归纳(4)
  • ROS学习笔记(4):ROS架构和通讯机制
  • 深度新闻稿件怎么写?新闻稿怎么写得有深度?
  • 百度智能云千帆大模型平台黑客马拉松报名开启!
  • 数据库 | 看这一篇就够了!最全MySQL数据库知识框架!
  • Android 控件背景实现发光效果
  • 安全狗亮相厦门市工信领域数据安全宣贯培训会
  • 最长回文子串
  • 从瀑布模式到水母模式:ChatGPT引领软件研发的革新之路
  • 一种使用wireshark快速分析抓包文件amr音频流的思路方法
  • 银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit
  • InnoDB - 双写机制
  • 【蓝桥杯选拔赛真题08】C++最大值最小值平均值 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析
  • 软考高级系统架构设计师系列之:系统开发基础知识、项目管理、信息安全和网络安全、计算机网络章节选择题详解
  • 0基础学习PyFlink——时间滑动窗口(Sliding Time Windows)
  • API安全之《大话:API的前世今生》
  • H5或者Vue实现二维码识别
  • stm32整理(三)ADC
  • Redis-持久化+主从架构
  • STM32H750之FreeRTOS学习--------(四)中断管理
  • Macroscope安全漏洞检测工具简介