![[Kubernetes] Storage Classes (스토리지 클래스)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhjkGm%2FbtrDuuV9PAS%2Fnz9bk8kXUXiKBmFPJcqmRk%2Fimg.png)
✔️ Storage Classes (스토리지 클래스) 스토리지 클래스 | Kubernetes PVC를 정의하면, PVC의 내용에 따라서 쿠버네티스 클러스터가 물리 Disk를 생성하고, 이에 연결된 PV를 생성한다. 실제 환경에서는 성능에 따라 다양한 디스크(nVME, SSD, HDD, NFS 등)를 사용할 수 있다. 디스크를 생성할때 필요한 디스크의 타입을 정의할 수 있는데 동적 프로비저닝 방식을 이용하는 것을 storageClass라고 하고, PVC에서 스토리지 클래스를 지정하면 이에 맞는 디스크를 생성하도록 한다. 개발자는 PVC를 이용해 볼륨을 손쉽게 요청할 수 있지만 운영자는 PV로 사용할 볼륨을 수동으로 프로비저닝 해야 한다. 이러한 불편함을 해결하기 위해 자동으로 볼륨을 생성, 할당하는 Sto..
✔️ 정적 프로비저닝 (Static Provisioning) PV 및 PVC 리소스를 직접 생성하고 사용하는 방식이다. ✔️ NFS를 사용한 정적 프로비저닝 (Static Provision) node1을 임시 NFS 서버로 만들고 데이터를 RWX 형태로 공유해보는 실습을 진행한다. sudo apt install nfs-kernel-server -y nfs-kernel-server 패키지를 설치한다. sudo mkdir /nfsvolume echo " Hello NFS Volume " | sudo tee /nfsvolume/index.html 디렉토리를 만들고 /nfsvolume/index.html 파일을 만든다. sudo vi /etc/exports /nfsvolume 192.168.100.0/24(rw..
![[Kubernetes] PV(PersistentVolume), PVC(PersistentVolumeClaim)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2Mmnz%2FbtrDknxMKpr%2FkG8rj3DJbnvK68lGpw8Lm0%2Fimg.png)
✔️ PV, PVC PersistentVolume : 스토리지 볼륨 정의 PersistentVolumeClaim : PV를 요청 vagrant@k8s-node1 ~/volume/hostpath kubectl api-resources | grep pv persistentvolumeclaims pvc v1 true PersistentVolumeClaim persistentvolumes pv v1 false PersistentVolum pv, pvc 모두 core 그룹의 v1이며 pv는 네임스페이스를 사용하지 않아 Global하고 pvc는 네임스페이스를 사용한다. ✔️ PV, PVC의 철학 쿠버네티스를 설계하고 pv, pvc라는 개념을 만든 사람은 파드나 파드보다 상위 레벨의 컨트롤러는 개발자들도 잘 ..
✔️ 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] Ingress Challenge](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG31jb%2FbtrC1i4mLY7%2FjqpG8rktP9gJAPHjBHKFl1%2Fimg.png)
✔️ Challenge ㅇ다음과 같은 구조로 동작하도록 리소스를 생성해보자 ! Ingress Controller가 있고 SVC가 2개 있고 RS로 파드를 2개 생성한 구조이다. 똑같은 이름의 경로를 다르게 한다던지 host를 다르게 해주어 부하분산을 할 수 있다. 2개의 서비스를 만든다. 이미지 생성 Apache Image 1 Index.html (Hello One 출력) Apache Image 2 Index.html (Hello Two 출력) 각 이미지로 2개의 파드를 생성하는 ReplicaSet 만들기 NodePort 서비스 만들기 서비스에 Ingress 만들기 호스트는 동일 (*.nip.io/one, *.nip.io/two) → 총 5개의 .yaml 파일이 생성되어야 한다. ✔️ Solution D..
![[Kubernetes] Service - ExternalName](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxD2GM%2FbtrCOqgelcG%2FZxP3rXEUyUkFxW2gVXWbkK%2Fimg.png)
✔️ Service - ExternalName 클러스터 내부에서 클러스터 외부의 특정 서비스에 접속하기 위해 DNS CNAME을 설정한다. vagrant@k8s-node1 ~/svc/exname kubectl explain svc.spec.type "ExternalName" aliases this service to the specified externalName. Several other fields do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types vagrant@k8s-node1 ..