본문 바로가기

Kubernetes

1. 쿠버네티스와 리소스

쿠버네티스에서는 「리소스」를 등록하는 것으로 컨테이너의 실행과 로드밸런서의 작성을 비동기로 실행됩니다. 쿠버네티스가 취급하는 리소스의 종류는 여러가지가 있으며, 하기의 표에서 API Reference가 공개되어 있습니다.

 

또한 리소스는 크게 나누어 다음의 5종류가 있습니다.

 

종류 개요
Workloads 리소스 컨테이너의 실행에 관한 리소스
Discovery & Load Balance 리소스 컨테이너를 외부에 노출하기 위한 엔드 포인트를 제공하는 리소스
Config & Storage 리소스 설정 / 기밀정보 / Persistent Volume 등에 관한 리소스
Cluster 리소스 보안 및 쿼타(Quota) 등에 관한 리소스
Metadata 리소스 클러스터 내의 다른 리소스를 조작하기 위한 리소스

이 가운데 애플리케이션 개발자가 특히 이용하는 것은 Workloads / Discovery & Load Balance / Config & Storage 인 3종류입니다.

 

 

1. Workloads 리소스

첫번째인 Workloads 리소스는 클러스터 상에 컨테이너를 가동시키기 위해 이용하는 리소스입니다. 내부적으로 사용되고 있는 것을 제외한 이용자가 직접 조작하는 것은 전부 8종류의 Workloads 리소스가 있습니다.

 

  • Pod
  • ReplicationController
  • ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job
  • Cronjob

2. Discovery & Load Balance 리소스

두번째인 Discovery & Load Balance 리소스는 컨테이너의 서비스 디스커버리와 클러스터 내부에서도 액세스 가능한 엔드포인트 등을 제공하는 리소스입니다. 내부적으로 사용되고 있는 것을 제외한 이용자가 직접 조작하는 것은 Service와 Ingress 인 2종류의 Discovery & Load Balance 리소스가 있습니다. Service에는 엔드포인트의 제공 방식이 다른 복수의 타입이 준비되어 있습니다. 아래의 리스트 중 ExternalIP Service와 None-Selector Service는 엄밀히 따지자면 Type이 아니지만 이곳에서는 하나의 타입으로서 소개합니다.

 

  • Service
    • ClusterIP
    • ExternalIP (ClusterIP의 일종)
    • NodePort
    • LoadBalancer
    • Headless (None)
    • ExternalName
    • None-Selector
  • Ingress

3. Config & Storage 리소스

세번째인 Config & Storage 리소스는 설정과 기밀 데이터(Password 등)를 컨테이너에 담거나, Persistent Volume을 제공하는 리소스입니다. Secret와 ConfigMap은 Key-Value 데이터의 구조를 가지며, 보존하고 싶은 데이터가 기밀 데이터인가 일반적인 설정정보인가에 따라 나뉘게 됩니다. PersistentVolumeClaim은 컨테이너에서 영속 볼륨을 요구할 때에 이용합니다.

 

  • Secret
  • ConfigMap
  • PersistentVolumeClaim

 

4. Cluster 리소스

네번째인 Cluster 리소스는 클러스터 자체의 행동을 정의하는 리소스입니다. 보안 설정과 정책, 클러스터의 관리성을 높이는 기능을 위한 리소스 들입니다.

 

  • Node
  • Namespace
  • PersistentVolume
  • ResourceQuota
  • ServiceAccount
  • Role
  • ClusterRole
  • RoleBinding
  • ClusterRoleBinding
  • NetworkPolicy

 

5. Metadata 리소스

마지막으로 다섯번째인 Metadata 리소스는 클러스터 안에서 다른 리소스의 동작을 제어하기 위한 리소스입니다. 예를 들면 Pod를 오토 스케일링을 시키기 위해 이용되는 HorizontalPodAutoScaler는 Deployment 리소스를 조작하여 복제 수를 변경하는 것으로 오토 스케일링을 실현하고 있습니다.

 

  • LimitRange
  • HorizontalPodAutoScalar
  • PodDisruptionBudget
  • CustomResourceDefinition