본문 바로가기

Kubenetes/Kubernetes Resource Map

Kubernetes Resource Map (Resource 생성자 기준)

아래는 일반적인 애플리케이션이 쿠버네티스로 작동될때 사용하는 쿠버네티스의 전체 구성 요소이다.

 

일반적인 애플리케이션 매니페스트에는 하나 이상의 Deployment 또는 StatefulSet 객체가 포함돼 있다. 여기에는 컨테이너가 하나 이상 포함된 Pod Template이 있고 각각 Liveness Probe가 있다. 

 

 

ㅁ Kubernetes Network

다른 사용자에게 서비스를 제공하는 Pod는 하나 이상의 Service를 통해 노출된다. Cluster 밖에서 연결할 수 있어야 할 때 서비스는 Load Balancer 또는 NodePort 유형의 서비스로 구성되거나 Ingress Resource를 통해 노출된다.

 

 

ㅁ Kubernetes Configuration 관리

 

Pod Template(및 Template에서 생성된 Pod)은 일반적으로 Private Image Repository에서 Container Image를 가져오는데 사용되는 Secret과 Pod 내부에서 실행하는 Process에서 직접 사용되는 Secret, 두 가지 유형의 Secret을 참조한다.

Secret은 일반적으로 애플리케이션 개발자가 구성하지 않고 운영 팀에서 구성하기 때문에 애플리케이션 매니페스트의 일부가 아니다. 일반적으로 Secret은 개별 Pod에 할당된 ServiceAccount에 할당된다.

 

애플리케이션에는 환경 변수를 초기화하는데 사용되거나 Pod에서 configmap 볼륨으로 마운트하는 데 쓰이는 하나 이상의 ConfigMap을 포함하고 있다.

 

ㅁ Kubernetes Storage 

 

특정 Pod는 emptyDir 또는 gitRepo 볼륨과 같은 추가적 볼륨을 사용하지만 영구 저장을 필요로 하는 Pod는 persistentVolumeClaim 볼륨을 사용한다. PersistentVolumeClaim은 애플리케이션 매니페스트의 일부이기도 하지만, 시스템 관리자가 참조하는 StorageClass는 시스템 관리자가 먼저 작성한다.

 

 

ㅁ Kubernetes Controller

 

특정 경우에 애플리케이션에서 Job또는 CronJob을 사용해야 한다. DaemonSet은 일반적으로 애플리케이션 배포의 일부는 아니지만 시스템의 모든 노드 또는 하위 노드에서 시스템 서비스를 실행하기 위해 생성된다. 

 

HorizontalPodAustoscalers는 개발자가 매니페스트에 포함하거나 나중에 운영팀에서 시스템에 추가한다. 

 

또한 Cluster 관리자는 개별 pod 및 모든 Pod의 컴퓨팅 리소스 사용을 제어할 수 있도록 LimitRange 및 ResourceQuota 객체를 생성한다.

 

애플리케이션이 배포된 후 다양한 쿠버네티스 컨트롤러에 의해 추가 객체가 자동으로 생성된다. 여기에는 Endpoint 컨트롤러로 만든 서비스 엔드포인트 객체, 디플로이 컨트롤러로 만든 ReplicaSet 및 ReplicaSet(또는 Job, CronJob, StatefulSet 또는 DaemonSet) Controller로 만든 실제 Pod가 포함된다.

 

리소스는 종종 조직적으로 관리하기 위해 하나 이상의 Label을 사용해 분류한다. 이것은 Pod에만 적용되는 것이 아니라 모든 리소스에도 적용된다. Label외에도 대부분의 리소스는 각 리소스를 설명하는 Annotation이 있으며 해당 리소스를 담당하는사람이나 팀의 연락처 정보가 나열되거나 관리 및 기타 도구에 대한 추가 메타 데이터가 제공된다.

 

이 모든 것의 중심에는 Pod가 있으며, 가장 중요한 쿠버네티스 리소스라고 할 수 있다.