代码之家  ›  专栏  ›  技术社区  ›  Ennar.ch

未使用kuberenetes正确部署应用程序

  •  0
  • Ennar.ch  · 技术社区  · 6 年前

    我在开发一个spring boot应用程序时,使用docker compose创建了我的容器。对于库伯内特斯,我通过Minikubes使用了kompose。我把我的图片推到Docker Hub,我试着用两种方法部署我的容器

    康普顿

    kompose convert-f docker-compose.yaml kubectl create-f(解聚文件)

    但我得到了这样的回应

    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描述吊舱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之前,是否有必要将图片推送到docker hub

    3 回复  |  直到 6 年前
        1
  •  0
  •   wineinlib    6 年前

    Q1

    imagepullbackoff指的是什么

    从日志中,您可以看到它多次尝试拉图像“iROOLAP”POD APP-57 96C48 9FF-M46XK的容器需求(见字段) image 豆荚的 container )从注册表和所有失败。这个 ImagePullBackoff 在这些失败之后发生。

    Q2

    使用kompose是个好方法吗?

    没用过…

    Q3

    在使用kubernetes之前,是否有必要将图片推送到docker hub

    不是这样。如果只是简单的测试,可以通过设置 imagePullPolicy IfNotPreset Never (确保图像已加载)。或者,你可以有你的私人注册表。

        2
  •  0
  •   suren    6 年前

    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了吗?你的形象在码头枢纽吗?因为这就是它试图从中提取图像的地方。

        3
  •  0
  •   Ennar.ch    6 年前

    我想起来了,事实上在我的docker compose文件中,我应该指定引用docker hub中推送的存储库中发布的图像的图像:

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