Как смонтировать указанный файл c в папке pod, содержащей несколько файлов и папок в kubernetes - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь смонтировать указанный c файл из папки, содержащей несколько файлов и папок модуля kubernetes, в путь хост-машины в качестве резервной копии.

Я использую PersistentVolumeClaim в качестве тома, и я возможность смонтировать всю папку вместо указанного файла c. И эта папка доступна через путь хост-машины.

Ниже приведены мои развертывания, файлы PV C и PV.

Файл развертывания:

containers:
- name: katana-db
  image: postgres:10.4
  imagePullPolicy: IfNotPresent
  envFrom:
  - configMapRef:
      name: war-config
  volumeMounts:
  - mountPath: /var/lib/postgresql/data
    name: katana-db
volumes:
- name: katana-db
  persistentVolumeClaim:
    claimName: katana-db-volume-claim

Заявка на постоянный том:

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: katana-db-volume-claim
  namespace: {{ $.Values.namespace }}
  creationTimestamp: null
spec:
  storageClassName: manual
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  volumeName: "katana-db-volume"
---

Постоянный том:

---
kind: PersistentVolume
apiVersion: v1
metadata:
  name: katana-db-volume
  namespace: {{ $.Values.namespace }}
spec:
  storageClassName: manual
  capacity:
    storage: 2Gi
  persistentVolumeReclaimPolicy: Retain
  accessModes:
  - ReadWriteMany
  nfs:
    path: /mnt/k8sMount/data/local-persist/data/warrior/katana-db
    server: 167.254.204.64
---

Я хочу смонтировать файл "/ var /lib/postgresql/data/config.ini "вместо полной папки" / var / lib / postgresql / data ", о которой я упоминал в файле развертывания, чтобы я мог создать резервную копию этого файла на моем хост-компьютере.

Я нашел том "hostpath", но он, кажется, не подходит для работы, как предлагают форумы kubernetes.

Пожалуйста, дайте мне знать том, который я могу использовать для монтирования указанного c файла из папку в модуле Pod, чтобы я мог получить к ней доступ через хост-компьютер.

1 Ответ

0 голосов
/ 21 апреля 2020

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

Чтобы смонтировать файл вместо каталога, вы можете использовать subPath, как в этом примере:

    volumeMounts:
    - name: test
      mountPath: /var/lib/postgresql/data/config.ini
      subPath: config.ini

Вам нужно использовать mountPath с каталогом и именем файла и subPath поле с имя файла также.

Вместо hostPath вы можете использовать сервер NFS , и, если он необходим на хосте, вы можете смонтировать nfs в него. Благодаря этому вы можете быть уверены, что содержимое этого тома сохранено.

А затем просто подключите сервер, как в этом примере :

    volumeMounts:
    - name: test
      mountPath: /var/lib/postgresql/data/config.ini
      subPath: config.ini

  volumes:
    - name: nfs-volume
      nfs: 
        server: nfs.example.com # Change this to your NFS server
        path: /data # Change it to something relevant for your case

Дайте мне знать если это поможет

...