IMG_9482.txt.txt
Edited: Thursday 1 May 2025

Wednesday, September 15, 2021 at 18:08

解 决 K8S 安 装 镜 像 的 问 题

k8s 安 装老生常谈的问题是镜像的下载问题。

其镜像主要涉及以下三个仓库,解决的办法是在香港搞一台虚拟机,并安装nexus来用。

  • docker hub
  • quay.io
  • K8s.gcr.io

Docker mirror

docker 本 身 的 限 制 , 只 能 设 置 docker hub 的 mirror。 不 能 设 置 别 的hub 的 mirror。

国 内 厂 商 提 供 的 mirror, 例 如 quay 的 。

docker pull quay .io/prometheus/node-exporter:V0 .18 .1
江 替 换 成 如 下 格 式

docker pull quay-mirror .qiniu.com/prometheus/node-
exporter:V0 .18 . 1

gpmpmpepegmsegmpioeg peppget
GoCKer pu quay-mLfof q+nlu.com/ prometaeuS/ node-
exporter:V0 .18 . 1

Nexus proxy and group

Nexus, 可 以 提 供 各 个 hub 的 proxy 的 功 能 , 并 且 还 能 把 这 些 hub, 通 过
group 的 功 能 , 统 一 用 一 个 端 口 发 布 出 来 。

docker pull kK8s.gcr .io/kube-proxy:V1.20 .8

这 个 时 候 , 你 就 需 要 改 成

docker pull hub.chenshake.site/kube-proxy:V1.20 .8

这 样 你 去 nexus 搭 建 的 仓 库 下 载 , 如 果 没 有 , 他 会 自 动 去 上 游 下 载 。 这
个 nexus 做 的 还 是 非 常 智 能 。 如 果 你 下 载 quay 的 镜 像

docker pull quay .io/coreos/flLannel:V0 .14.0
你 只 需 要 改 成

docker pull hub.chenshake.site/coreos/flLannel:V0 .14.0

简 单 理 解 , 就 是 nexus 多 做 了 一 步 , 等 于 把 所 有 的 hub 的 镜 像 , 都 做 了
一 个 类 似 索 引 , 帮 你 下 载 。 如 果 有 相 同 的 名 字 , 是 有 可 能 下 载 错 误 , 或
者 下 载 的 不 是 你 需 要 的 镜 像 。

docker pull hub.chenshake.site/nginx

结 果 你 看 一 下 镜 像

目 Q“Search 圆 nginx

目 Q“Search 圆 nginx

| Repository k8s.gcrio Name “nginx Most popular version

Format docker “ Version latest Age
Popularity

面 Delete component “ 意 Analyze application

丨 Name 卞

v2/nginx/manifests/latest

所 以 你 可 以 做 docker 配 置 mirror , 其 他 仓 库 , 就 是
hub.chenshake.site/+++++

吴 余 a 如 果 你 决 定 构 建 自 己 的 私 有 仓 库 , 这 个
案 , 就 可

以 满 足 , 但 是 需 要 你 改 变 所 有 的 镜 像 的 地 址 , 这 也 是 一 个 很
繁 琐 的 事

Containerd 完 美 方 案

docker 不 能分 别 给 hub 设 置 不 同 的 mirror。 Containerd 是 可 以 完 美 的 支 持 。

nexus 的 配 置 调 整 一 下 ,dockerhub,gcr,quay 的 ,proxy 模 式 , 不 使用 group 访 问 通 过 不 同 的 端 口 来 区 分

你 做 contained 配 置 /etc/containerd/config.toml

[plugins.“io.containerd.grpc.v1.cri“.registry]
[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrors]

[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrors.“docker.io“]
endpoint = [“https://hub.chenshake.site:8181“]

[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrorS .“K88 .gcr.io“]
endpoint = [“https://hub.chenshake.site:8182“]

[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrorS .“gcr.io“]
endpoint = [“https://hub.chenshake.site:8183“]

[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrorS .“ghcr.io“]
endpoint = [“https://hub.chenshake.site:8184“]

[pLlugins.“io.containerd.grpc.v1.cri“.registry.mirrorS 。“quay.io“]
endpoint = [“https://hub.chenshake.site:8185“]

这 个 时 候 , 你 如 果 需 要 下 载 镜 像 。

crictl pull kK85.gcr.io/kube-apiserver:V1.20.8

什 么 都 不 需修 改 , 直 接 搞 定 。 对 于 contained 来 说 一 定 要 注 意crictI 是 使 用 contained 的 配 置 文 件 下 载 , 你 在 配 置 文 件 里 设 置 的mirror, 是 生 效 的 。

如 果 你 使 用 ctr, 或 者 nerdctl, 去 pull 镜 像 , 都 是 直 接 下 载 , 无 法 设 置mirror, 也 不 会 使 用 contained 下 的 mirror 设 置 。

Backlinks