-
Pysyvät levyt
Pysyvä tallennus
Monet Kubernetesissa ajettavat sovellukset tarvitsevat dataa, jonka on säilyttävä Podin uudelleenkäynnistysten, uudelleensijoittelun, häiriöiden tai päivitysten yli. Kubernetes tarjoaa pysyvän tallennuksen varmistaakseen, että data tallennetaan Podin elinkaaresta riippumatta. Tämä on olennaista tietokannoille, viestijonoille ja tilallisille sovelluksille.
Kubernetesin pysyvä tallennus rakentuu kolmen keskeisen käsitteen ympärille: StorageClassit, PersistentVolumet (PV:t) ja PersistentVolumeClaimit (PVC:t).
StorageClassit (SC:t)
StorageClass määrittelee klusterissa saatavilla olevan tallennustyypin. Se kuvaa pääasiassa provisionerin, joka vastaa PV:iden luomisesta, sekä kyseisen provisionerin parametrit. Klusterin ylläpitäjät luovat ja hallinnoivat StorageClassit, mutta tavalliset käyttäjät voivat käyttää niitä pyytääkseen tietynlaista tallennusta ilman, että heidän tarvitsee tuntea tallennusjärjestelmän matalan tason yksityiskohtia. Rahti tarjoaa oletus-StorageClassinaan standard-csi:n, jossa käytetään ReadWriteOnce-käyttötilaa.
PersistentVolumet (PV:t)
PersistentVolume (PV) edustaa klusteritasolla provisioitua tallennusresurssia (eli PV:t eivät ole sidottuja tiettyyn nimiavaruuteen, joka tunnetaan myös Rahti-projektina). Rahdissa käyttäjät eivät luo PV:itä suoraan. Sen sijaan PV:t luodaan yleensä automaattisesti sen StorageClassin provisionerin toimesta, jonka käyttäjät määrittävät PersistentVolumeClaimeissaan. PersistentVolume sisältää tietoja, kuten tallennuskapasiteetin ja käyttötilat (esimerkiksi ReadWriteOnce tai ReadWriteMany).
PersistentVolumeClaimit (PVC:t)
PersistentVolumeClaim (PVC) on objekti, jonka käyttäjät luovat pyytääkseen tallennustilaa. PVC määrittää halutun tallennuskapasiteetin, käyttötilan ja sen StorageClassin, jota käytetään vastaavan PV:n luomiseen.
Esimerkki-PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard-csi
Yllä oleva esimerkki pyytää 1 GiB pysyvää tallennustilaa, joka voidaan liittää luku-kirjoitustilassa yhteen Podiin.
Pysyviä taltioita voidaan pyytää myös selainkäyttöliittymän kautta.
Warning
Kun taltio sisältää suuren määrän tiedostoja (>15 000), liittämiseen ja käyttövalmiiksi tulemiseen kuluva aika voi olla yli 5 minuuttia. Mitä enemmän tiedostoja on, sitä kauemmin käyttövalmiiksi tuleminen kestää.
Pysyvää taltiota voidaan käyttää Podissa määrittämällä spec.volumes (määrittää liitettävät taltiot) ja spec.containers.volumeMounts (määrittää, mihin liitetyt taltiot liitetään kontin tiedostojärjestelmässä):
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: app
image: nginx:latest
volumeMounts:
- name: data-volume
mountPath: /data
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: my-data # Refers to your PersistentVolumeClaim
Warning
Kun PersistentVolume poistetaan, vastaava data poistetaan pysyvästi. On erittäin suositeltavaa tehdä datasta säännöllisesti versioituja kopioita erilliseen tallennusjärjestelmään, kuten Altaaseen.
Taltion laajentaminen
Rahti tukee dynaamista taltion laajentamista, mikä tarkoittaa, että voit kasvattaa PVC:idesi kokoa (ja epäsuorasti niihin sidottujen PV:iden kokoa), kun tarvitset lisää tallennustilaa. Tämä voidaan tehdä yksinkertaisesti kasvattamalla PVC:si YAML-määritelmän .resources.requests.storage -attribuuttia tai käyttämällä selainkäyttöliittymää kohdassa Storage -> PersistentVolumeClaims -> <volume-name> -> Actions -> Expand PVC:

Warning
Kun kasvatat PersistentVolumeClaimin (PVC) kokoa, on suositeltavaa käyttää kokoja, jotka ovat 8 GiB:n kerrannaisia (esim. 16 GiB, 32 GiB, 64 GiB, 128 GiB jne.). Muut arvot eivät välttämättä toimi, ja koon kasvatus voi epäonnistua ilman näkyvää virheilmoitusta.