Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

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

  1. Luo PVC.
  2. Luo deployment.
  3. Liitä PVC deploymentiin (Rahdissa taustalla oleva taltio provisioidaan vasta sen jälkeen, kun PVC on liitetty deploymentiin).
  4. Irrota PVC deploymentista (skaalaa deployment 0 replikaan).
  5. 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.

Create Snap Shot

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

Enter the details of Snap Shot

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:

oc apply -f snapshot.yaml

Listaa kaikki taltion tilannevedokset seuraavalla komennolla:

oc get volumesnapshot

Saat luodun taltion tilannevedoksen tiedot seuraavalla komennolla:

oc describe volumesnapshot <your-volume-snapshot>

Poista taltion tilannevedos seuraavalla komennolla:

oc delete volumesnapshot <volumesnapshot_name>

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:

oc apply -f pvc-restore.yaml

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:

  1. Luo nginx-deployment tiedostoon nimeltä nginx-deployment.yaml. Deployment liittää seuraavassa vaiheessa luodun PVC:n hakemistoon, josta nginx tarjoaa 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
    
  2. Luo PVC tiedostoon nimeltä nginx-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nginx-pvc
    spec:
      storageClassName: standard-csi
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    

    Ota molemmat tiedostot käyttöön:

    oc apply -f nginx-pvc.yaml -f nginx-deployment.yaml
    
  3. Avaa shell deploymentille luodussa Podissa, luo tiedosto nimeltä test.txt ja lisää siihen staattista sisältöä. Tämä sisältö tallennetaan aiemmin luotuun PVC:hen.

    oc rsh deployment/nginx sh -c 'echo "Hello from the snapshot" > /usr/share/nginx/html/test.txt'
    
  4. Tallenna tilannevedoksen määritys tiedostoon nimeltä nginx-snapshot.yaml. Tämän tiedoston tulee viitata nginx:n käyttämään PVC:hen (kuten tiedostossa nginx-pvc.yaml on määritetty). Tilannevedos voidaan ottaa vain silloin, kun mikään Pod ei käytä PVC:tä, joten skaalaa deployment ensin alas:

    oc scale deployment/nginx --replicas=0
    
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: nginx-snapshot
    spec:
      source:
        persistentVolumeClaimName: nginx-pvc
      volumeSnapshotClassName: standard-csi
    
    oc apply -f nginx-snapshot.yaml
    

    Odota, kunnes tilannevedos näyttää arvon READYTOUSE: true, ennen kuin jatkat:

    oc get volumesnapshot nginx-snapshot
    
  5. Poista PVC.

    oc delete pvc nginx-pvc
    
  6. 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.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nginx-restore-pvc
    spec:
      storageClassName: standard-csi
      dataSource:
        name: nginx-snapshot
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    
    oc apply -f nginx-restore-pvc.yaml
    
  7. Ota käyttöön uusi nginx-instanssi käyttäen palautettua PVC:tä muokatulla deployment-määrityksellä, joka on tallennettu tiedostoon nginx-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
    
    oc apply -f nginx-restored-deployment.yaml
    
  8. Voit nähdä, että data on palautettu.

oc rsh deployment/nginx-restored sh -c 'cat /usr/share/nginx/html/test.txt' 

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta