Kubernetes/Udemy - CKAD with Tests

Volumes

비번변경 2021. 8. 22. 18:07

도커 - 볼륨

도커 컨테이너는 본질적으로 일시적

데이터 처리가 필요할 때 요청하여, 처리를 완료한 뒤에는 삭제된다.

컨테이너 내의 데이터도 컨테이너와 함께 삭제되기 때문에, 데이터를 유지하기 위해서는 volume을 설정해주어야 한다.

볼륨을 설정하면 컨테이너에서 처리한 데이터가 볼륨에 저장 =>  컨테이너 삭제 후에도 데이터 유지 가능

 

쿠버네티스 - 볼륨

쿠버네티스 포드도 도커 컨테이너와 마찬가지로 일시적이다.

포드가 생성되면 데이터를 처리한 뒤에 삭제되며, 이때 처리한 데이터도 함께 삭제된다.

포드에 볼륨을 설정하면 포드에서 생성한 데이터는 볼륨에 저장 => 포드가 삭제된 이후에도 데이터 유지 가능

 

구성 방법

볼륨 구성 방법 중 하나는 호스트의 디렉터리를 사용하도록 구성(hostPath)하는 것이다. 이 경우, 볼륨 내에서 생성된 파일이 호스트 디렉터리에 저장된다.

볼륨 생성 후에는 컨테이너에서 볼륨을 접근할 수 있도록 컨테이너 내의 디렉터리에 마운트(volumeMounts) 해야 한다.

apiVersion: v1
kind: Pod
metadata:
	name: random-number-generator
spec:
	containers:
	- image: alpine
		name: alpine
		command: ["/bin/sh","-c"]
		args: ["shuf -i 0-100 -n 1 >> /opt/number.out;"]
		volumeMounts:
		- mountPath: /opt
			name: data-volume
	volumes:
	- name: data-volume
		hostPath:
			path: /data
			type: Directory

 

외부 클러스터 스토리지 솔루션

다만 다중 노드 클러스터에서는 hostPath를 사용하는 것을 권하지 않는다. 다중 노트 클러스터에서 사용하는 경우에는 모든 노드에 설정한 디렉터리가 존재하고, 모두 동일한 상태이며, 동일한 데이터를 가지고 있어야 하기 때문이다.

다중 노드 클러스터에서는 아래와 같은 외부 클러스터 스토리지 솔루션을 사용하는 것이 좋다.

  • 스토리지 솔루션 : NFS, glusterFS, Flocker, FibreChannel, CephFS, ScaleIO
  • 클라우드 솔루션 : AWS EBS, Azure Disk, Azure File, Google’s Persistent Disk

예시 ) AWS Elastic Block Store

hostPath에 해당하는 부분을 awsElasticBlockStore로 변경한다.

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