将映像部署到 kubernetes pod 时出错:“http:服务器向 HTTPS 客户端提供了 HTTP 响应”

Sai*_*ile 4 deployment image docker kubernetes kubernetes-pod

我有一个 kubernetes 节点,即控制平面,它对于部署 pod 来说是不受污染的。我有一个泊坞窗图像sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2

\n

我已登录 docker cli。daemon.json 设置为不安全的注册表,我可以通过以下方式进行验证docker info

\n
 Docker Root Dir: /var/lib/docker\n Debug Mode: false\n Username: sdmay2342\n Registry: https://index.docker.io/v1/\n Labels:\n Experimental: false\n Insecure Registries:\n  sdmay23-42.ece.iastate.edu:5000\n  127.0.0.0/8\n Live Restore Enabled: false\n
Run Code Online (Sandbox Code Playgroud)\n

我可以拉图像:

\n
Status: Image is up to date for sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\nsdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\n
Run Code Online (Sandbox Code Playgroud)\n

我可以从图像构建一个容器:

\n
CONTAINER ID   IMAGE                                                    COMMAND                  CREATED         STATUS          PORTS                                       NAMES\nad582a4d514b   sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2   "docker-entrypoint.s\xe2\x80\xa6"   6 seconds ago   Up 6 seconds    3000/tcp                                    test-frontend\n
Run Code Online (Sandbox Code Playgroud)\n

当我从 yaml 清单将其部署到节点时,出现错误。\n基本清单:

\n
apiVersion: v1\nkind: Pod\nmetadata:\n   name: test-pod\nspec:\n   containers:\n   - name: test-container\n     image: sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\n     ports:\n     - containerPort: 6379\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

Pod 的描述:

\n
Name:             test-pod\nNamespace:        default\nPriority:         0\nService Account:  default\nNode:             sdmay23-42/10.29.160.55\nStart Time:       Sun, 27 Nov 2022 18:46:54 +0000\nLabels:           <none>\nAnnotations:      <none>\nStatus:           Pending\nIP:               10.244.0.116\nIPs:\n  IP:  10.244.0.116\nContainers:\n  test-container:\n    Container ID:   \n    Image:          sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\n    Image ID:       \n    Port:           6379/TCP\n    Host Port:      0/TCP\n    State:          Waiting\n      Reason:       ImagePullBackOff\n    Ready:          False\n    Restart Count:  0\n    Environment:    <none>\n    Mounts:\n      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bvwzz (ro)\nConditions:\n  Type              Status\n  Initialized       True \n  Ready             False \n  ContainersReady   False \n  PodScheduled      True \nVolumes:\n  kube-api-access-bvwzz:\n    Type:                    Projected (a volume that contains injected data from multiple sources)\n    TokenExpirationSeconds:  3607\n    ConfigMapName:           kube-root-ca.crt\n    ConfigMapOptional:       <nil>\n    DownwardAPI:             true\nQoS Class:                   BestEffort\nNode-Selectors:              <none>\nTolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s\n                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s\nEvents:\n  Type     Reason     Age                From               Message\n  ----     ------     ----               ----               -------\n  Normal   Scheduled  51s                default-scheduler  Successfully assigned default/test-pod to sdmay23-42\n  Normal   BackOff    23s (x2 over 50s)  kubelet            Back-off pulling image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2"\n  Warning  Failed     23s (x2 over 50s)  kubelet            Error: ImagePullBackOff\n  Normal   Pulling    12s (x3 over 50s)  kubelet            Pulling image "sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2"\n  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\n  Warning  Failed     12s (x3 over 50s)  kubelet            Error: ErrImagePull\n
Run Code Online (Sandbox Code Playgroud)\n

Sai*_*ile 6

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

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