Назад | Перейти на главную страницу

Minikube Не удалось получить изображение http: сервер дал HTTP-ответ клиенту HTTPS

У меня есть minikube, работающий на OSX, с гиперкитом и включенным небезопасным реестром.

$ minikube start
🎉  minikube 1.12.1 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.12.1
💡  To disable this notice, run: 'minikube config set WantUpdateNotification false'

🙄  minikube v1.9.2 on Darwin 10.15.6
✨  Using the hyperkit driver based on existing profile
👍  Starting control plane node m01 in cluster minikube
🔄  Restarting existing hyperkit VM for "minikube" ...
🐳  Preparing Kubernetes v1.18.0 on Docker 19.03.8 ...
🌟  Enabling addons: dashboard, default-storageclass, registry, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube"

Я могу проверить реестр на IP-адресе minikube

$ curl $(minikube ip):5000/v2/_catalog
{"repositories":[]}
$ curl https://$(minikube ip):5000/v2/_catalog
curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number

Я создал образ локально и

$ kubectl create deployment spark-k8s --image=192.168.64.9:5000/spark-k8s:latest 

Если я проверю статус модуля, я вижу, что он не смог получить изображение, см. Ниже

k describe pod spark-k8s-799578f68d-2v54k
Name:         spark-k8s-799578f68d-2v54k
Namespace:    default
Priority:     0
Node:         minikube/192.168.64.9
Start Time:   Thu, 23 Jul 2020 20:30:18 -0700
Labels:       app=spark-k8s
              pod-template-hash=799578f68d
Annotations:  <none>
Status:       Pending
IP:           172.17.0.11
IPs:
  IP:           172.17.0.11
Controlled By:  ReplicaSet/spark-k8s-799578f68d
Containers:
  spark-k8s:
    Container ID:   
    Image:          192.168.64.9:5000/spark-k8s:latest
    Image ID:       
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-f9p8t (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-f9p8t:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-f9p8t
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  <unknown>              default-scheduler  Successfully assigned default/spark-k8s-799578f68d-2v54k to minikube
  Normal   Pulling    5m10s (x4 over 6m29s)  kubelet, minikube  Pulling image "192.168.64.9:5000/spark-k8s:latest"
  Warning  Failed     5m10s (x4 over 6m29s)  kubelet, minikube  Failed to pull image "192.168.64.9:5000/spark-k8s:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://192.168.64.9:5000/v2/: http: server gave HTTP response to HTTPS client
  Warning  Failed     5m10s (x4 over 6m29s)  kubelet, minikube  Error: ErrImagePull
  Warning  Failed     4m41s (x6 over 6m29s)  kubelet, minikube  Error: ImagePullBackOff
  Normal   BackOff    86s (x20 over 6m29s)   kubelet, minikube  Back-off pulling image "192.168.64.9:5000/spark-k8s:latest"

Как я могу заставить kuernetes использовать HTTP для извлечения образа из небезопасного локального реестра?

Это не то, что сам Kubernetes контролирует (AFAIK) - скорее, если вы используете докер, вам нужно включить --insecure-registries что можно сделать с помощью аргумента демону докера или (что более удобно) через /etc/docker/daemon.json (как показано в этой ссылке документации)

Мне никогда не приходилось этого делать containerd, но, вероятно, имеет аналогичную концепцию


Как упоминалось в комментариях, проблема была в версии minikube.

К сожалению, я только что заметил это, но есть ли причина, по которой вы используете такую ​​устаревшую версию? Доступна minikube 1.12.1!

И, как подтвердил @bachr после обновления, он работает.

@mdaniel это действительно работает, я удалил текущую виртуальную машину minikube, обновил ее и выполнил те же шаги, что и выше, и мое развертывание с использованием локального реестра просто сработало !!