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)..
✔️ 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..
✔️ Volume이란 ? 쿠버네티스 Pod 내에서 돌아가는 컨테이너는 고유한 파일시스템을 갖는다. 파일시스템은 컨테이너 이미지에서 제공되기 때문이다. 따라서 컨테이너가 재시작하게되면 이전 컨테이너에서 쓰여진 파일시스템은 새롭게 재시작된 컨테이너가 볼 수 없다. 만약 컨테이너가 종료되더라도 파일시스템이 유지되도록 하고싶다면 어떻게 해야 할까 ? 이 때 사용하는 오브젝트가 Volume이다. Volume은 파드의 일부분으로 정의되며 파드와 동일한 라이프사이클을 갖는 디스크 스토리지이다. 파드가 여러개의 컨테이너를 가지는 경우 모든 컨테이너가 볼륨을 공유할 수도 있다. ✔️ Volume의 종류 내부 Network (외부) Temp Local emptyDir hostPath GlusterFS gitRepo NFS..
✔️ namespace란 ?! Namespace란 쿠버네티스 클러스터 내의 논리적인 분리 단위이자 오브젝트를 묶는 하나의 가상 공간 또는 그룹이다. 하나의 클러스터 내에 개발/운영/테스트 환경이 있다면 비슷한 이름의 수많은 오브젝트들이 생길 것이고 운영자와 사용자는 관리와 사용 측면에서 어려움을 겪게 된다. 쿠버네티스에서는 namespace를 통해 운영환경을 논리적으로 분리하여 운영할 수 있다. Namespace로 할 수 있는 것 사용자별로 네임스페이스 접근 권한을 다르게 운영할 수 있다. namespace 별로 리소스의 할당량을 지정할 수 있다. (ResourceQuota 사용) namespace 별로 리소스(Pod, Service)를 나눠서 관리할 수 있다. 주의해야할 점 namespace는 클러스터..
✔️ Service Discovey MSA와 같은 분산 환경은 서비스 간의 원격 호출로 구성이 된다. 원격 서비스 호출은 IP 주소와 포트를 이용하는 방식이 있다. 클라우드 환경으로 변하면서 서비스가 오토 스케일링 등에 의해 동적으로 생성되거나, 컨테이너 기반의 배포로 인해 서비스의 IP가 동적으로 변경되는 일이 잦아졌다. 그래서 서비스 Client가 서비스를 호출할 때 서비스의 위치 (즉 IP주소와 포트)를 알아낼 수 있는 기능이 필요한데, 이것을 바로 서비스 디스커버리라고 한다. Service A의 인스턴스들이 생성이 될때, Service A에 대한 주소를 Service registry (서비스 등록 서버)에 등록해놓는다. Service A를 호출하고자 하는 클라이언트는 Service registry..
✔️ Service Object의 개념 쿠버네티스에서의 Service는 Pod들의 집합이며 동일한 서비스 동작을 구현하는 여러가지 Pod를 묶어 하나로 관리하는 오브젝트이다. [Kubernetes] Object 개념 ✔️ Kubernetes 구성 쿠버네티스는 크게 오브젝트(Object)와 오브젝트를 관리하는 컨트롤러(Controller)로 나눠져 있다. 쿠버네티스 오브젝트는 쿠버네티스 시스템에서 영속성을 가진다. 오브젝트를 nice-engineer.tistory.com ✔️ Service Object의 등장 배경 1. 서비스를 위한 고정 IP의 필요성 서버는 문제가 생기면 서버를 재시작하고 서비스를 재시작하지만 Pod는 문제가 생기면 그 Pod를 삭제한 뒤 새로운 Pod를 생성한다. 따라서 Pod의 IP..