У меня есть кластер контейнеров GCE, состоящий из 3 узлов. На каждом узле я бегу POD как один на один:Может ли PersistentVolumeClaim связываться с несколькими PersistentVolumes?
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: none
track: stable
spec:
containers:
- name: hello
image: gcr.io/persistent-volumes-test/alpine:v1.2
resources:
limits:
cpu: 0.2
memory: "10Mi"
volumeMounts:
- mountPath: "/persistentDisk"
name: persistent-disk
ports:
- containerPort: 65535
name: anti-affinity
hostPort: 65535
volumes:
- name: persistent-disk
persistentVolumeClaim:
claimName: myclaim
Хитрость определения «анти-сродства» порт гарантирует, что каждый POD работает на другом узле. Я создал 3 PersistentVolume, определенные как это:
kind: PersistentVolume
apiVersion: v1
metadata:
name: persistent-volume-1
annotations:
volume.beta.kubernetes.io/storage-class: "slow"
labels:
release: "dev"
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
gcePersistentDisk:
pdName: persistent-disk-1
fsType: ext4
и они хорошо развернуты
NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
persistent-volume-1 10Gi RWO Released default/myclaim 13h
persistent-volume-2 10Gi RWO Released default/myclaim 5h
persistent-volume-3 10Gi RWO Available 5h
определение требование заключается в следующем:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
annotations:
volume.beta.kubernetes.io/storage-class: "slow"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
selector:
matchLabels:
release: "dev"
То, что я заметил, что претензии ограничивается только одним из томов, которые я создал, поэтому только один из моих PODS может успешно развернуться. Я ожидал, что требование, когда оно используется POD, могло бы найти один доступный том для привязки к соответствующим правилам селекционеров. Другими словами, то, что я интерпретировал в PersistentVolumeClaims, заключается в том, что POD использует заявку на поиск доступного тома в наборе o PersistentVolumes, соответствующий спецификациям PVC. Так вот на мой вопрос:
Может ли тот же PersistentVolumeClaim использовать разные экземпляры одного и того же POD для подключения к различным PersistentVolumes? Или требование связано с одним и только одним томом после его создания и не может привязываться к какому-либо другому тому?
Если правильный ответ является вторым, как я могу заставить POD динамически привязываться к PersistentVolume (выбранному формам набора) при развертывании без создания претензии на POD и, таким образом, избегать создания определенного POD для каждого тома Мне нужно подключиться?
Таким образом, я должен создать 3 разных 'Pods', каждый из которых использует другой' PersistentVolumeClaim', я не могу использовать 'Deployment' выше, который реплицирует 3 раза один и тот же' Pod', верно? – Paolone
С развертыванием это правильно. Я полагаю, что объект [PetSet] (http://kubernetes.io/docs/user-guide/petset/) предоставляет тип абстракции для хранения, который вы ищете (но PetSets довольно новые, и я не так привык). –
Я думаю, что «Домашние животные» - это то, что мне нужно: «PetSets» также упоминаются как «кластерные приложения»] (http://kubernetes.io/docs/user-guide/petset/#what-is-a-pet- set), это именно то, что я пытаюсь построить. Я исследую, как их использовать. – Paolone