部署Docker镜像到Kubernetes Pod时出现HTTP/HTTPS请求错误求助
解决Kubernetes镜像拉取错误:http: server gave HTTP response to HTTPS client
问题背景
拥有无污点的Kubernetes控制平面节点,本地Docker已配置sdmay23-42.ece.iastate.edu:5000为不安全仓库,可正常拉取sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2镜像并创建容器,但通过YAML部署Pod时出现ImagePullBackOff,错误提示http: server gave HTTP response to HTTPS client。
解决步骤
1. 确保Docker daemon配置生效并重启相关服务
- 检查
/etc/docker/daemon.json,确认包含不安全仓库配置:{ "insecure-registries": ["sdmay23-42.ece.iastate.edu:5000"] } - 重启Docker daemon:
sudo systemctl restart docker - 重启kubelet以加载最新配置:
sudo systemctl restart kubelet
2. 验证节点镜像拉取能力
在节点上执行以下命令,确认镜像可正常拉取:
docker pull sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2
3. 调整Pod镜像拉取策略(可选)
若镜像已存在于节点,可设置imagePullPolicy: IfNotPresent避免重复拉取,修改后的YAML如下:
apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-container image: sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2 imagePullPolicy: IfNotPresent ports: - containerPort: 6379
重新部署Pod:
sudo kubectl delete pod test-pod sudo kubectl create -f test-deploy.yaml
4. 针对containerd容器运行时的额外配置(若适用)
若集群使用containerd而非Docker作为容器运行时,需单独配置允许不安全仓库:
- 编辑
/etc/containerd/config.toml,找到[plugins."io.containerd.grpc.v1.cri".registry]段,添加以下配置:[plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."sdmay23-42.ece.iastate.edu:5000"] endpoint = ["http://sdmay23-42.ece.iastate.edu:5000"] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."sdmay23-42.ece.iastate.edu:5000".tls] insecure_skip_verify = true - 重启containerd和kubelet:
sudo systemctl restart containerd sudo systemctl restart kubelet
内容的提问来源于stack exchange,提问作者Saile
相关产品推荐
相关产品推荐

