![Создание нескольких локальных постоянных томов на одном узле с одним и тем же путем работает без исключений](https://rvso.com/image/747335/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D1%85%20%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85%20%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D1%8B%D1%85%20%D1%82%D0%BE%D0%BC%D0%BE%D0%B2%20%D0%BD%D0%B0%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC%20%D1%83%D0%B7%D0%BB%D0%B5%20%D1%81%20%D0%BE%D0%B4%D0%BD%D0%B8%D0%BC%20%D0%B8%20%D1%82%D0%B5%D0%BC%20%D0%B6%D0%B5%20%D0%BF%D1%83%D1%82%D0%B5%D0%BC%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%B1%D0%B5%D0%B7%20%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B9.png)
При выполнении тестирования настройки на кластере Kubernetes с 2 рабочими узлами с использованием вида (https://kind.sigs.k8s.io/docs/user/quick-start), я придумал это и не могу найти информацию где-либо еще.
Я создал папку на всех моих рабочих узлах в /var/testpv и создал следующий PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pg-pv
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: fast-disks
local:
path: /var/testpv
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- fvi-worker2
- fvi-worker
Все сработало, поэтому я создал второй:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pg-pv2
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: fast-disks
local:
path: /var/testpv
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- fvi-worker
- fvi-worker2
(То же самое, только другое название)
Затем я создал 2 PVC, используя этот класс хранения:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: example-local-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: fast-disks
и
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: example-local-claim2
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: fast-disks
И, наконец, два модуля, использующих эти ПВХ:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: example-local-claim
и
apiVersion: v1
kind: Pod
metadata:
name: mypod2
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: example-local-claim2
Все работает нормально, я вижу, что файлы, созданные на каждом из этих модулей, отправляются в правильное хранилище, каждый модуль находится на отдельном рабочем узле.
Однако если я попытаюсь создать новый PV, PVC и pod, то никаких ошибок не возникнет!
Хуже того, PV создается в том же месте, поэтому я фактически вижу файлы pod1 или pod2 (в зависимости от)!
Я бы предположил, что Kubernetes выполнит какую-то проверку того, что PV для того же хоста с тем же именем действительно существует, но, судя по всему, это не так.
Я что-то упускаю? Я что-то делаю не так? Или это действительно необходимо, чтобы быть очень осторожным при создании PV?
Спасибо за любую информацию.
решение1
Да, это работает, потому что это единственный способ совместного использования дисков при использовании локального pv. Это ожидаемое поведение. В некоторых случаях вам может понадобиться совместное использование файлов между подами, и это один из способов достижения этого.