Как смонтировать папку с файлами в kubernetes - PullRequest
0 голосов
/ 20 февраля 2020

Я использую образ docker, в котором есть определенные файлы конфигурации. Мне нужно сохранить / смонтировать ту же папку на диск, так как новые файлы будут добавлены позже. Когда я использую стандартное монтирование тома в kubernetes, он монтирует пустой каталог без исходных файлов конфигурации. Как убедиться, что мои исходные файлы копируются на том во время монтирования?

        - mountPath: /tmp
          name: my-vol
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: my-vol
        persistentVolumeClaim:
          claimName: wso2-disk2```

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Предлагаемый способ предоставить конфигурации для вашего модуля - создать configmap для ваших конфигураций и смонтировать его в вашем модуле, используя тома. В этом руководстве (https://kubernetes.io/docs/concepts/storage/volumes/#configmap) описывается, как это сделать.

Другими способами являются создание persistent volume и persistent volume claim в кластере и копирование файла конфигурации по этому пути. Смонтируйте постоянный том в свой модуль.

Вы также можете скопировать свою конфигурацию на один из узлов в кластере и смонтировать этот путь, используя hostPath, но для этого необходимо, чтобы ваш модуль также работал на том же узле, что и он пытается найти путь в этом узле. (Не рекомендуемый подход)

0 голосов
/ 20 февраля 2020

Возможным решением может быть использование хранилища узлов, смонтированного на контейнерах (самый простой способ) или использование решения DFS, такого как NFS, GlusterFS и т. Д.

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

Предполагается, что у вас есть кластер kubernetes, который имеет только один узел, и вы хотите поделиться с вашими модулями путем /mtn/data вашего узла ( Source ):

Создание PersistentVolume:

HostPath PersistentVolume использует файл или каталог на узле для эмуляции сетевого хранилища.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

Создание требования PersistentVolumeClaim:

Подушки используют PersistentVolumeClaims для запроса физической памяти

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

Посмотрите на PersistentVolumeClaim:

kubectl get pvc task-pv-claim

Выходные данные показывают, что PersistentVolumeClaim привязан к вашему PersistentVolume, task-pv-volume.

NAME            STATUS    VOLUME           CAPACITY   ACCESSMODES   STORAGECLASS   AGE
task-pv-claim   Bound     task-pv-volume   10Gi       RWO           manual         30s

Создайте развертывание с 2 репликами, например:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: task-pv-claim
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/mnt/data"
              name: task-pv-storage

Теперь вы можете проверить внутри обоих контейнеров, что путь /mnt/data имеет одинаковые файлы.

Если у вас кластер с более чем одним узлом, я рекомендую вам подумать о других типах постоянные тома или DFS * 104 8 *.

Ссылки: Настройка постоянных томов Постоянные тома Типы томов

...