Можете ли вы получить Docker изображений непосредственно в кластеры IBM Cloud Kubernetes? - PullRequest
0 голосов
/ 06 марта 2020

TL: DR - Извините, если это базовый c материал, я изучаю Kubernetes. Я пытаюсь создать развертывание Kubernetes в IBM Cloud, и оно терпит неудачу. Развертывание отлично работает на моем локальном мини-кубе, но в IBM Cloud происходит сбой. Требуется ли использовать пространство имен IBM Cloud для развертывания или я должен иметь возможность извлекать образ Docker в IBM Cloud из предложений Docker publi c?

Длинная версия

Я работаю над этим курсом в службе IBM Cloud Kubernetes (https://courses.cognitiveclass.ai/courses/course-v1: CognitiveClass + CO0401EN + v1 / info )

В предварительных требованиях мне нужно разверните Redis для базы данных гостевой книги.

Это следующие шаги: 1. Клонировать репозиторий

$  clone https://github.com/IBM/guestbook.git

cd to / guestbook / v2

Создание контроллеров и служб Redis для главного и подчиненного:

$ kubectl create -f redis -master-deploy.yaml

Проблема заключается в том, что при запуске:

$ kubectl create -f redis-master-deployment.yaml

Развертывание не выполняется:

$ kubectl get deployments -o wide
NAME           READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES        SELECTOR
redis-master   0/1     1            0           10m   redis-master   redis:3.2.9   app=redis,role=master

$ kubectl get pods -o wide
NAME                           READY   STATUS             RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
redis-master-577bc6fbb-b4trd   0/1     ImagePullBackOff   0          14m   172.30.113.18   10.241.0.11   <none>           <none>

I ' Я предполагаю, что здесь, но похоже, что служба IBM Cloud Kubernetes не может связаться с Docker, чтобы получить образ.

$ kubectl describe pods redis-master-577bc6fbb-b4trd
Name:               redis-master-577bc6fbb-b4trd
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               10.241.0.11/10.241.0.11
Start Time:         Thu, 05 Mar 2020 12:01:45 -0500
Labels:             app=redis
                    pod-template-hash=577bc6fbb
                    role=master
Annotations:        kubernetes.io/psp: ibm-privileged-psp
Status:             Pending
IP:                 172.30.113.18
Controlled By:      ReplicaSet/redis-master-577bc6fbb
Containers:
  redis-master:
    Container ID:   
    Image:          redis:3.2.9
    Image ID:       
    Port:           6379/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ErrImagePull
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-rxmp2 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-rxmp2:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-rxmp2
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 600s
                 node.kubernetes.io/unreachable:NoExecute for 600s
Events:
  Type     Reason     Age                   From                  Message
  ----     ------     ----                  ----                  -------
  Normal   Scheduled  <unknown>             default-scheduler     Successfully assigned default/redis-master-577bc6fbb-b4trd to 10.241.0.11
  Warning  Failed     13m (x2 over 14m)     kubelet, 10.241.0.11  Failed to pull image "redis:3.2.9": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/redis:3.2.9": failed to resolve reference "docker.io/library/redis:3.2.9": failed to do request: Head https://registry-1.docker.io/v2/library/redis/manifests/3.2.9: dial tcp 34.197.189.129:443: i/o timeout
  Warning  Failed     12m                   kubelet, 10.241.0.11  Failed to pull image "redis:3.2.9": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/redis:3.2.9": failed to resolve reference "docker.io/library/redis:3.2.9": failed to do request: Head https://registry-1.docker.io/v2/library/redis/manifests/3.2.9: dial tcp 3.224.75.242:443: i/o timeout
  Normal   Pulling    11m (x4 over 14m)     kubelet, 10.241.0.11  Pulling image "redis:3.2.9"
  Warning  Failed     11m                   kubelet, 10.241.0.11  Failed to pull image "redis:3.2.9": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/redis:3.2.9": failed to resolve reference "docker.io/library/redis:3.2.9": failed to do request: Head https://registry-1.docker.io/v2/library/redis/manifests/3.2.9: dial tcp 54.210.105.17:443: i/o timeout
  Normal   BackOff    10m (x6 over 14m)     kubelet, 10.241.0.11  Back-off pulling image "redis:3.2.9"
  Warning  Failed     9m21s (x5 over 14m)   kubelet, 10.241.0.11  Error: ErrImagePull
  Warning  Failed     4m38s (x28 over 14m)  kubelet, 10.241.0.11  Error: ImagePullBackOff

Затем я пошел в свой мини-куб для тестирования и выполнил ту же команду

$ kubectl create -f ./redis-master-deployment.yaml 
deployment.apps/redis-master created


$ kubectl get deployments -o wide
NAME           READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES        SELECTOR
redis-master   1/1     1            1           14s   redis-master   redis:3.2.9   app=redis,role=master

Так что мне просто нужна точка в направлении, где я иду не так.

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Спасибо за дополнительную информацию. Ответ заключается в том, что ваши рабочие узлы должны иметь доступ publi c, чтобы получить доступ из publi c docker. Три решения:

  1. Создание рабочих узлов с общедоступными c и частными IP-адресами
  2. Создание шлюза с включенным кластером: https://cloud.ibm.com/docs/containers?topic=containers-plan_clusters#gateway
  3. Pu sh образ docker в ваш реестр контейнеров IBM Cloud, обновите YAML для извлечения из реестра контейнеров и разверните контейнеры. Ваш кластер может получать изображения из реестра IBM Cloud из частной сети.
0 голосов
/ 06 марта 2020

Обнаружил проблему благодаря @ bhpratt

Подсети, в которых находятся рабочие узлы, не имеют общедоступных c IP-адресов. У них есть прокси-ресурс, но он должен быть включен на самом su bnet.

IBM Cloud Su bnet publi c gateway pi c

Это было выключено. Нажмите на переключатель, и развертывание будет успешно создано.

$ kubectl get deployments -o wide
NAME           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS     IMAGES        SELECTOR
redis-master   1/1     1            1           4m50s   redis-master   redis:3.2.9   app=redis,role=master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...