kubernets

 

시험에 나오는 내용은 아니라고 하나, 그래도 기본적으로 알아야될 내용으로 보여서 정리해보도록 한다.

 

Storage Classes

  • PV 를 사용하기 위해선 당연하게도 저장 공간이 필요하다.
  • PV 에서 사용하는 저장 공간이 있어야하고, gcloud 나 aws 같은 서비스를 통해 disk 를 생성 (Provisioning) 해주어야 한다.
  • 그래서 아래와 같은 방법으로 생성하는 걸 Static Provisioning 이라고 한다.

 

Static Provisioning

 

  • 수동으로 일일이 만들어주게되면 당연히 귀찮으므로, 이걸 대체하는 것이 Storage Classes 이다.
  • SC 를 사용하게 되면 PVC 가 SC 를 호출할 때 사용할 수 있게 자동으로 프로비져닝이 된다.

 

Dynamic Provisioning

 

  • 위 그림을 설명하자면, pvc-definition.yaml 에서 sc-definition.yaml 에 선언된 이름인 google-storage 를 호출하는 것을 볼 수 있다.
  • 여전히 PV 가 필요하지만, SC 에 의해 자동으로 생성되므로 직접 선언해줄 필요는 없다.
    • PV 는 PVC 에서 사용하는 resource 같은 느낌?
  • 로컬 스토리지 클래스가 있는데, 파드 스케줄링까지 볼륨 바인딩을 지연시키기 위해서는 스토리지클래스가 여전히 생성되어야 한다 라고 하는데 이게 무슨 말인지 잘 모르겠다.

 

그리고 StatefulSet 이 있다.

 

StatefulSet

  • Deployment 의 템플릿 (매니페스트 형식) 과 동일하다.
  • 다른 점은, 파드의 순서 보장이 된다.
    • 예를 들면 DB의 Master-Slave 구조를 보장하기 위해서는 Master 가 항상 먼저 떠 있어야하는데, Deployment 의 경우 Replica 갯수가 늘어나거나 줄어들때, 순서 보장이 안되기 때문이다.
  • headless 서비스를 만들 때 사용한다.
    • headless 서비스란, 간단하게 말해서 앞 단 서비스 (LoadBalancer 같은) 없이, 직접 호출 가능한 파드를 말한다.
    • spec.serviceName 속성에 Service 를 할당해서 사용한다.
    • StatefulSet 을 사용하면 파드 별로 고유한 DNS 가 생성된다.
  • 생성이나 삭제 시, 기존 파드들은 둔체, 스택 방식으로 변경이 된다.
  • 파드에 지정된 스토리지는 storage class 를 사용해 프로비전해서 사용한다. #
  • podManagementPolicy 정책을 통해 병렬 배포하게 설정할 수도 있다.

 

Volume 을 사용하기 위해선 Storage Classes 가 필요하다.

 

따로 매니패스트 파일을 정리하진 않았다.

 

SC 의 경우, create 로 생성할 수 없어 매뉴얼 페이지를 참고해서 생성하면 되고,

STS(StatefulSet) 의 경우 Deployments 와 동일한데 몇가지의 속성 (ServiceName, podManagementPolicy 같은) 만 다르다는 것을 참고하면 되겠다.

 

아무튼 오늘을 기점으로, 쿠버네티스에 대한 기본적인 내용이 모두 완료가 되었다.

 

하지만 section 9 에서 작년 9월에 부터 추가된 내용에 대해 공부해야되기 때문에 30% 가량은 남은 것 같다.

이건 굳이 일일이 다 정리하지는 않으려고 한다.

 

그럼 다음 시간까지 안녕 🙋‍♂️