簡體   English   中英

部署應用程序時出錯:persistentvolumeclaims 已經存在

[英]Error while deploying application: persistentvolumeclaims already exists

我有一個使用 docker-compose 的 docker 應用程序,我想在 openshift-3 中部署該項目,所以我正在使用kompose 這是我的 docker-compose 文件:-

version: '3'

services:
  katana-db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: *****
      POSTGRES_USER: *****
  backend:
    depends_on:
      - katana-db
    build:
      context: .
      dockerfile: dockerfile_uwsgi
    image: warrior_deployment_backend
    extra_hosts:
      - "example.com:100.0.0.201"
    volumes:
      - katana-secrets:/secrets
      - katana-static:/warriorframework_py3/static
      - katana-wapps:/warriorframework_py3/katana/wapps
      - katana-wui:/warriorframework_py3/katana/wui
    ports:
      - "4000:4000"
    environment:
      DB_HOST: katana-db
      DB_NAME: warrior
      DB_USER: *****
      DB_PASSWORD: *****
  migration:
    depends_on:
      - backend
    image: warrior_deployment_backend
    entrypoint: ["sh", "-c"]
    command: ["
      python /warriorframework_py3/katana/manage.py collectstatic --noinput;
      python /warriorframework_py3/katana/manage.py makemigrations;
      python /warriorframework_py3/katana/manage.py migrate;
      echo \"from django.contrib.auth import get_user_model; User = get_user_model(); x = User.objects.create_superuser('admin', '', 'warriorframework') if not User.objects.filter(username='admin').exists() else User.objects.get(username='admin'); x.set_password('warriorframework'); x.save()\" | python /warriorframework_py3/katana/manage.py shell;
      "]
    volumes:
      - katana-static:/warriorframework_py3/static
      - katana-wapps:/warriorframework_py3/katana/wapps
      - katana-wui:/warriorframework_py3/katana/wui
    environment:
      DB_HOST: katana-db
      DB_NAME: warrior
      DB_USER: warrior
      DB_PASSWORD: qwerty
  frontend:
    depends_on:
      - backend
    build:
      context: .
      dockerfile: dockerfile_nginx
    image: warrior_deployment_frontend
    volumes:
      - katana-static:/warriorframework_py3/static
      - nginx-secrets:/secrets
    ports:
      - "9443:8443"
    labels:
      kompose.service.expose: "true"

volumes:
  katana-static:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/katana-static
  katana-wapps:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/wapps
  katana-wui:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/wui
  nginx-secrets:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/nginx-secrets
  katana-secrets:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/katana-secrets

當我運行時:

sudo kompose up --provider openshift

錯誤如下:

FATA Error while deploying application: persistentvolumeclaims "katana-static" already exists

完整的控制台日志如下:

INFO Building image 'warrior_deployment_backend' from directory 'warrior_docker_deployment'
INFO Image 'warrior_deployment_backend' from directory 'warrior_docker_deployment' built successfully
INFO Pushing image 'warrior_deployment_backend:latest'
INFO Multiple authentication credentials detected. Will try each configuration.
INFO Attempting authentication credentials 'docker-registry-default.router.default.svc.cluster.local
INFO Successfully pushed image 'warrior_deployment_backend:latest'
INFO Building image 'warrior_deployment_frontend' from directory 'warrior_docker_deployment'
INFO Image 'warrior_deployment_frontend' from directory 'warrior_docker_deployment' built successfully
INFO Pushing image 'warrior_deployment_frontend:latest' to registry 
INFO Multiple authentication credentials detected. Will try each configuration.
INFO Attempting authentication credentials 'docker-registry-default.router.default.svc.cluster.local
INFO Successfully pushed image 'warrior_deployment_frontend:latest' 
INFO We are going to create OpenShift DeploymentConfigs, Services and PersistentVolumeClaims for your Dockerized application.
If you need different kind of resources, use the 'kompose convert' and 'oc create -f' commands instead.

INFO Deploying application in "rak-warrior-ui" namespace
INFO Successfully created Service: backend
INFO Successfully created Service: frontend
INFO Successfully created DeploymentConfig: backend
INFO Successfully created ImageStream: backend
INFO Successfully created PersistentVolumeClaim: katana-secrets 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
INFO Successfully created PersistentVolumeClaim: katana-static 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
INFO Successfully created PersistentVolumeClaim: katana-wapps 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
INFO Successfully created PersistentVolumeClaim: katana-wui 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
INFO Successfully created DeploymentConfig: frontend
INFO Successfully created ImageStream: frontend
INFO Successfully created Route: frontend
FATA Error while deploying application: persistentvolumeclaims "katana-static" already exists

根據我的觀察/分析,錯誤可能是由於以下原因:-

kompose 可能會錯誤地解釋共享卷。 如果我更清楚地解釋這一點,就像“katana-static”是前端、后端和遷移容器使用的共享卷。 kompose 執行以下步驟(這里我只關注共享卷:katana-static)

  1. kompose up 將讀取 docker-compose.yml
  2. 現在第一個容器是后端,所以它在卷下找到 katana-static,所以它創建了卷。
  3. 接下來它轉到下一個容器並再次找到 katana-static,因此它嘗試再次創建
  4. 由於它嘗試再次創建共享持久卷 katana-static,它已經存在,它拋出我們面臨的錯誤。

如果這確實是正在發生的事情,那么有什么辦法可以解決這個問題? 否則是什么導致了這個錯誤?

如果有任何其他論壇我可以問這個問題,請在評論部分分享鏈接。提前致謝。

問題可能出在本地卷上

volumes:
  katana-static:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/katana-static
  katana-wapps:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/wapps
  katana-wui:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/wui
  nginx-secrets:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/nginx-secrets
  katana-secrets:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data/warrior/katana-secrets

本地卷在 openshift 中不起作用。 我建議您使用 'kompose convert' 命令將 docker-compose 轉換為 kubernetes YAML。

然后查看並更新 pvc 和 pv。 然后最后一一部署資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM