You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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的代理需写入其核心配置文件,步骤如下:

  1. 编辑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"
  1. 重启containerd服务使配置生效:
systemctl restart containerd

三、配置K8s节点级代理(可选补充)

若需要让kubelet、kube-proxy等K8s组件或Pod的网络请求走代理,可配置节点级代理:

  1. 编辑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"
  1. 重启kubelet服务:
systemctl restart kubelet

四、验证配置

  1. 测试Helm无需手动代理即可操作:
helm repo update
  1. 重新安装Longhorn:
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace
  1. 检查Pod状态,确认镜像拉取成功:
kubectl get pods -n longhorn-system

内容的提问来源于stack exchange,提问作者ar rr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:55:13