K8s下的containerd设置代理
方法一: 通过 Systemd 环境变量配置全局代理
这是最简单直接的方式,适用于所有通过 containerd 拉取的镜像。
-
创建 Systemd 代理配置文件
复制 sudo mkdir -p /etc/systemd/system/containerd.service.d sudo tee /etc/systemd/system/containerd.service.d/http-proxy.conf <<EOF [Service] Environment="HTTP_PROXY=http://<代理IP>:<代理端口>" Environment="HTTPS_PROXY=http://<代理IP>:<代理端口>" Environment="NO_PROXY=localhost,127.0.0.1,<内网网段或域名>" EOF
替换 <代理IP>:<代理端口> 为实际代理地址(如 http://10.10.1.1:8080)。 NO_PROXY 填写不需要代理的地址(如 Kubernetes 节点 IP、Service CIDR、Pod CIDR 等)。
-
重新加载 Systemd 并重启 Containerd
-
验证代理是否生效
观察拉取过程是否通过代理完成。
方法二: 配置镜像仓库代理镜像(Registry Mirror)
如果代理仅针对特定镜像仓库(如 Docker Hub),可以通过 config.toml 配置镜像加速器或代理镜像。
-
编辑 Containerd 配置文件
2. 添加镜像仓库代理配置 在 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 部分添加代理镜像地址(例如阿里云镜像加速器):示例(阿里云镜像加速器):复制 [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://<镜像加速器地址>"]
3. 重启 Containerd[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"]
方法三: 高级配置(自定义 TLS 或认证)
如果代理需要 TLS 证书或认证,需在 /etc/containerd/certs.d 目录下配置 hosts.toml。
-
创建证书目录
- 配置 hosts.toml
- 重启 Containerd
- 验证配置