[Kubernetes] Volume (emptyDir, gitRepo, initContainer, hostPath)
DevOps/Kubernetes2022. 5. 29. 20:54[Kubernetes] Volume (emptyDir, gitRepo, initContainer, hostPath)

✔️ Volume (볼륨) 볼륨 | Kubernetes 파드는 기본적으로 데이터를 영구히 저장할 수 없다. 데이터를 저장할 수는 있지만 컨테이너 즉, 파드를 삭제하면 해당 데이터는 다 사라지게 된다. 따라서 별도의 라이프 사이클을 가지는 별도의 오브젝트 리소스가 필요하다. 쿠버네티스에서는 이것을 Volume이라고 한다. vagrant@k8s-node1  ~  kubectl explain pod.spec volumes List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes 컨테이너에게 제공할 볼륨을 구성할 수 있다. v..

[Kubernetes] Object - Volume이란 (3)
DevOps/Kubernetes2022. 3. 28. 16:36[Kubernetes] Object - Volume이란 (3)

PV, PVC lifeCycle 그림으로 설명 Static Provisioning 1. 인프라 관리자(admin)가 사용할 수 있는 Storage에 해당하는 PV를 생성 예제에서는 HostPath, NFS와 public cloud GCP, AWS, Azure의 Storage를 사용할 수 있는 상태 2개의 PV 생성 [ Local Storage와 Public Cloud Storage의 Access mode에 대한 설명 ] ReadWriteOnce(RWO) : 해당 PV는 하나의 Pod에만 마운트 되고 하나의 Pod에서만 읽고 쓰기가 가능. ReadOnlyMany (ROM): 여러 개의 Pod에 마운트가 가능하며, 여러 개의 Pod에서 동시에 읽기가 가능. 쓰기는 불가능. ReadWriteMany (RWM)..

[Kubernetes] Object - Volume이란 (2)
DevOps/Kubernetes2022. 3. 28. 16:17[Kubernetes] Object - Volume이란 (2)

✔️ Network 볼륨 (Persistent Storage) Pod 내부에서 특정 데이터를 보유해야 하는 stateful한(ex. DB) app의 경우 stateless한(Pod, deployment) 데이터를 영속적으로 저장하기 위한 방법이 필요하다. Pod에서 실행 중인 어플리케이션이 디스크에 데이터를 유지해야하고 Pod가 다른 노드로 Rescheduling된 경우에도 동일한 데이터를 사용해야 한다면 Local Volume(emptyDir, hostPath volume)을 사용할 수 없다. 어떤 클러스터 노드에서도 접근할 수 있어야 하므로 NAS 유형의 스토리지에 저장이 되어야한다. 온프렘 환경에서도 구축할 수 있는 NFS, iSCSI, GlusterFS, Ceph 뿐 아니라 EBS, gcePers..

[Kubernetes] Object - Volume이란 (1)
DevOps/Kubernetes2022. 3. 28. 15:24[Kubernetes] Object - Volume이란 (1)

✔️ Volume이란 ? 쿠버네티스 Pod 내에서 돌아가는 컨테이너는 고유한 파일시스템을 갖는다. 파일시스템은 컨테이너 이미지에서 제공되기 때문이다. 따라서 컨테이너가 재시작하게되면 이전 컨테이너에서 쓰여진 파일시스템은 새롭게 재시작된 컨테이너가 볼 수 없다. 만약 컨테이너가 종료되더라도 파일시스템이 유지되도록 하고싶다면 어떻게 해야 할까 ? 이 때 사용하는 오브젝트가 Volume이다. Volume은 파드의 일부분으로 정의되며 파드와 동일한 라이프사이클을 갖는 디스크 스토리지이다. 파드가 여러개의 컨테이너를 가지는 경우 모든 컨테이너가 볼륨을 공유할 수도 있다. ✔️ Volume의 종류 내부 Network (외부) Temp Local emptyDir hostPath GlusterFS gitRepo NFS..

image