본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 185: Volumes

by 공부하는 무니 2023. 1. 20.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


persistent volume으로 이동하기 전에 Kubernetes의 볼륨부터 살펴보겠습니다.

먼저 Docker의 볼륨을 살펴보겠습니다. Docker 컨테이너는 본질적으로 임시적이므로 짧은 시간 동안만 지속됩니다. 데이터 처리가 필요할 때 호출되고 완료되면 폐기됩니다. 컨테이너 내의 데이터도 마찬가지입니다. 데이터는 컨테이너와 함께 파괴됩니다. 컨테이너에서 처리한 데이터를 유지하기 위해 컨테이너가 생성될 때 컨테이너에 볼륨을 연결합니다. 컨테이너에서 처리한 데이터는 이제 이 볼륨에 배치되어 영구적으로 유지됩니다. 컨테이너가 삭제되더라도 컨테이너에서 생성되거나 처리된 데이터는 그대로 유지됩니다.

그렇다면 쿠버네티스 세계에서는 어떻게 작동할까요? Docker에서와 마찬가지로 Kubernetes에서 생성된 파드는 본질적으로 일시적입니다. 데이터를 처리하기 위해 Pod를 생성한 후 삭제하면 Pod에서 처리한 데이터도 함께 삭제됩니다. 이를 위해 파드에 볼륨을 연결합니다. 파드에서 생성된 데이터는 이제 볼륨에 저장되며, 파드이 삭제된 후에도 데이터가 그대로 유지됩니다. 간단한 볼륨 구현을 살펴보겠습니다.

단일 노드 Kubernetes 클러스터가 있습니다. 우리는 1에서 100 사이의 임의의 숫자를 생성하고 /opt/number.out 으로 파일을 작성하는 간단한 파드를 만듭니다. 그런 다음 그 임의의 숫자와 함께 삭제됩니다.

Volume Storage Options

파드에서 생성된 번호를 유지하기 위해 볼륨을 생성합니다. 볼륨에는 스토리지가 필요합니다. 볼륨을 생성할 때 다양한 방식으로 스토리지를 구성하도록 선택할 수 있습니다. 다양한 옵션을 잠시 살펴보겠지만 지금은 간단히 호스트의 디렉토리를 사용하도록 구성하겠습니다.

이 경우 hostPath에 /data 를 지정합니다. 이렇게 하면 볼륨에 생성된 모든 파일이 내 노드의 디렉토리 데이터에 저장됩니다. 볼륨이 생성되면 컨테이너에서 볼륨에 액세스하기 위해 컨테이너 내부의 디렉토리에 볼륨을 마운트합니다. 각 컨테이너의 볼륨 마운트 필드를 사용하여 데이터 볼륨을 /opt 디렉토리에 마운트합니다. 난수는 이제 데이터 볼륨에 있는 컨테이너 내부의 /opt 마운트에 기록되며 실제로는 호스트의 데이터 디렉토리입니다. 파드가 삭제되더라도 난수를 가진 파일은 여전히 호스트에 있습니다.

한 걸음 물러서서 볼륨 스토리지 옵션을 살펴보겠습니다. 호스트 경로 옵션을 사용하여 호스트에서 볼륨의 저장 공간으로 직접 구성했습니다. 이제는 단일 노드에서 제대로 작동하지만 다중 노드 클러스터에서는 사용하지 않는 것이 좋습니다. Pod가 모든 노드에서 /data 디렉토리를 사용하고 모든 노드가 동일하고 동일한 데이터를 가질 것으로 예상하기 때문입니다. 서로 다른 서버에 있기 때문에 실제로는 동일하지 않습니다. 일종의 외부 복제 클러스터 스토리지 솔루션을 구성하지 않는 한. Kubernetes는 NFS, 클러스터 문제, Flocker, 파이버 채널, Ceph FS, scale io 또는 AWS, EBS, Azure 데스크 또는 파일과 같은 퍼블릭 클라우드 솔루션 또는 Google의 Persistent Desk와 같은 여러 유형의 다양한 스토리지 솔루션을 지원합니다. 예를 들어 AWS Elastic Block Store 볼륨을 볼륨의 스토리지 옵션으로 구성하기 위해 볼륨의 호스트 경로 필드를 볼륨 ID 및 파일 시스템 유형과 함께 AWS Elastic Block Store 필드로 교체했습니다.

volumes:
- name: data-volume
  awsElasticBlockStore:
    volumeID: <volume-id>
    fsType: ext4

볼륨 스토리지는 이제 AWS EBS에 있습니다. 이것이 Kubernetes의 볼륨에 관한 것입니다. 이제 이후 강의에서 persistent volume에 대해 논의하겠습니다.

반응형

댓글