目 录CONTENT

文章目录

KubeSphere闭源后流水线构建与镜像拉取问题解决方案

Administrator
2025-08-05 / 0 评论 / 2 点赞 / 39 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

KubeSphere闭源后流水线构建与镜像拉取问题解决方案

问题背景

近期KubeSphere从开源转为闭源后,部分用户反馈以下问题:

  1. 流水线构建时Pod持续处于Creating状态
  2. 其他Pod卡在镜像拉取步骤(ImagePullBackOff)

结合闭源转型背景,问题核心源于镜像仓库配置变更及私有仓库适配问题。本文提供系统性解决方案,涵盖配置调整、风险规避及操作实践。

问题根源分析

1. 镜像仓库配置失效

KubeSphere闭源后,默认公共镜像仓库服务被移除,需手动配置私有仓库(如Harbor、阿里云镜像服务)。若未及时调整,将导致Pod无法拉取镜像。

2. Docker配置兼容性问题

daemon.json配置中registry-mirrors字段指向的公共镜像源(如阿里云)在闭源后失效,需替换为可靠的私有仓库地址。示例配置如下:

{
  "registry-mirrors": [
    "http://k8s-harbor:30002",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io",
    "https://docker.1panel.top"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {"max-size": "100m"},
  "storage-driver": "overlay2"
}

操作步骤

  1. 修改/etc/docker/daemon.json文件,替换为上述配置。
  2. 执行以下命令重载服务:
    sudo systemctl reload docker
    
    参考文档:Docker服务重启与容器持久化指南

3. 闭源后的镜像库风险

KubeSphere官方在7月底清空了代码库、文档库及镜像库,导致部分镜像无法拉取。建议立即执行本地镜像备份,避免业务中断。

解决方案

批量备份与恢复镜像

(1) 批量打包镜像

在服务器上执行以下脚本,将所有本地镜像保存为.tar文件:

tee save.sh <<'EOF'
#!/bin/bash
set -x
# 指定保存镜像的目录
OUTPUT_DIR="./images"
mkdir -p "$OUTPUT_DIR"
 
# 获取所有本地镜像列表
IMAGE_LIST=$(docker images --format "{{.Repository}}:{{.Tag}}")
 
# 遍历每个镜像并保存为 tar 文件
for IMAGE in $IMAGE_LIST; do
  IMAGE_NAME=$(echo "$IMAGE" | sed 's/.*\///' | sed 's/:/-/')
  IMAGE_TAR="$OUTPUT_DIR/$IMAGE_NAME.tar"
  echo "Saving $IMAGE to $IMAGE_TAR"
  docker save -o "$IMAGE_TAR" "$IMAGE"
done
 
echo "All images saved to $OUTPUT_DIR"
EOF

(2) 批量加载镜像

在目标服务器上执行以下脚本,从.tar文件恢复镜像:

tee load.sh <<'EOF'
#!/bin/bash
set -x
# 指定包含镜像 tar 包的目录
IMAGES_DIR="./images"

# 循环处理目录下的所有 tar 包
for TAR_FILE in ${IMAGES_DIR}/*.tar; do
  # 输出正在加载的镜像文件
  echo "Loading image from: ${TAR_FILE}"

  # 使用 docker load 加载镜像
  docker load -i ${TAR_FILE}

  # 检查 docker load 的返回状态
  if [ $? -eq 0 ]; then
    echo "Image loaded successfully."
  else
    echo "Failed to load image."
  fi
done

echo "All images loaded from ${IMAGES_DIR}"
EOF

脚本参考:Docker镜像批量备份与恢复实践

批量删除已有的问题pod

当前集群存在几十个因无法拉取镜像的问题镜像,当个pod删比较耗时,因此使用一个命令统一删除。

# 一键删除所有关键字的pod
kubectl get pods --all-namespaces | grep -E 'Complete|CrashLoopBackOff|Evicted|Error|ImagePullBackOff|Terminating' |awk '{print $1,$2}' | xargs -n2 kubectl delete pods --grace-period=0 --force -n

命令参考:Docker镜像批量管理工具:打包、加载、打Tag与推送脚本

总结

通过配置私有镜像仓库、备份本地镜像,可系统性解决KubeSphere闭源后的Pod创建与镜像拉取问题。建议立即执行镜像备份,并密切关注KubeSphere官方动态,确保业务连续性。如问题持续,可联系张师傅寻求帮助。

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区