J'essaie de créer un déploiement à partir de mon fichier kompose, mais chaque fois que j'essaie :

kompose convert -f docker-compose.yaml

Je reçois l'erreur:

Volume mount on the host "[file directory]" isn't supported - ignoring path on the host

J'ai essayé différentes solutions à mon problème, en essayant d'abord d'ajouter hostPath à mon kompose convert ainsi que d'utiliser des volumes persistants, mais les deux ne fonctionnent pas.

Mes fichiers kompose ressemble à ceci:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f docker-compose.yaml --volumes emptyDir
    kompose.version: 1.7.0 (HEAD)
  creationTimestamp: null
  labels:
    io.kompose.service: es01
  name: es01
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: es01
    spec:
      containers:
      - env:
        - name: COMPOSE_CONVERT_WINDOWS_PATHS
          value: "1"
        - name: COMPOSE_PROJECT_NAME
          value: elastic_search_container
        - name: ES_JAVA_OPTS
          value: -Xms7g -Xmx7g
        - name: discovery.type
          value: single-node
        - name: node.name
          value: es01
        image: docker.elastic.co/elasticsearch/elasticsearch:7.2.1
        name: es01
        ports:
        - containerPort: 9200
        resources: {}
        volumeMounts:
        - mountPath: /usr/share/elasticsearch/data
          name: es01-empty0
      restartPolicy: Always
      volumes:
      - emptyDir: {}
        name: es01-empty0
status: {}

J'utilise Kompose version 1.7.0

Ma version de Docker Compose :

version: '3'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.2.1
    container_name: es01
    environment:
      - node.name=es01
      - COMPOSE_PROJECT_NAME=elastic_search_container
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms7g -Xmx7g"
      - COMPOSE_CONVERT_WINDOWS_PATHS=1
    ulimits:
      nproc: 3000
      nofile: 65536
      memlock: -1
    volumes:
      - /home/centos/Sprint0Demo/Servers/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - kafka_demo
0
James Ukilin 21 nov. 2019 à 23:46

1 réponse

Meilleure réponse

Vous devez jeter un œil à l'avertissement que vous obtenez :

Volume mount on the host "[file directory]" isn't supported - ignoring path on the host

Cela se produit lorsque le volume dans docker-compose.yaml est configuré avec un chemin direct.

Exemple ci-dessous:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - "./storage1:/test1"
      - "./storage2:/test2"
  redis:
    image: "redis:alpine"
volumes:
  storage1:
  storage2:

Demande de volume persistant

Jetez un œil sur ce lien : Matrice de conversion. Il décrit comment kompose convertit les volumes de Docker en volumes Kubernetes.

Exécution de la commande de conversion sans paramètre --volumes :

$ kompose convert -f docker-compose.yml

Avec kompose 1.19, la sortie donnera :

WARN Volume mount on the host "SOME_PATH" isn't supported - ignoring path on the host 
WARN Volume mount on the host "SOME_PATH" isn't supported - ignoring path on the host 
INFO Kubernetes file "web-service.yaml" created   
INFO Kubernetes file "redis-deployment.yaml" created 
INFO Kubernetes file "web-deployment.yaml" created 
INFO Kubernetes file "web-claim0-persistentvolumeclaim.yaml" created 
INFO Kubernetes file "web-claim1-persistentvolumeclaim.yaml" created

Le message d'avertissement signifie que vous dites explicitement à docker-compose de créer des volumes avec un chemin direct. Par défaut, kompose convertira le volume de Docker en Réclamation de volume persistant .

Vider

Exécution de la commande de conversion avec le paramètre --volumes emptyDir :

$ kompose convert -f docker-compose.yml --volumes emptyDir

Donnera effet :

WARN Volume mount on the host "SOME_PATH" isn't supported - ignoring path on the host 
WARN Volume mount on the host "SOME_PATH" isn't supported - ignoring path on the host 
INFO Kubernetes file "web-service.yaml" created   
INFO Kubernetes file "redis-deployment.yaml" created 
INFO Kubernetes file "web-deployment.yaml" created 

kompose créera une déclaration emptyDir dans web-deployment.yaml au lieu de créer des définitions séparées de PVC comme il l'a fait par défaut.

HostPath

Exécution de la commande de conversion avec le paramètre --volumes hostPath :

$ kompose convert -f docker-compose.yml --volumes hostPath

Donnera effet :

INFO Kubernetes file "web-service.yaml" created   
INFO Kubernetes file "redis-deployment.yaml" created 
INFO Kubernetes file "web-deployment.yaml" created 

Comme vous pouvez le voir, il n'y a pas d'avertissement concernant un chemin non pris en charge. Il n'y a pas d'avertissement car il a créé hostPath explicitement en utilisant vos propres chemins fournis à partir de docker-compose.yml.

Jetez un œil à la section du volume web-deployment.yaml :

      volumes:
      - hostPath:
          path: /LOCAL_PATH-/POD_PATH/storage1
        name: web-hostpath0
      - hostPath:
          path: /LOCAL_PATH-/POD_PATH/storage2
        name: web-hostpath1
2
Dawid Kruk 29 nov. 2019 à 14:55