将映像部署到 Kubernetes Pod 时出错:"http: server gave HTTP response to HTTPS client"



我有一个kubernetes节点,控制平面,它是没有污染的部署pod。我有一个docker映像sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2.

我已经登录到docker cli。这个守护进程。json设置了不安全的注册表,我可以用docker info验证:

Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: sdmay2342
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
sdmay23-42.ece.iastate.edu:5000
127.0.0.0/8
Live Restore Enabled: false

我可以拉图像:

Status: Image is up to date for sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2
sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2

我可以从图片中创建一个容器:

CONTAINER ID   IMAGE                                                    COMMAND                  CREATED         STATUS          PORTS                                       NAMES
ad582a4d514b   sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2   "docker-entrypoint.s…"   6 seconds ago   Up 6 seconds    3000/tcp                                    test-frontend

当我将从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
ports:
- containerPort: 6379

命令:sudo kubectl create -f test-deploy.yaml响应:pod/test-pod created

pod的描述:

Name:             test-pod
Namespace:        default
Priority:         0
Service Account:  default
Node:             sdmay23-42/10.29.160.55
Start Time:       Sun, 27 Nov 2022 18:46:54 +0000
Labels:           <none>
Annotations:      <none>
Status:           Pending
IP:               10.244.0.116
IPs:
IP:  10.244.0.116
Containers:
test-container:
Container ID:   
Image:          sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2
Image ID:       
Port:           6379/TCP
Host Port:      0/TCP
State:          Waiting
Reason:       ImagePullBackOff
Ready:          False
Restart Count:  0
Environment:    <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bvwzz (ro)
Conditions:
Type              Status
Initialized       True 
Ready             False 
ContainersReady   False 
PodScheduled      True 
Volumes:
kube-api-access-bvwzz:
Type:                    Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds:  3607
ConfigMapName:           kube-root-ca.crt
ConfigMapOptional:       <nil>
DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type     Reason     Age                From               Message
----     ------     ----               ----               -------
Normal   Scheduled  51s                default-scheduler  Successfully assigned default/test-pod to sdmay23-42
Normal   BackOff    23s (x2 over 50s)  kubelet            Back-off pulling image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2"
Warning  Failed     23s (x2 over 50s)  kubelet            Error: ImagePullBackOff
Normal   Pulling    12s (x3 over 50s)  kubelet            Pulling image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2"
Warning  Failed     12s (x3 over 50s)  kubelet            Failed to pull image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2": rpc error: code = Unknown desc = failed to pull and unpack image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2": failed to resolve reference "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2": failed to do request: Head "https://sdmay23-42.ece.iastate.edu:5000/v2/canvas-lti-frontend/manifests/v2": http: server gave HTTP response to HTTPS client
Warning  Failed     12s (x3 over 50s)  kubelet            Error: ErrImagePull

解决方案是将containerd配置为接受不安全的注册表。我原以为kubernetes使用的是docker。您可以执行kubectl get nodes -o wide查看有关容器运行时的信息。

配置containrd的步骤:如何使用最新的Kubernetes从不安全的私有注册表中提取docker映像。

最新更新