7.2 KiB
7.2 KiB
K8s 常用镜像批量缓存报告
日期: 2025-12-31 执行时间: 约 30 分钟 总镜像数: 68 个
📊 缓存统计
| 项目 | 数量 | 百分比 |
|---|---|---|
| 总计 | 68 | 100% |
| 成功 | 39 | 57.4% ✅ |
| 失败 | 29 | 42.6% ❌ |
✅ 成功缓存的镜像类别
1. registry.k8s.io 镜像(部分)
- ✅ metrics-server:v0.7.2, v0.7.1
- ✅ prometheus-adapter:v0.12.0, v0.11.2
- ✅ kube-state-metrics:v2.13.0, v2.12.0
- ✅ ingress-nginx/controller:v1.11.2, v1.10.1
- ✅ pause:3.10
- ✅ coredns:v1.11.1
- ✅ autoscaling/vpa-recommender:1.2.0
- ✅ autoscaling/cluster-autoscaler:v1.30.0
- ✅ dns/k8s-dns-node-cache:1.23.1
- ✅ sig-storage/csi-*(多个 CSI 驱动组件)
2. Docker Hub 镜像
- ✅ busybox:latest, 1.36, 1.36-musl
- ✅ alpine:latest, 3.20, 3.19
- ✅ curlimages/curl:latest, 8.11.1
- ✅ grafana/grafana:11.4.0, 11.3.1, latest
- ✅ grafana/loki:3.3.2, 3.3.1
- ✅ grafana/promtail:3.3.2
- ✅ grafana/tempo:2.7.2
- ✅ prometheuscommunity/postgres-exporter:v0.15.0
- ✅ prom/mysqld-exporter:v0.16.0
- ✅ oliver006/redis_exporter:v1.66.0
- ✅ aquasec/trivy:latest
- ✅ aquasec/trivy-operator:0.29.0
- ✅ velero/velero-plugin-for-aws:v1.11.0
3. 成功率分析
- registry.k8s.io: ~60% 成功(EU Harbor k8s-proxy 有缓存的镜像)
- Docker Hub: ~80% 成功(EU Harbor dockerhub-proxy 代理良好)
- quay.io: 0% 成功(EU Harbor 未配置代理)
- ghcr.io: 0% 成功(EU Harbor 未配置代理)
❌ 失败的镜像(29 个)
1. registry.k8s.io 镜像(11 个)
registry.k8s.io/pause:3.9
registry.k8s.io/coredns/coredns:v1.11.3
registry.k8s.io/ingress-nginx/controller:v1.11.3
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231226-1a7112e06
registry.k8s.io/autoscaling/vpa-updater:1.2.0
registry.k8s.io/autoscaling/vpa-admission-controller:1.2.0
registry.k8s.io/dns/k8s-dns-node-cache:1.23.0
registry.k8s.io/sig-storage/livenessprobe:v2.14.0
registry.k8s.io/gateway-api/admission-server:v1.2.0
registry.k8s.io/dashboard/dashboard:v2.7.0
registry.k8s.io/dashboard/metrics-scraper:v1.0.9
原因: EU Harbor k8s-proxy 未缓存这些镜像
2. quay.io 镜像(11 个)
quay.io/jetstack/cert-manager-controller:v1.16.2
quay.io/jetstack/cert-manager-webhook:v1.16.2
quay.io/jetstack/cert-manager-cainjector:v1.16.2
quay.io/jetstack/cert-manager-acmesolver:v1.16.2
quay.io/argoproj/argocd:v2.13.2
quay.io/argoproj/argocd:v2.13.1
quay.io/prometheus/prometheus:v2.55.1
quay.io/prometheus/prometheus:v2.55.0
quay.io/prometheus/alertmanager:v0.27.0
quay.io/prometheus/node-exporter:v1.8.2
quay.io/prometheus/blackbox-exporter:v0.25.0
quay.io/bitnami/sealed-secrets-controller:v0.27.2
原因: EU Harbor 未配置 quay-proxy
3. ghcr.io 镜像(2 个)
ghcr.io/external-secrets/external-secrets:v0.11.0
ghcr.io/stakater/reloader:v1.2.3
原因: EU Harbor 未配置 ghcr-proxy
4. Docker Hub 镜像(5 个)
nicolaka/netshoot:latest
grafana/tempo:2.7.3
aquasec/trivy:0.58.2
velero/velero:v1.15.0
原因: EU Harbor dockerhub-proxy 未缓存或网络超时
🎯 已缓存镜像的使用
所有成功缓存的镜像都存储在:
harbor.omniverseai.net/library/<扁平化镜像名>
使用示例
原始镜像:
image: registry.k8s.io/metrics-server/metrics-server:v0.7.2
本地 Harbor 镜像:
image: harbor.omniverseai.net/library/metrics-server-metrics-server:v0.7.2
批量查看已缓存镜像
# 查看本地 Harbor 所有镜像
curl -s -u admin:admin123 http://harbor.omniverseai.net/api/v2.0/projects/library/repositories | jq -r '.[] | .name'
# 统计镜像数量
curl -s -u admin:admin123 http://harbor.omniverseai.net/api/v2.0/projects/library/repositories | jq '. | length'
🔧 失败镜像的解决方案
方案 1: 在 EU Harbor 服务器上配置代理(推荐)
需要在 EU Harbor 配置以下代理项目:
| Registry | 代理项目名 | 优先级 |
|---|---|---|
quay.io |
quay-proxy |
🔴 高(11 个镜像失败) |
ghcr.io |
ghcr-proxy |
🟡 中(2 个镜像失败) |
配置步骤(在 EU Harbor 服务器上):
- 登录 Harbor Web UI
- 创建新项目
quay-proxy和ghcr-proxy - 配置为 Proxy Cache 类型
- 设置上游 Registry URL:
- quay-proxy:
https://quay.io - ghcr-proxy:
https://ghcr.io
- quay-proxy:
方案 2: 在 EU Harbor 服务器上手动缓存
# 在 EU Harbor 服务器上执行
ssh eu-harbor-server
# 拉取并推送到 k8s-proxy
for image in \
"registry.k8s.io/pause:3.9" \
"registry.k8s.io/coredns/coredns:v1.11.3" \
"registry.k8s.io/dashboard/dashboard:v2.7.0"; do
docker pull "$image"
docker tag "$image" "harbor.eu.lingjingwanxiang.cn/k8s-proxy/${image#registry.k8s.io/}"
docker push "harbor.eu.lingjingwanxiang.cn/k8s-proxy/${image#registry.k8s.io/}"
done
方案 3: 使用国内镜像源(临时方案)
对于 registry.k8s.io 的镜像,可以使用国内镜像源:
# 阿里云镜像
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
# 腾讯云镜像
ccr.ccs.tencentyun.com/k8s-gcr/pause:3.9
📈 优化建议
1. 扩展 cache-image.sh 支持更多 Registry
建议修改 cache-image.sh 添加以下检测:
# 检测 quay.io
if [[ "$input_image" =~ ^quay\.io/ ]]; then
proxy_project="quay-proxy"
# 检测 ghcr.io
elif [[ "$input_image" =~ ^ghcr\.io/ ]]; then
proxy_project="ghcr-proxy"
fi
2. 定期同步常用镜像
创建定时任务,每周同步一次常用镜像:
# 添加到 crontab
0 2 * * 0 cd /path/to/k8s && ./cache-image.sh -f k8s-common-images.txt
3. 监控镜像缓存状态
# 检查本地 Harbor 镜像数量
curl -s -u admin:admin123 http://harbor.omniverseai.net/api/v2.0/projects/library/repositories | \
jq '. | length'
# 检查最近更新的镜像
curl -s -u admin:admin123 http://harbor.omniverseai.net/api/v2.0/projects/library/repositories | \
jq -r '.[] | "\(.name) - \(.update_time)"' | sort -k3 -r | head -10
📝 总结
成果
- ✅ 成功缓存 39 个常用 K8s 镜像
- ✅ 覆盖核心组件、监控、存储、工具等多个类别
- ✅ 所有镜像已验证可从本地 Harbor 拉取
- ✅ 支持 ARM64 架构(Apple Silicon)
限制
- ❌ quay.io 镜像无法缓存(需要 EU Harbor 配置代理)
- ❌ ghcr.io 镜像无法缓存(需要 EU Harbor 配置代理)
- ❌ 部分 registry.k8s.io 镜像 EU Harbor 未缓存
下一步
- 🔴 高优先级: 在 EU Harbor 配置 quay-proxy(解决 11 个镜像)
- 🟡 中优先级: 在 EU Harbor 配置 ghcr-proxy(解决 2 个镜像)
- 🟢 低优先级: 手动缓存剩余 registry.k8s.io 镜像
📂 相关文件
k8s-common-images.txt- 完整镜像列表(68 个)cache-image.sh- 镜像缓存工具direct-cache-failed-images.sh- 直接缓存失败镜像的脚本(需要网络访问)CACHE-IMAGE-K8S-SUPPORT.md- registry.k8s.io 支持文档CACHE-IMAGE-BUGFIX.md- 路径不一致 BUG 修复文档
报告生成时间: 2025-12-31 执行者: Kiro AI Assistant 状态: ✅ 部分完成(57.4% 成功率)