modified | Thursday 1 May 2025 |
---|
Wednesday, September 15, 2021 at 18:08
k8s 安 装老生常谈的问题是镜像的下载问题。
其镜像主要涉及以下三个仓库,解决的办法是在香港搞一台虚拟机,并安装nexus来用。
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 如 果 你 决 定 构 建 自 己 的 私 有 仓 库 , 这 个
案 , 就 可
以 满 足 , 但 是 需 要 你 改 变 所 有 的 镜 像 的 地 址 , 这 也 是 一 个 很
繁 琐 的 事
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 设 置 。