Kubernetes의 영구 저장소 Persistent volumes with AKS

혹시·2024년 10월 29일

K8S

목록 보기
9/11

기본적으로 pod가 삭제되거나 컨테이너가 재시작 됨에 따라 파일 시스템의 데이터가 삭제된다. stateless 응용 프로그램의 경우 상관없으나, statefl 응용 프로그램과 같이 데이터를 지속적으로 저장해야 하는 경우 저장소가 필요하다.

k8s에는 여러가지가 볼륨이 있는데 AKS에선 PV(영구적 볼륨)는 Kubernetes API에서 만들어지고 관리되는 스토리지 리소스로 만들 수 있다.

  • Azure Disk, Azure Files로 사용 가능
  • Azre Disk의 경우 ReadWriteOnce로 탑재, 단일 노드
  • Azure Files의 경우 여러 노드에 동시에 액세스 해야 할 경우 사용

1. Azure Disk 생성

리소스 그룹 확인: AKS 클러스터의 리소스 그룹 이름을 확인합니다.

az aks show --resource-group <yourResourceGroup> --name <yourAKSCluster> --query nodeResourceGroup -o tsv

디스크 생성: 이제 Azure CLI를 사용하여 디스크를 생성합니다.

az disk create --resource-group MC_myResourceGroup_myAKSCluster_eastus --name myAKSDisk --size-gb 20 --query id --output tsv

디스크 ID는 다음 단계에서 사용됩니다.

2. Persistent Volume 정의

pv-azuredisk.yaml 파일 생성: 다음 내용을 포함하는 파일을 생성합니다. 여기서 volumeHandle에는 이전 단계에서 생성된 디스크 ID를 입력합니다.

apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/provisioned-by: disk.csi.azure.com
  name: pv-azuredisk
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: managed-csi
  csi:
    driver: disk.csi.azure.com
    volumeHandle: <디스크 ID>
    volumeAttributes:
      fsType: ext4

3. Persistent Volume Claim 정의

pvc-azuredisk.yaml 파일 생성: 다음 내용을 포함하는 파일을 생성합니다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-azuredisk
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  volumeName: pv-azuredisk
  storageClassName: managed-csi

4. 리소스 생성

kubectl을 사용하여 리소스를 생성합니다.

kubectl apply -f pv-azuredisk.yaml
kubectl apply -f pvc-azuredisk.yaml
kubectl get pvc pvc-azuredisk

5. 볼륨을 사용하는 Pod 생성

azure-disk-pod.yaml 파일 생성: 다음 내용을 포함하는 파일을 생성합니다.

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: mypod
      image: nginx
      volumeMounts:
        - mountPath: /mnt/azure
          name: azure
  volumes:
    - name: azure
      persistentVolumeClaim:
        claimName: pvc-azuredisk

6. Pod 생성

Pod 리소스를 생성합니다.

kubectl apply -f azure-disk-pod.yaml

확인

  • 파트가 완전 실행중은 아니지만 Volumes 섹션에서 azure라는 이름의 볼륨이 Persistent Volume Claim(pvc-azuredisk)에 연결되어 있음을 확인할 수 있습니다.

https://learn.microsoft.com/ko-kr/azure/aks/azure-csi-disk-storage-provision
https://learn.microsoft.com/ko-kr/azure/aks/concepts-storage#persistent-volumes

profile
클라우드하는 귀여운 애

0개의 댓글