
A Kubernetes Pod fájlrendszerek alapértelmezés szerint átmenetiek. Ez összhangban van a konténerek hontalan jellegével. A tartós adatokat a tárolón kívül kell tárolni, még akkor is, ha úgy tűnik, hogy a tároló fájlrendszerében vannak. Így készíthet tartós tárolást a Kubernetesben.
A Kubernetes tartós tárolásának alapegysége a Állandó kötet. Ez absztrakció az alapvetőbb felett Hangerő.
A tartós kötetek függetlenek minden adott Pod-tól. A sima Docker-kötetekhez hasonlóan a Kubernetes-féle Állandó kötetek akkor is megmaradhatnak a fürtben, ha nincsenek Pod-ok.
A hüvelyek hozzáférést kapnak a perzisztens kötetekhez azáltal, hogy a Tartós kötetigény. Ez egy másik erőforrástípus, amely a Pod kérelmét jelenti a tartós tárolás használatára. A követelés a kérelmet kielégítő állandó köteteket képezi.
Egy alap példa
Nézzük meg, hogyan lehet létrehozni egy állandó tárolórendszert azáltal, hogy manuálisan beállítja az Állandó kötet és a Tartós kötet követelést. Minden erőforrás a saját jegyzékfájljába kerül. Ezekkel a fájlokkal a fürtjére alkalmazhatja kubectl apply.
Hozzon létre egy állandó kötetet
Kezdje a kötet létrehozásával:
apiVersion: v1 kind: PersistentVolume metadata: name: my-volume namespace: pvc-demo spec: storageClassName: manual capacity: storage: 2Gi accessModes: - ReadWriteOnce hostPath: path: /mnt/data
Ez a meghatározás létrehoz egy úgynevezett kötetet my-volume. 2Gi kapacitású, és itt tároljuk /mnt/data a fogadó Node-on. Mivel ezt a kötetet manuálisan készítjük, a storageClassName értékre van állítva manual. A tárolási osztályok megadhatják, hogy a kötetek csak az azonos osztályt igénylő kötetekre vonatkoznak.
Hozzon létre egy állandó kötetre vonatkozó követelést
Mostantól konfigurálhatja az állandó kötetre vonatkozó követelést:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-volume-claim namespace: pvc-demo spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
A követelés 1Gi tárhelyet igényel egy kötetből a manual osztály. A korábban létrehozott kötet megfelelhet ezeknek a feltételeknek. A követelés létrehozásakor Kubernetesnek fel kell ismernie ezt, és a követelést a kötethez kell kötnie.
Ha megvizsgálná a kötet és a követelés részleteit, látná, hogy mindkettő állapotot mutat Bound.
kubectl get pv my-volume kubectl get pvc my-volume-claim
Adjon hozzá egy hüvelyt
Az utolsó lépés a kötet igénylésének felhasználása, hogy tartós tárhelyet adjon a Podhoz.
apiVersion: v1 kind: Pod metadata: name: my-pod namespace: pvc-demo spec: containers: - name: my-container image: my-image:latest volumeMounts: - mountPath: /path/in/container name: my-pod-volume volumes: - name: my-pod-volume persistentVolumeClaim: claimName: my-volume-claim
Belül volumes szakaszban meg van adva a hivatkozás a Tartós kötet követelésre. A kötetről nem kell más információt megadnia. A Pod a követelést használja, amely megadja a kötetet, amelyhez kötődik.
A követelésre a volumeMounts. Győződjön meg róla, hogy ugyanazt a nevet használja a volumes és volumeMounts. A kötet a Pod-ba kerül a (z) által megadott helyre mountPath.
A Pod mostantól állandó tárhely áll rendelkezésre. Bármi írva /path/in/container a Perzisztens kötetbe kerül tárolásra. A Folyamatos mennyiségi igényt új hivatkozások fogják felhasználni, amelyek hivatkoznak rá, lehetővé téve az adatok számára, hogy az egyes Pod-okat túléljék.
Tárolási osztályok
Az manual A tárolási osztály akkor használható, amikor saját kötetet hoz létre, és a kötet-igénylési jegyzékek létrehozása. Különböző hangerő-bővítmény illesztőprogramok biztosítják saját tárolási osztályaikat. Hivatkozás a használni kívánt kötet típusát képviselő tárolóosztályra.
A kezelt Kubernetes-szolgáltatások általában saját tárolóosztályokat biztosítanak, amelyek a platform blokktárolási megvalósításához kapcsolódnak. Ilyenek például gcePersistentDisk a Google Kubernetes Engine-mel, vagy do-block-storage a DigitalOcean által kezelt Kubernetes-sel.
Ezekben a forgatókönyvekben nem kell létrehoznia a PersistentVolume manuálisan nyilvánul meg. Hozzon létre egy PersistentVolumeClaim a helyesel storageClassName és használja a resources.requests.storage mező (fent látható) a kívánt kapacitás megadásához. A tárolóillesztő automatikusan összekapcsolja a követelést egy kompatibilis kötetpéldányhoz.
Hozzáférési módok
Három támogatott érték létezik a accessModes terület:
ReadWriteOnce– A kötet csak egyetlen Kubernetes csomópontra csatlakoztatható. Ez a csomópont teljes olvasási és írási hozzáféréssel rendelkezik a kötethez.ReadOnlyMany– A hangerőt egyszerre több csomópont is fel tudja fogyasztani. Minden csomópont csak olvasható hozzáféréssel rendelkezik (semmi nem írhat a kötetbe).ReadWriteMany– A kötet egyszerre több csomópontra csatlakoztatható. Minden csomópont képes olvasni és írni a kötetbe.
Egy adott kötet bármikor csak egy hozzáférési módot használhat. Ez azt jelenti, hogy két kötet-követelés csak akkor kötődik ugyanahhoz a kötethez, ha mindkét követelés ugyanazt a hozzáférési módot deklarálja.
A kötetek hozzáférési módja befolyásolja a Kubernetes ütemező azon képességét, hogy a Podjainak replikáit több csomóponton átívelje. Az ReadOnlyMany/ReadWriteMany módokat kell használni, ha Podokra van szükség a tartós tárhely megosztására és több csomóponton kell replikálni.
Ne feledje, hogy nem minden tárolóillesztő támogatja az összes hozzáférési módot – ellenőrizze a bővítmény szolgáltatóját. A kötetbővítmények és a kompatibilis hozzáférési módok nem teljes listája található meg a Kubernetes dokumentációjában.
Következtetés
A Kubernetes állandó tárolása nem olyan ijesztő, mint amilyennek első pillantásra tűnik. Győződjön meg arról, hogy a tárhoz hozzáférést igénylő hüvelyek olyan kötetekkel rendelkeznek, amelyek egy állandó kötet-követeléshez vannak kötve.
Ha állandó kötetre vonatkozó állításokat használnak, a Kubernetes létrehoz egy állandó kötetet, amely túléli az egyes hüvelyeket. Amikor a hüvelyeket kicserélik, az igényelt kötetek automatikusan bekerülnek az új hüvelyekbe. Az adatok a követelés törléséig nem semmisülnek meg.
