파드가 저장용 볼륨을 사용하도록 구성하기

파드가 저장용 볼륨을 사용하도록 구성하기 (Configure a Pod to Use a Volume for Storage)

이 페이지는 파드가 저장용 볼륨(Volume)을 사용하도록 구성하는 방법을 보여줘요.

컨테이너의 파일 시스템은 컨테이너가 존재하는 동안만 유지돼요. 그래서 컨테이너가 종료되고 재시작되면 파일 시스템 변경 사항은 사라져요. 컨테이너와 독립적인 더 일관된 저장을 위해서는 볼륨을 사용할 수 있어요. 이는 특히 키-값 저장소(예: Redis)와 데이터베이스 같은 유상태 애플리케이션에서 중요해요.

출처: 문서

본문

파드용 볼륨 구성하기

이 실습에서 한 개의 컨테이너를 실행하는 파드를 만들어요. 이 파드에는 컨테이너가 종료되고 재시작되더라도 파드 수명 동안 유지되는 emptyDir 유형의 볼륨이 있어요. 파드의 구성 파일은 다음과 같아요:

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis
    volumeMounts:
    - name: redis-storage
      mountPath: /data/redis
  volumes:
  - name: redis-storage
    emptyDir: {}

파드를 만듭니다:

kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml

파드의 컨테이너가 실행 중인지 확인하고, 파드의 변경 사항을 지켜봅니다:

kubectl get pod redis --watch

출력은 다음과 같아요:

NAME      READY     STATUS    RESTARTS   AGE
redis     1/1       Running   0          13s

다른 터미널에서 실행 중인 컨테이너의 셸을 얻습니다:

kubectl exec -it redis -- /bin/bash

셸에서 /data/redis 로 이동한 다음 파일을 만듭니다:

root@redis:/data# cd /data/redis/
root@redis:/data/redis# echo Hello > test-file

셸에서 실행 중인 프로세스를 나열합니다:

root@redis:/data/redis# apt-get update
root@redis:/data/redis# apt-get install procps
root@redis:/data/redis# ps aux

출력은 다음과 같아요:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
redis        1  0.1  0.1  33308  3828 ?        Ssl  00:46   0:00 redis-server *:6379
root        12  0.0  0.0  20228  3020 ?        Ss   00:47   0:00 /bin/bash
root        15  0.0  0.0  17500  2072 ?        R+   00:48   0:00 ps aux

셸에서 Redis 프로세스를 종료합니다:

root@redis:/data/redis# kill <pid>

여기서 <pid> 는 Redis 프로세스 ID(PID)예요.

원래 터미널에서 Redis 파드의 변경 사항을 지켜봅니다. 잠시 후 다음과 같은 모습을 보게 돼요:

NAME      READY     STATUS     RESTARTS   AGE
redis     1/1       Running    0          13s
...

이 시점에서 컨테이너는 종료됐다가 재시작됐어요. Redis 파드의 restartPolicyAlways 이기 때문이에요.

더 알아보기 (Learn more)