볼륨과 저장소
데이터를 유지해야 하는 애플리케이션을 배포할 때는 퍼시스턴트 스토리지를 만들어야 합니다. 퍼시스턴트 스토리지를 사용하면 애플리케이션을 실행하는 파드 외부에 애플리케이션 데이터를 저장할 수 있습니다. 이 스토리지 방식을 사용하면 애플리케이션의 파드에 장애가 발생하더라도 애플리케이션 데이터를 유지할 수 있습니다.
퍼시스턴트 볼륨(PV: persistent volume)은 쿠버네티스 클러스터의 스토리지 조각이며, 퍼시스턴트 볼륨 클레임(PVC: persistent volume claim)은 스토리지에 대한 요청입니다. PV와 PVC의 작동 방식에 대한 자세한 내용은 스토리지 공식 쿠버네티스 문서를 참조하세요.
K3s, as a compliant Kubernetes distribution, uses the Container Storage Interface (CSI) and Cloud Provider Interface (CPI) to manage persistent storage.
이 페이지는 로컬 스토리지 제공자 또는 Longhorn을 사용하여 퍼시스턴트 스토리지를 설정하는 방법을 설명합니다.
로컬 스토리지 공급자 설정하기
K3s는 랜처의 로컬 경로 프로비저너와 함께 제공되며, 이를 통해 각 노드의 로컬 스토리지를 사용하여 영구 볼륨 클레임(persistent volume claims)을 즉시 생성할 수 있습니다. 아래에서는 간단한 예제를 다루겠습니다. 자세한 내용은 공식 문서 여기를 참조하세요.
호스트 경로 지원 퍼시스턴트 볼륨 클레임과 이를 활용할 파드를 생성합니다:
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-path-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 2Gi
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: volume-test
namespace: default
spec:
containers:
- name: volume-test
image: nginx:stable-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
- name: volv
mountPath: /data
ports:
- containerPort: 80
volumes:
- name: volv
persistentVolumeClaim:
claimName: local-path-pvc
yaml을 적용합니다:
kubectl create -f pvc.yaml
kubectl create -f pod.yaml
PV 및 PVC가 생성되었는지 확인합니다:
kubectl get pv
kubectl get pvc
상태는 각각 Bound
여야 합니다.
Longhorn 구성하기
Longhorn은 ARM32를 지원하지 않습니다. |
K3s는 쿠버네티스용 오픈소스 분산형 블록 스토리지 시스템인 Longhorn을 지원합니다.
아래는 간단한 예제입니다. 자세한 내용은 공식 문서를 참고하시기 바랍니다.
longhorn.yaml을 적용하여 Longhorn을 설치합니다:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.8.1/deploy/longhorn.yaml
Longhorn은 네임스페이스 longhorn-system
에 설치됩니다.
Create a persistent volume claim and a pod to utilize it:
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: longhorn-volv-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 2Gi
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: volume-test
namespace: default
spec:
containers:
- name: volume-test
image: nginx:stable-alpine
imagePullPolicy: IfNotPresent
volumeMounts:
- name: volv
mountPath: /data
ports:
- containerPort: 80
volumes:
- name: volv
persistentVolumeClaim:
claimName: longhorn-volv-pvc
yaml을 적용하여 PVC와 파드를 생성합니다:
kubectl create -f pvc.yaml
kubectl create -f pod.yaml
PV 및 PVC가 생성되었는지 확인합니다:
kubectl get pv
kubectl get pvc
상태는 각각 Bound
여야 합니다.