-
Levyn tilannevedos
Taltion tilannevedos
Taltion tilannevedoksen provisiointi
Rahti tarjoaa kaksi tapaa provisioida tilannevedoksia: selainkäyttöliittymän kautta ja CLI:tä käyttämällä.
Esivaatimukset
- Aktiivinen projekti Rahdissa.
- Yksikään Pod ei käytä PersistentVolumeClaimia (PVC), josta haluat ottaa tilannevedoksen.
Menettely
- Luo PVC.
- Luo deployment.
- Liitä PVC deploymentiin (Rahdissa taustalla oleva taltio provisioidaan vasta sen jälkeen, kun PVC on liitetty deploymentiin).
- Irrota PVC deploymentista (skaalaa deployment 0 replikaan).
- Luo taltion tilannevedos, joka käyttää PVC:tä lähteenään.
Selainkäyttöliittymän käyttäminen
Kun olet varmistanut, että PVC ei ole liitetty mihinkään Podiin, siirry vasemmanpuoleisen valikon Storage-pudotusvalikon VolumeSnapshots-osioon ja napsauta Create VolumeSnapshot luodaksesi tilannevedoksen PVC:stäsi.

Täytä vaaditut tiedot: valitse kohdassa PersistentVolumeClaim PVC, josta haluat ottaa tilannevedoksen, anna taltion tilannevedokselle Name, valitse oletustilannevedosluokka standard-csi ja napsauta Create.

CLI:n käyttäminen
Luo snapshot.yaml-tiedosto, joka viittaa PVC:hen taltion tilannevedoksen lähteenä:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: <name_of_volumesnapshot>
spec:
source:
persistentVolumeClaimName: <name_of_PVC>
volumeSnapshotClassName: standard-csi
Suorita seuraava komento luodaksesi taltion tilannevedoksen:
Listaa kaikki taltion tilannevedokset seuraavalla komennolla:
Saat luodun taltion tilannevedoksen tiedot seuraavalla komennolla:
Poista taltion tilannevedos seuraavalla komennolla:
Taltion tilannevedoksen palauttaminen
CSI Snapshot Controller Operator tarjoaa tilannevedosten mukautettujen resurssien määritykset (CRD:t) snapshot.storage.k8s.io/v1 API -ryhmässä. VolumeSnapshot-objektin sisältöä voidaan käyttää olemassa olevan taltion palauttamiseen aiempaan tilaan. Tee tämä luomalla pvc-restore.yaml-tiedosto:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim-restore
spec:
storageClassName: standard-csi
dataSource:
name: <name-of-snapshot>
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Suorita seuraava komento luodaksesi palautetun PVC:n:
Kohdassa spec.dataSource.name anna sen tilannevedoksen nimi, jota käytetään lähteenä. Pyydetyn tallennustilan on oltava vähintään yhtä suuri kuin taltio, josta tilannevedos otettiin.
Käyttötapaus
Tässä esimerkissä otamme tilannevedoksen nginx-deploymentin sisällöstä ja palautamme sisällön uuteen deploymentiin. Toimi seuraavasti:
-
Luo
nginx-deployment tiedostoon nimeltänginx-deployment.yaml. Deployment liittää seuraavassa vaiheessa luodun PVC:n hakemistoon, jostanginxtarjoaa sisältönsä:apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx # Runs as an arbitrary user ID, as Rahti requires. image: nginxinc/nginx-unprivileged:latest ports: - containerPort: 8080 volumeMounts: - name: content mountPath: /usr/share/nginx/html volumes: - name: content persistentVolumeClaim: claimName: nginx-pvc -
Luo PVC tiedostoon nimeltä
nginx-pvc.yaml:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-pvc spec: storageClassName: standard-csi accessModes: - ReadWriteOnce resources: requests: storage: 1GiOta molemmat tiedostot käyttöön:
-
Avaa shell deploymentille luodussa Podissa, luo tiedosto nimeltä
test.txtja lisää siihen staattista sisältöä. Tämä sisältö tallennetaan aiemmin luotuun PVC:hen. -
Tallenna tilannevedoksen määritys tiedostoon nimeltä
nginx-snapshot.yaml. Tämän tiedoston tulee viitatanginx:n käyttämään PVC:hen (kuten tiedostossanginx-pvc.yamlon määritetty). Tilannevedos voidaan ottaa vain silloin, kun mikään Pod ei käytä PVC:tä, joten skaalaa deployment ensin alas:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: nginx-snapshot spec: source: persistentVolumeClaimName: nginx-pvc volumeSnapshotClassName: standard-csiOdota, kunnes tilannevedos näyttää arvon
READYTOUSE: true, ennen kuin jatkat: -
Poista PVC.
-
Luo uusi PVC tilannevedoksesta tallentamalla uuden PVC-määrityksen tiedostoon
nginx-restore-pvc.yaml. Tämän tiedoston tulee määrittää, että datan lähde on edellisessä vaiheessa luotu tilannevedos. -
Ota käyttöön uusi
nginx-instanssi käyttäen palautettua PVC:tä muokatulla deployment-määrityksellä, joka on tallennettu tiedostoonnginx-restored-deployment.yaml. Tämä uusi deployment käyttää tilannevedoksesta luotua PVC:tä, minkä ansiosta se voi tarjota aiemmin lisätyn staattisen sisällön.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-restored spec: replicas: 1 selector: matchLabels: app: nginx-restored template: metadata: labels: app: nginx-restored spec: containers: - name: nginx image: nginxinc/nginx-unprivileged:latest ports: - containerPort: 8080 volumeMounts: - name: content mountPath: /usr/share/nginx/html volumes: - name: content # The only change: the PVC restored from the snapshot. persistentVolumeClaim: claimName: nginx-restore-pvc -
Voit nähdä, että data on palautettu.