如何在Kubernetes(containerd环境)中配置代理拉取镜像?
问题分析
1. Helm代理未自动生效的原因
.bashrc仅在交互式登录shell中加载,若Helm以非交互式方式执行(如脚本、后台任务),不会读取该文件的环境变量。- 即使是交互式shell,若代理变量未加
export导出,Helm进程也无法继承这些变量。
2. 容器拉镜像失败的核心原因
K8s节点上的containerd镜像拉取流程独立于用户shell代理,Pod拉镜像是由containerd进程处理,必须给containerd本身配置代理,同时配合K8s层面的代理设置,才能让镜像拉取请求走代理通道。
正确配置步骤
一、让Helm自动使用代理
方法1:系统级全局环境变量(所有shell/进程生效)
将代理变量写入系统级配置文件,确保所有进程都能读取:
echo "HTTP_PROXY=http://your-proxy-ip:port" >> /etc/environment echo "HTTPS_PROXY=http://your-proxy-ip:port" >> /etc/environment echo "NO_PROXY=127.0.0.1,localhost,10.0.0.0/8,192.168.0.0/16,.svc,.cluster.local" >> /etc/environment
执行source /etc/environment或重启shell即可生效,此后Helm无需手动指定代理。
方法2:Helm单独配置
创建Helm全局配置文件,单独给Helm指定代理:
mkdir -p ~/.config/helm cat >> ~/.config/helm/helm.yaml << EOF httpProxy: http://your-proxy-ip:port httpsProxy: http://your-proxy-ip:port noProxy: 127.0.0.1,localhost,10.0.0.0/8,192.168.0.0/16,.svc,.cluster.local EOF
二、配置containerd代理(解决镜像拉取失败)
containerd的代理需写入其核心配置文件,步骤如下:
- 编辑containerd配置文件(通常路径为
/etc/containerd/config.toml),找到[plugins."io.containerd.grpc.v1.cri".registry]区块,添加代理配置:
[plugins."io.containerd.grpc.v1.cri".registry.configs] # 针对Docker Hub的代理配置,若拉取其他仓库镜像,需添加对应区块 [plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".proxy] http_proxy = "http://your-proxy-ip:port" https_proxy = "http://your-proxy-ip:port" no_proxy = "127.0.0.1,localhost,10.0.0.0/8,192.168.0.0/16,.svc,.cluster.local"
- 重启containerd服务使配置生效:
systemctl restart containerd
三、配置K8s节点级代理(可选补充)
若需要让kubelet、kube-proxy等K8s组件或Pod的网络请求走代理,可配置节点级代理:
- 编辑kubelet配置文件
/var/lib/kubelet/config.yaml(不存在则新建),添加环境变量:
env: - name: HTTP_PROXY value: "http://your-proxy-ip:port" - name: HTTPS_PROXY value: "http://your-proxy-ip:port" - name: NO_PROXY value: "127.0.0.1,localhost,10.0.0.0/8,192.168.0.0/16,.svc,.cluster.local"
- 重启kubelet服务:
systemctl restart kubelet
四、验证配置
- 测试Helm无需手动代理即可操作:
helm repo update
- 重新安装Longhorn:
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace
- 检查Pod状态,确认镜像拉取成功:
kubectl get pods -n longhorn-system
内容的提问来源于stack exchange,提问作者ar rr
相关产品推荐
相关产品推荐

