Hyppää sisältöön

Puhdin ja Mahdin laskentapalvelut ovat poistuneet käytöstä. Puhdin ja Mahdin kirjautumisnoodit sekä tallennustila ovat saatavilla 15. lokakuuta 2026 asti, mutta ne eivät enää ole palvelusopimusten piirissä. Ryhdythän toimiin datan siirtämiseksi Roihuun välittömästi. Ohjeita löydät sivulta Roihun datan siirto-opas.

Ephemeraalinen tallennus

Kun tarvitaan paikallista ephemeraalista (väliaikaista) tallennustilaa, tulee luoda emptyDir-taltio. Taltio on paikallinen sille noodille, jolla Pod suoritetaan; Rahtissa tämä on paikallinen SSD-levy. Taltio voidaan jakaa saman Podin useiden konttien kesken, ja se on nopein Rahtissa saatavilla oleva tiedostojärjestelmätallennus. emptyDir-taltio kuitenkin poistetaan, kun Pod poistetaan tai siirretään toiselle noodille. Se määritellään suoraan Podin määrityksessä, kuten seuraavassa esimerkissä:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: my-application
spec:
  volumes:
  - name: volume-a
    emptyDir:
      sizeLimit: 2Gi
  containers:
  - name: container-a
    image: almalinux:10
    command: ['sh', '-c', 'while true; do sleep 50; done']
    volumeMounts:
    - mountPath: /outputdata
      name: volume-a
  - name: container-b
    image: almalinux:10
    command: ['sh', '-c', 'while true; do sleep 50; done']
    volumeMounts:
    - mountPath: /interim
      name: volume-a

Tässä molemmat kontit liittävät saman taltioin, joten container-a näkee jaetun datan polussa /outputdata ja container-b polussa /interim.

emptyDir

Data, joka kirjoitetaan ilman taltiota

Jos kontti kirjoittaa polkuun, jota mikään taltio ei tue (esimerkiksi /tmp tai sovelluksen työhakemisto), data tallennetaan kontin kirjoitettavaan kerrokseen. Kuten emptyDir-taltio, myös kirjoitettava kerros tallennetaan noodin paikalliselle levylle. Sillä on kuitenkin joitakin tärkeitä rajoituksia:

  • Data menetetään, kun kontti käynnistetään uudelleen, esimerkiksi kaatumisen tai OOMKilled-tapahtuman jälkeen. Se menetetään myös, kun Pod poistetaan tai siirretään toiselle noodille.
  • Data näkyy vain kyseiselle kontille eikä sitä voi jakaa saman Podin muiden konttien kanssa.

Jos sovelluksesi tarvitsee väliaikaista tallennustilaa, jonka tulee säilyä kontin uudelleenkäynnistysten yli tai olla jaettavissa saman Podin konttien välillä, liitä tarvittuun polkuun emptyDir-taltio kirjoitettavan kerroksen varaan luottamisen sijaan. Käytä pysyvää tallennusta datalle, joka täytyy säilyttää Podin elinkaaren yli.

Muistin käyttäminen tallennusmediana

emptyDir-taltio voidaan tehdä vielä nopeammaksi käyttämällä tallennusmediana muistia (tmpfs) paikallisten levyjen sijaan. Muistipohjaiseen emptyDir-taltioon tallennetun datan koko lasketaan mukaan Podin muistinkäyttöön, mikä tarkoittaa, että tallennettavan datan enimmäiskoko on yhtä suuri kuin Podin muistiraja (eli Podin sisällä olevien konttien muistirajojen summa). Jos Pod ylittää muistirajansa, Kubernetes voi lopettaa yhden tai useamman kontin OutOfMemory-tilalla (OOMKilled). Näin voi tapahtua, vaikka sovellus itse ei käyttäisi liikaa muistia, koska tmpfs-taltion sisältö lasketaan mukaan rajaan. Voit luoda muistipohjaisen emptyDir-taltion lisäämällä emptyDir-kohdan alle kentän medium: Memory. On suositeltavaa määrittää sizeLimit arvoon, joka on pienempi kuin Podin muistiraja.

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - image: busybox:stable
    name: test-container
    command: ['sh', '-c', 'while true; do sleep 50; done']
    volumeMounts:
    - mountPath: /cache
      name: mem-cache-volume
    resources:
      limits:
        memory: 2Gi
  volumes:
  - name: mem-cache-volume
    emptyDir:
      sizeLimit: 500Mi
      medium: Memory

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta