Приложение неправильно развернуто с использованием Kuberenetes

Я все время разрабатывал приложение Spring Boot, я использовал docker-compose для создания своих контейнеров. А для Кубернетеса я использовал композу через миникубы. Я отправил свои изображения в докер-концентратор и попытался развернуть свой контейнер обоими способами.

составить

а также

kompose convert -f docker-compose.yaml kubectl create -f (deplymentfiles)

Но я получаю этот ответ

WARN Volume mount on the host "/home/App/src/main/docker/postgres-data" isn't supported - ignoring path on the host 
INFO We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead. 

INFO Deploying application in "default" namespace 
INFO Successfully created Service: adminer        
INFO Successfully created Service: app            
INFO Successfully created Service: mypostgres     
INFO Successfully created Deployment: adminer     
INFO Successfully created Deployment: app         
INFO Successfully created Deployment: mypostgres  
INFO Successfully created PersistentVolumeClaim: mypostgres-claim0 of size 100Mi. If your cluster has dynamic storage provisioning, you don't have to do anything. Otherwise you have to create PersistentVolume to make PVC work 

когда я бегу kubectl get pods

NAME                           READY     STATUS             RESTARTS   AGE
adminer-6cd96f8846-69qb8       1/1       Running            0          2m
app-5796c489ff-m46xk           0/1       ImagePullBackOff   0          2m
mypostgres-649865b4d8-nhglj    1/1       Running            0          2m

kubectl description pod app-5796c489ff-m46xk

показывает это

Name:           app-5796c489ff-m46xk
Namespace:      default
Node:           minikube/192.168.99.100
Start Time:     Mon, 11 Jun 2018 11:02:32 +0200
Labels:         io.kompose.service=app
                pod-template-hash=1352704599
Annotations:    <none>
Status:         Pending
IP:             172.17.0.3
Controlled By:  ReplicaSet/app-5796c489ff
Containers:
  app:
    Container ID:   
    Image:          iroolapp
    Image ID:       
    Port:           8086/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ImagePullBackOff
    Ready:          False
    Restart Count:  0
    Environment:
      DATABASE_HOST:      mypostgres
      DATABASE_NAME:      test
      DATABASE_PASSWORD:  root
      DATABASE_PORT:      5432
      DATABASE_USER:      root
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-wdb8n (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          False 
  PodScheduled   True 
Volumes:
  default-token-wdb8n:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-wdb8n
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age              From               Message
  ----     ------                 ----             ----               -------
  Normal   Scheduled              3m               default-scheduler  Successfully assigned app-5796c489ff-m46xk to minikube
  Normal   SuccessfulMountVolume  3m               kubelet, minikube  MountVolume.SetUp succeeded for volume "default-token-wdb8n"
  Normal   Pulling                1m (x4 over 3m)  kubelet, minikube  pulling image "iroolapp"
  Warning  Failed                 1m (x4 over 3m)  kubelet, minikube  Failed to pull image "iroolapp": rpc error: code = Unknown desc = Error response from daemon: pull access denied for iroolapp, repository does not exist or may require 'docker login'
  Warning  Failed                 1m (x4 over 3m)  kubelet, minikube  Error: ErrImagePull
  Normal   BackOff                1m (x6 over 3m)  kubelet, minikube  Back-off pulling image "iroolapp"
  Warning  Failed                 1m (x6 over 3m)  kubelet, minikube  Error: ImagePullBackOff

Наконец-то это мой docker-compose файл

version: '3'
services:
  app:
    image: iroolapp
    depends_on:
    - mypostgres
    ports:
     - "9000:8086"
    environment:
      - DATABASE_HOST=mypostgres
      - DATABASE_USER=root
      - DATABASE_PASSWORD=root
      - DATABASE_NAME=test
      - DATABASE_PORT=5432

    networks:
        default:

  mypostgres:
    image: postgres:9.6-alpine
    container_name: mypostgres

    ports:
     - "5433:5432"


    environment:
     - POSTGRES_PASSWORD=root
     - POSTGRES_USER=root
     - POSTGRES_DB=irooldb
    volumes:
    - ./postgres-data:/var/lib/postgresql/data

  adminer:
    image: adminer
    ports:
      - 8080:8080
    networks:
        default:

networks:
   default:
      external:
        name: mynetwork

Мой вопрос: на что ссылается ImagePullBackoff? использование kompose это хороший подход? и это необходимый шаг, чтобы отправить изображения в докер-концентратор перед использованием kubernetes

3 ответа

Решение

Я понял это. На самом деле в моем файле docker-compose я должен указать изображение, ссылающееся на изображение, размещенное в репозитории, помещенном в концентратор docker:

image: docker.io/<dockerHub username>/<imagename>

ImagePullBackoff означает, что вы не можете получить изображение.

Вы действительно прочитали сообщение об ошибке? Это говорит Failed to pull image "iroolapp": rpc error: code = Unknown desc = Error response from daemon: pull access denied for iroolapp, repository does not exist or may require 'docker login'

Вы вошли в Docker Hub? Ваше изображение в докер-хабе? Потому что именно отсюда он пытается вытянуть изображение.

Я думаю, что название изображения вообще не получает правильного направления. Если вы сохранили в своем репо, укажите полный путь, например "имя пользователя / репо: тег", или сначала выполните поиск по команде в терминале "docker search imagename". Kubernetes вытаскивает изображение снова и снова до рабочего состояния, поэтому может быть большое количество RESTART. Так что дайте ему правильный URL-адрес или путь частного репо.

Q1

к чему относится ImagePullBackoff

Из журнала видно, что он несколько раз пытался вытянуть образ контейнера "iroolapp" pod app-5796c489ff-m46xk (см. Поле image стручка container) из реестра и все не удалось. ImagePullBackoff произошло после этих неудач.

Q2

использование kompose это хороший подход?

Не использовал это...

Q3

и это необходимый шаг, чтобы отправить изображения в докер-концентратор перед использованием kubernetes

Это не. Если только для простого теста, вы можете использовать локальное изображение, установив imagePullPolicy в IfNotPreset или же Never (убедитесь, что изображение загружено). В качестве альтернативы вы можете иметь свой личный реестр.

Другие вопросы по тегам