-
Tilapäistallennustila
Ephemeraalinen tallennus
Kun tarvitaan paikallista ephemeraalista (väliaikaista) tallennustilaa, tulee luoda emptyDir-taltio. Taltio on paikallinen sille noodille, jolla Pod on käynnissä; 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 taltion, joten container-a näkee jaetun datan hakemistossa /outputdata ja container-b näkee sen hakemistossa /interim.
Muistin käyttäminen tallennusvälineenä
emptyDir-taltiosta voidaan tehdä vielä nopeampi käyttämällä tallennusvälineenä paikallisten levyjen sijasta muistia (tmpfs). 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ä medium: Memory -kentän emptyDir-kohdan alle. On suositeltavaa asettaa 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