본문 바로가기

DevOps/쿠버네티스(Kubernetes)

[CKA] Volumes

영구 볼륨(Persistent Volumes)으로 이동하기 전에 Kubernetes의 볼륨부터 보자.
먼저 도커의 볼륨을 살펴보면, 도커 컨테이너는 본질적으로 일시적인 것으로, 이것은 그것들이 짧은 기간 동안만 지속된다는 것을 의미한다.
데이터를 처리해야 할 때 요청되고 완료되면 파기된다. 컨테이너 내의 데이터도 마찬가지이다. 데이터는 컨테이너와 함께 파괴됩니다.

컨테이너에서 처리된 데이터를 유지하기 위해, 우리는 그것들이 생성될 때 볼륨을 컨테이너에 연결한다. 이제 컨테이너에서 처리된 데이터가 이 볼륨에 저장되어 영구적으로 유지된다. 컨테이너가 삭제되더라도 해당 컨테이너에서 생성되거나 처리된 데이터는 그대로 유지된다.

그렇다면 쿠버네티스에서는 어떻게 작동할까? 도커에서와 마찬가지로, 쿠버네티스에서 만들어진 pod는 본질적으로 일시적이다. 데이터를 처리하기 위해 pod가 생성된 후 삭제되면 포드에 의해 처리된 데이터도 삭제된다. 이를 위해 pod에 볼륨을 붙인다. 이제 pod가 생성한 데이터가 볼륨에 저장되고 포드가 삭제된 후에도 데이터가 남아 있다.


볼륨의 간단한 구현에 대해 살펴보자. 단일 노드 Kubernetes 클러스터가 있다.
우리는 1에서 100 사이의 랜덤 번호를 생성하고  /opt/number.out 파일로 작성하는 간단한 Pod를 만든다. 그런 다음 임의 번호와 함께 삭제된다. 포드가 생성한 수를 유지하기 위해 볼륨을 생성한다.

그리고 볼륨에는 스토리지가 필요하다. 볼륨을 생성할 때 다양한 방법으로 해당 저장소를 구성하도록 선택할 수 있다. 다양한 옵션에 대해서는 잠시 후에 살펴보겠지만, 지금은 단순히 호스트의 디렉토리를 사용하도록 구성할 것이다.
이 경우 호스트에서 /data 전달 경로를 지정한다. 이렇게 하면 볼륨에 생성된 모든 파일이 내 노드의 디렉터리 데이터에 저장된다.
볼륨이 생성되면 컨테이너에서 액세스하기 위해 볼륨을 컨테이너 내부의 디렉토리에 마운트한다. 각 컨테이너의 볼륨 마운트 필드를 사용하여 데이터 볼륨을 컨테이너 내의 디렉토리에 마운트한다. 이제 랜덤 번호가 컨테이너 내부의 /opt 에 기록된다. /opt는 = 데이터 볼륨(사실상 호스트의 데이터 디렉토리)에 있다. 포드가 삭제되어도 랜덤 번호의 파일은 호스트에 계속 남아 있다.

이제 볼륨 스토리지 옵션에 대해 살펴보자. 방금 호스트 경로 옵션을 사용하여 볼륨의 스토리지 공간으로 호스트에 직접 구성했다. 이제 단일 노드에서 정상적으로 작동하지만 다중 노드 클러스터에서는 사용하지 않는 것이 좋다.
이것은 포드가 모든 노드에서 /data 디렉토리를 사용하고 모든 노드가 동일하고 동일한 데이터를 가질 것으로 예상하지만, 그들은 서로 다른 서버에 있기 때문에, 외부 복제된 클러스터 스토리지 솔루션을 구성하지 않는 한 같지 않다.

 


Kubernetes는 다양한 유형의 스토리지 솔루션을 지원한다. NFS, cluster affairs,Flocker, fiber channel, Ceph FS, scale io 또는 AWS, EBS, Azure Desk 또는 파일과 같은 퍼블릭 클라우드 솔루션 또는 Google의 Persistent Desk와 같은 솔루션이다.
예를 들어 볼륨에 대한 스토리지 옵션으로 AWS Elastic 블록 저장소 볼륨을 구성하기 위해 볼륨의 호스트 경로 필드를 볼륨 ID 및 파일 시스템 유형과 함께 AWS Elastic 블록 저장소 필드로 교체했다. 이제 볼륨 저장소가 AWS EBS에 있다.


'DevOps > 쿠버네티스(Kubernetes)' 카테고리의 다른 글

Pod  (0) 2023.01.29
쿠버네티스란?  (0) 2023.01.28
[CKA] Container Storage Interface (CSI)  (1) 2023.01.27
[CKA] Volume Driver Plugins in Docker  (0) 2023.01.27
[CKA] Network Policy  (0) 2023.01.14