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

【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题

目录

【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题

🔍 问题分析

✅ 解决方案:替代拉取方式导入 pause 镜像

Step 1. 从私有仓库拉取 pause 镜像

Step 2. 重新打 tag 为 Kubernetes 默认命名

Step 3. 导出镜像为 tar 包

Step 4. 拷贝镜像到目标节点

Step 5. 在目标节点导入镜像到 containerd 的 k8s.io 命名空间

Step 6. 验证镜像是否导入成功

📌 注意事项

📎 总结

【运维实战】解决 K8s 节点无法拉取 pause:3.6 镜像导致 API Server 启动失败的问题

在使用 Kubernetes 部署集群过程中,控制面组件 kube-apiserver 启动失败,多个节点处于 NotReady 状态。查看 kubelet 日志发现如下错误:

failed to get sandbox image "registry.k8s.io/pause:3.6": failed to pull image ...
dial tcp 173.194.202.82:443: i/o timeout

这说明节点无法从默认的 registry.k8s.io 拉取 pause:3.6 镜像,直接导致 Pod Sandbox 创建失败,从而影响整个控制平面组件运行。


🔍 问题分析

Kubernetes 默认使用 pause:3.6 镜像作为 Pod 的基础运行环境容器(Pod Sandbox),当节点访问公网受限或 GFW 屏蔽时,将无法拉取该镜像,导致所有 Pod 无法启动。

尽管可以通过修改 kubeletsandboxImage 参数绕过此问题,但某些环境中限制修改 kubelet 配置或容器运行时行为。因此本文采用 镜像替换 + 标准命名空间导入 的方式解决此问题。


✅ 解决方案:替代拉取方式导入 pause 镜像

我们通过手动拉取私有仓库中的 pause 镜像,并转换为标准命名,导入 containerd 默认命名空间,解决拉取失败问题。

Step 1. 从私有仓库拉取 pause 镜像

docker pull 10.130.135.145:30500/pause:3.6

Step 2. 重新打 tag 为 Kubernetes 默认命名

docker tag 10.130.135.145:30500/pause:3.6 registry.k8s.io/pause:3.6

Step 3. 导出镜像为 tar 包

docker save -o pause-3.6.tar registry.k8s.io/pause:3.6

Step 4. 拷贝镜像到目标节点

scp pause-3.6.tar root@<node-ip>:/tmp/

Step 5. 在目标节点导入镜像到 containerd 的 k8s.io 命名空间

sudo ctr -n k8s.io images import /tmp/pause-3.6.tar

Step 6. 验证镜像是否导入成功

sudo ctr -n k8s.io images ls | grep "pause:3.6"

输出如下表示成功:

registry.k8s.io/pause:3.6   ...   linux/amd64

📌 注意事项

  • 若使用 containerd,请确保命令中使用了 -n k8s.io 命名空间;

  • 若使用的是 crictl 工具,也可使用 crictl pull registry.k8s.io/pause:3.6 进行验证;

  • pause 镜像是所有 Pod 的基础容器,缺失将影响整个集群功能;

  • 建议在所有节点均完成此操作。


📎 总结

通过将 pause:3.6 镜像从私有仓库拉取并导入到 Kubernetes 标准命名,成功绕过公网拉取失败问题。这种方法无需修改 kubelet 配置,适用于限制场景,是生产环境中一个高效可靠的实战技巧。

http://www.xdnf.cn/news/15081.html

相关文章:

  • 在指定conda 环境里安装 jupyter 和 python kernel的方法
  • vscode和插件用法
  • 「莫尔物理新范式」普林斯顿马普所合作Nature论文:SnSe₂/ZrS₂扭曲双层实现M点能谷调控与拓扑新效应
  • 如何设计一个登录管理系统:单点登录系统架构设计
  • 寒武纪MLU370编程陷阱:float32精度丢失的硬件级解决方案——混合精度训练中的定点数补偿算法设计
  • 字节 Seed 团队联合清华大学智能产业研究院开源 MemAgent: 基于多轮对话强化学习记忆代理的长文本大语言模型重构
  • 微服务架构的演进:迈向云原生——Java技术栈的实践之路
  • 西电考研录取:哪些省份考研上岸西电更容易?
  • 浏览器 实时监听音量 实时语音识别 vue js
  • 人大金仓教程
  • 【基础架构】——软件系统复杂度的来源(低成本、安全、规模)
  • 【基于大模型 + FAISS 的本地知识库与智能 PPT 生成系统:从架构到实现】
  • chatgpt是怎么诞生的,详解GPT1到GPT4的演化之路及相关背景知识
  • WebGPU了解
  • 二、深度学习——损失函数
  • AI技术如何重塑你的工作与行业?——实战案例解析与效率提升路径
  • 华为OD机试_2025 B卷_观看文艺汇演问题(Python,100分)(附详细解题思路)
  • Java零基础笔记09(Java编程核心:面向对象编程高级练习:支付模块)
  • 【01】MFC入门到精通—— MFC新建基于对话框的项目 介绍(工作界面、资源视图 、类视图)
  • 前端开发流程设计详解
  • AMIS全栈低代码开发
  • python Gui界面小白入门学习
  • 数据一致性解决方案总结
  • Java结构型模式---装饰者模式
  • 【通识】NodeJS基础
  • jmeter做跨线程组
  • 【LeetCode207.课程表】以及变式
  • Redis数据淘汰策略
  • 从0开始学习R语言--Day42--LM检验
  • 旅游管理实训室建设的关键要点探讨