kubesphere的告别,从可用环境提取Kubesphere镜像

今早我像往常一样部署Kubesphere相关组件,因为昨天把集群重置了,结果却遇到了ks console的镜像拉取失败的问题。反复检查网络和配置后,才得知Kubesphere开源版暂停下载与支持的消息。说实话当时有点震惊,太突然了,作为一名Kubesphere扩展插件开发者,这突如其来的变动确实让人有些措手不及,kubesphere是一个很棒的社区,可是这样的告别方式难免让人遗憾。

但问题总要解决。对于正在运行的系统而言,当远程镜像仓库无法访问时,从现有正常环境中提取并迁移镜像,是最直接高效的应急方案。以下是我整理的完整操作流程,适用于类似的镜像拉取故障场景。

一、前提条件

  • 一台正常运行Kubesphere的源主机(已包含所需镜像)
  • 需要修复的目标主机(与源主机网络互通或可通过存储介质传输文件)

二、具体操作步骤

第一步:在源主机提取目标镜像

在正常运行Kubesphere的机器上,通过Docker命令导出所需镜像:

  1. 查询镜像完整信息

    首先确定需要提取的镜像名称和标签,以ks-console为例:

    bash 复制代码
    # 列出包含关键词的镜像,精确匹配目标镜像
    docker images | grep "ks-console"

    假设输出结果如下(请记录完整的镜像名和标签):

    plaintext 复制代码
    swr.cn-southwest-2.myhuaweicloud.com/ks/kubesphere/ks-console   v4.1.3   abc12345   2 weeks ago   500MB
  2. 导出镜像为tar包

    使用docker save命令将镜像导出为本地文件:

    bash 复制代码
    # 格式:docker save -o [输出文件名] [镜像名:标签]
    docker save -o ks-console-v4.1.3.tar swr.cn-southwest-2.myhuaweicloud.com/ks/kubesphere/ks-console:v4.1.3

    执行后,当前目录会生成ks-console-v4.1.3.tar文件(大小根据镜像而定,通常为几百MB)。

第二步:传输镜像文件到目标主机

将导出的tar包传输到需要修复的主机,可根据网络环境选择以下方式:

  1. 通过scp命令传输(适用于网络互通场景):

    bash 复制代码
    # 从源主机推送至目标主机(替换目标主机IP、用户名和路径)
    scp ks-console-v4.1.3.tar username@192.168.1.100:/home/username/
  2. 通过存储介质传输 (适用于无网络连接场景):

    将tar包复制到U盘等存储设备,再挂载到目标主机并复制文件。

第三步:在目标主机导入镜像

在需要修复的主机上,加载传输过来的镜像文件:

  1. 加载镜像到Docker

    bash 复制代码
    # 进入文件存放目录,执行加载命令
    cd /home/username/
    docker load -i ks-console-v4.1.3.tar

    加载完成后,通过docker images | grep ks-console确认镜像已成功导入。

  2. 多节点集群的额外操作

    若目标环境是Kubernetes多节点集群,需将镜像导入所有节点(避免Pod调度到无镜像的节点)。可重复上述传输和导入步骤,或通过集群内私有仓库(如Harbor)统一分发。

第四步:配置Kubernetes使用本地镜像

为确保Kubernetes优先使用本地镜像而非远程拉取,需调整镜像拉取策略:

在通过Helm安装或升级Kubesphere组件时,指定imagePullPolicy: IfNotPresent参数:

bash 复制代码
helm upgrade --install -n kubesphere-system ks-core \
  --set ksConsole.image.pullPolicy=IfNotPresent \
  # 其他参数保持不变

该配置表示:仅当本地不存在该镜像时,才从远程仓库拉取。

三、扩展说明

  • 上述方法适用于所有Docker镜像的迁移,不仅限于Kubesphere相关组件。
  • 对于频繁需要镜像迁移的场景,建议搭建私有镜像仓库(如Harbor),通过docker pushdocker pull实现更高效的分发。

后面应该还会有其他贡献者会把ks的其他文档和镜像开源,无需担心。但我还是希望ks社区越来越好,我理解 KubeSphere 的"转身",但遗憾它没有好好告别~

相关推荐
程序员爱钓鱼1 天前
Node.js 编程实战:测试与调试 —— 调试技巧与性能分析
前端·后端·node.js
小杨同学491 天前
C 语言贪心算法实战:解决经典活动选择问题
后端
+VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue物流配送中心信息化管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·小程序·课程设计
qq_12498707531 天前
基于微信小程序的宠物交易平台的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·毕业设计·计算机毕业设计
禹曦a1 天前
Java实战:Spring Boot 构建电商订单管理系统RESTful API
java·开发语言·spring boot·后端·restful
superman超哥1 天前
精确大小迭代器(ExactSizeIterator):Rust性能优化的隐藏利器
开发语言·后端·rust·编程语言·rust性能优化·精确大小迭代器
guchen661 天前
WPF拖拽功能问题分析与解决方案
后端
Smoothzjc1 天前
别再只把AI当聊天机器人了!揭秘大模型进化的终极形态,看完颠覆你的认知!
后端·langchain·ai编程
superman超哥1 天前
惰性求值(Lazy Evaluation)机制:Rust 中的优雅与高效
开发语言·后端·rust·编程语言·lazy evaluation·rust惰性求值