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

K8s创建Pod拉取镜像失败:HTTP响应被HTTPS客户端接收

Kubernetes拉取私有HTTP镜像失败的解决方案

问题核心

kubelet尝试用HTTPS请求你的私有HTTP镜像仓库,导致拉取失败——虽然工作节点单独用docker pull能正常拉取,但Kubernetes的容器运行时配置未同步允许该不安全仓库。

分步解决

1. 重启节点服务确保Docker配置生效

即使工作节点docker pull正常,也要确保Docker和kubelet服务重启让配置完全生效,在每个工作节点执行:

sudo systemctl restart docker
sudo systemctl restart kubelet

2. 给kubelet添加不安全仓库配置

Kubelet可能未自动读取Docker的insecure-registries配置,需要直接在kubelet配置中声明:

  1. 编辑工作节点的kubelet配置文件(通常路径为/var/lib/kubelet/config.yaml),添加以下内容:
insecureRegistries:
- "192.168.56.2:5000"
  1. 重启kubelet:
sudo systemctl restart kubelet

3. 若使用containerd作为运行时(跳过Docker相关步骤)

如果集群用的是containerd而非Docker,修改containerd配置:

  1. 编辑/etc/containerd/config.toml,找到[plugins."io.containerd.grpc.v1.cri".registry]区块,添加镜像仓库的HTTP端点配置:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.56.2:5000"]
    endpoint = ["http://192.168.56.2:5000"]
  1. 重启containerd和kubelet:
sudo systemctl restart containerd
sudo systemctl restart kubelet

4. 验证修复

创建测试Pod验证镜像拉取:

apiVersion: v1
kind: Pod
metadata:
  name: test-mysql-pod
spec:
  containers:
  - name: mysql-container
    image: 192.168.56.2:5000/ubn_mysql:latest

应用后查看状态:

kubectl apply -f test-pod.yaml
kubectl get pods test-mysql-pod

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:50:23