Appearance
系统代理配置(永久生效)
bash
# 编辑profile文件(保留你的代理地址,去掉冗余的大小写重复)
vim /etc/profile
# 写入以下内容(精简且规范)
export HTTP_PROXY=http://192.168.1.100:7892
export HTTPS_PROXY=http://192.168.1.100:7892
export NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.cluster.local,*.svc,10.96.0.1,10.96.0.10
# 让配置对所有终端永久生效
echo "source /etc/profile" >> ~/.bashrc
source /etc/profile
# 验证系统代理(有输出=生效)
echo $HTTP_PROXYcontainerd配置中加入代理
一、创建containerd代理配置文件
sudo mkdir -p /etc/systemd/system/containerd.service.d
sudo vim /etc/systemd/system/containerd.service.d/http-proxy.conf二、添加代理配置
[Service]
Environment="HTTP_PROXY=http://192.168.1.100:7892"
Environment="HTTPS_PROXY=http://192.168.1.100:7892"
Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.cluster.local,*.svc,10.96.0.1,10.96.0.10"
# 本地和集群内部不代理三、生效配置并重启
sudo systemctl daemon-reload
sudo systemctl restart containerd四、验证配置是否生效
# 方法1:用crictl测试拉取
crictl pull nginx:1.18
# 方法2:查看Containerd日志
journalctl -u containerd -f | grep -i mirror
# 方法3:检查K8s Pod状态
kubectl describe pod production-6cf796f79c-8svln | grep -i image!真实OS中配置
查看第一列是否有 0.0.0.0:7892
\
netstat -ano | findstr :7892如果第一列没有 0.0.0.0:7892,可以通过windows端口转发
netsh interface portproxy add v4tov4 listenaddress=192.168.1.100 listenport=7892 connectaddress=127.0.0.1 connectport=7892验证转发规则(重启电脑规则会失效)
netsh interface portproxy show all清理转发规则
netsh interface portproxy reset!如果修改完配置未生效,看这里
特别重要!!!
如果还没生效,记得先重启!!!!!!
如果还没用再把windows转发规则清理一下,重新配置
# 1. 强制删除所有高优先级镜像源配置 ======================
# 删除certs.d下所有镜像源配置(最关键)
rm -rf /etc/containerd/certs.d
# 2. 重置containerd主配置为纯默认(删除所有mirrors) ======================
containerd config default > /etc/containerd/config.toml
# 3. 删除docker遗留配置(防止干扰) ======================
rm -rf /etc/docker/daemon.json
# 4. 修复DNS(彻底干掉127.0.0.53报错) ======================
cat > /etc/resolv.conf << EOF
nameserver 223.5.5.5
nameserver 8.8.8.8
EOF
systemctl stop systemd-resolved
systemctl disable systemd-resolved
# 5. 重载containerd代理(你之前配置的代理保留) ======================
systemctl daemon-reload
systemctl restart containerd
systemctl restart kubelet
# 6. 测试拉取官方镜像 ======================
crictl pull nginx:1.18
查看日志有没有报错
journalctl -u containerd -f | grep registry注意事项
部署高可用k8s集群
eg:3个master+1个node
node配置代理后
产生的影响:其他master节点用不了kubectl命令
原因:kubectl /curl 会自动走系统代理
你的代理服务器(192.168.1.101:7892)不能访问内网 k8s apiserver
代理直接把连接掐断 → 导致 EOF / 超时
关掉代理,直接内网访问 → 立刻恢复 解决方式:
unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY