Kubernetes ImagePullBackOff 镜像拉取失败的排查与修复实践
## 适用场景 这篇文章适用于 Pod 一直停留在 `Pending`、`ErrImagePull` 或 `ImagePullBackOff`,业务发布后没有新实例可用的场景。常见环境包括自建 Kubernetes、云厂商托管集群、私有镜像仓库 Harbor、阿里云/腾讯云镜像仓库,以及通过 CI/CD 自动更新镜像
技术笔记、项目复盘、阅读摘录和问题清单。
## 适用场景 这篇文章适用于 Pod 一直停留在 `Pending`、`ErrImagePull` 或 `ImagePullBackOff`,业务发布后没有新实例可用的场景。常见环境包括自建 Kubernetes、云厂商托管集群、私有镜像仓库 Harbor、阿里云/腾讯云镜像仓库,以及通过 CI/CD 自动更新镜像
## 适用场景 本文适用于线上 Redis 开启 AOF 持久化后,业务在某些时间段出现接口变慢、写入超时、Redis `used_cpu_sys` 升高、磁盘 `await` 或 `util` 接近打满的场景。常见部署形态包括单机 Redis、主从 Redis、哨兵架构,以及运行在云主机本地盘或云盘上的 Redis
## 适用场景 本文适用于 Linux 主机、NAT 网关、Docker 宿主机、Kubernetes Node 或开启防火墙规则的服务器。当业务出现偶发连接超时、DNS 查询失败、服务间调用间歇性失败,而 CPU、内存、磁盘都看起来正常时,可以把 conntrack 连接跟踪表作为重点排查对象。 典型环境包括:
## 适用场景 这类问题常见于 Ubuntu、Debian 或启用了 `systemd-resolved` 的 Linux 主机:宿主机可以正常解析域名,但 Docker 容器内访问外部域名失败,表现为应用请求超时、包管理器无法安装依赖、容器启动后健康检查一直失败。 典型环境包括: - 宿主机使用 Docker
## 适用场景 这篇文章适用于 Nginx 接入 Filebeat、Logstash、Elasticsearch 或其他日志平台后,出现下面几类问题的场景: - Nginx 访问日志本地已经写入,但日志平台几分钟后才看到。 - 部分时间段日志缺失,业务同学按 trace id 或客户端 IP 查不到请求。 - 日志
## 适用场景 本文适用于 Kubernetes 中业务 Pod 间歇性进入 `CrashLoopBackOff`、`RestartCount` 持续增长、服务短时间不可用,但应用日志里又看不到明确业务异常的场景。常见于 Spring Boot、Django、Go HTTP 服务、Node.js 服务等 Web 应用
## 适用场景 本文适用于 Prometheus 已经配置了 `scrape_configs`,但在 Targets 页面看到目标实例显示 `DOWN`,或者 PromQL 查询 `up{job="xxx"} == 0` 的场景。常见对象包括 node_exporter、应用自暴露的 `/metrics`、Kuber
## 适用场景 这篇文章适用于使用 Python `httpx` 调用内部 HTTP 接口、第三方 API、网关或微服务时,线上偶发出现请求超时、任务堆积、接口吞吐下降的问题。常见场景包括: - 定时任务批量调用接口; - FastAPI、Django、Celery worker 中复用 `httpx.Client
## 适用场景 这篇文章适用于线上服务突然退出、容器被重启、systemd 日志里只有 `Killed`、监控显示内存瞬时打满,但应用日志没有明确异常栈的场景。常见环境包括物理机、云主机、Docker 容器和 Kubernetes 节点。 OOM Killer 的本质是内核在内存不可回收时主动选择进程终止,以保证系
## 适用场景 这篇文章适用于 MySQL 5.7、MySQL 8.0 或兼容 MySQL 协议的数据库中,执行 `ALTER TABLE`、`CREATE INDEX`、`DROP INDEX`、`TRUNCATE TABLE` 等 DDL 时长时间不返回,同时业务侧出现接口变慢、连接数升高、写入卡住等问题的场景。