跳转到内容

Kubernetes 与 containerd

HubProxy 兼容 OCI/Distribution Registry API v2。Kubernetes 节点通常由 containerd 拉取镜像,配置方式与 Docker daemon.json 不同。

在每个节点创建 /etc/rancher/k3s/registries.yaml

mirrors:
docker.io:
endpoint:
- "https://example.com"
"ghcr.io":
endpoint:
- "https://example.com"
"quay.io":
endpoint:
- "https://example.com"
"registry.k8s.io":
endpoint:
- "https://example.com"

重启服务:

Terminal window
sudo systemctl restart k3s # server
sudo systemctl restart k3s-agent # agent

验证(使用 crictl,mirror 不对 ctr 生效):

Terminal window
sudo crictl pull docker.io/library/nginx:latest

配置 /etc/rancher/rke2/registries.yaml,格式同上,重启 rke2-serverrke2-agent

Terminal window
sudo mkdir -p /etc/containerd/certs.d/docker.io

/etc/containerd/certs.d/docker.io/hosts.toml

server = "https://registry-1.docker.io"
[host."https://example.com"]
capabilities = ["pull", "resolve"]

GHCR 示例:/etc/containerd/certs.d/ghcr.io/hosts.toml

server = "https://ghcr.io"
[host."https://example.com"]
capabilities = ["pull", "resolve"]

确保 /etc/containerd/config.toml 启用:

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
Terminal window
sudo systemctl restart containerd
  • docker.io:/v2/library/nginx/...
  • ghcr.io 等:/v2/ghcr.io/owner/image/...
  • 支持 containerd ns 查询参数识别 [registries]
  • 每节点独立配置;生产环境 HubProxy 建议 HTTPS 反代
  • HubProxy 对上游匿名拉取,无法代理需要认证的私有镜像
  • 传输特性