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

配置代理后kubectl命令无法执行问题排查求助

问题根因

你配置的是全局HTTPS代理环境变量,默认会作用于所有HTTP/HTTPS请求,包括kubectl访问Kubernetes apiserver的请求。kubeadm部署的集群默认apiserver监听地址是127.0.0.1:6443或者节点内网IP段的地址,这类内网地址走外部代理转发自然无法连通,就会出现请求挂起超时的情况,和你设置的Pod CIDR没有直接关联。

解决方案

方案1:临时给拉镜像的操作单独指定代理,不设置全局代理变量

仅在执行docker pull、crictl pull这类拉取外部镜像的命令前临时加上代理参数即可,不会影响kubectl等本地请求的正常运行:

https_proxy=proxy.xyx.yyyy.com:8080 docker pull <镜像地址>

方案2:配置全局代理时添加NO_PROXY例外规则

如果确实需要长期配置全局代理,需要把集群内网相关的地址段全部加入不代理的例外列表,在配置代理的环境变量时添加如下参数:

export https_proxy=proxy.xyx.yyyy.com:8080
export http_proxy=proxy.xyx.yyyy.com:8080
export no_proxy=127.0.0.1,localhost,10.244.0.0/16,10.96.0.0/12,你的节点物理IP段,/var/run/docker.sock

必须加入例外的地址说明:

  • 本地回环地址127.0.0.1、localhost
  • Kubernetes的Service CIDR(默认是10.96.0.0/12,如果自定义过网段替换为实际值即可)
  • 你用到的Pod CIDR10.244.0.0/16
  • 三个节点所在的物理内网IP段
  • Docker socket地址,避免Docker相关操作走代理

配置完成后执行source加载对应的配置文件(比如~/.bashrc),再测试kubectl和镜像拉取操作均可正常运行。

方案3:给Docker服务单独配置代理(最推荐)

如果仅需要Docker拉镜像走代理,不影响其他系统进程,可以单独给Docker daemon配置代理,不需要设置系统全局变量:

  1. 创建Docker代理配置目录:
sudo mkdir -p /etc/systemd/system/docker.service.d
  1. 新建/etc/systemd/system/docker.service.d/http-proxy.conf文件,写入如下内容:
[Service]
Environment="HTTP_PROXY=proxy.xyx.yyyy.com:8080"
Environment="HTTPS_PROXY=proxy.xyx.yyyy.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,10.244.0.0/16,10.96.0.0/12,你的节点物理IP段"
  1. 重载配置并重启Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker

该方案下系统无全局代理变量,kubectl可正常运行,Docker拉镜像时自动走配置的代理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:04