Kubernetes Resources 요약
k8s의 리소스들을 요약 해 보자. 2023-04-30

안녕하세요? 오늘은 KubernetesResource들에 대해서 알아 보도록 하겠습니다.

Kubernetes Resources (출처: https://jayendrapatil.com/kubernetes-components/)

Pod Generator

  • Pod: Pod은 k8s에서 사용되는 가장 작은 배포 단위로, 하나 이상의 container로 구성 됩니다. Pod 내의 container들은 동일 호스트에서 실행 됩니다.
  • ReplicaSet: Pod복제본을 관리하는 k8s 객체이며, 지정된 수의 Pod 복제본이 주어진 시간안에 실행 되게 합니다.
  • Deployment: Application을 배포 및 업데이트하기 위해 사용되며, ReplicaSet을 관리 하면서, 업그레이드 및 롤백과 같은 배포 전략을 구현 합니다. PodReplicaSet에 대한 선언적 업데이트가 가능하게 한다고 생각 하면 됩니다.
  • Daemonset: 각 노드 또는 특정 노드에서 Pod을 실행 하도록 합니다. 노드 단위로 실행 되어야 하는 어플리케이션이 있을 때 사용 됩니다.
  • Job: k8s에서 일회성 작업을 수행 하기 위한 객체이며, 이를 위해 Pod을 생성 합니다.
  • CronJob: 클러스터 내에서 일정한 간격으로 실행되는 작업을 관리하는 k8s 객체 입니다. linux의 cron과 유사 합니다.
  • StatefulSet: 고유한 식별자네트워크 식별자를 Pod이 재시작이 되더라도 일관되게 가질 수 있게 끔 관리하는 Kubernetes 객체 입니다. DB, Message Broker 같이 고유한 이름과 상태를 가지는 어플리케이션을 관리 할 때 유용 합니다.
  • HorizontalPodAutoscaler: 클러스터 내에서 Pod을 자동으로 확장하거나 축소하는 Kubernetes 객체입니다. 트래픽이 많아지면 Pod을 증가 시키고, 적어지면 감소 하는 식으로 이용 가능합니다.

Configuration

  • ConfigMap: ConfigMap은 설정 데이터를 저장하는 k8s 객체입니다. 어플리케이션을 구동 할 때 필요한, 환경 변수, 명령 줄 인수 등을 저장하는 역할을 수행 합니다.
  • Secret: 암호화된 데이터를 저장하는 k8s 객체로, ConfigMap과 유사하지만, 데이터를 암호화 하여 저장합니다.

Storage

  • PersistentVolume: Admin에 의해 제공되는 Storage Resource로, 클러스터 내의 물리적 스토리지 자원을 추상화하여, 스토리지를 사용하는 애플리케이션과 분리 시켜서 관리 합니다.
  • PersistentVolumeClaim: PersistentVolumeClaimPersistentVolume을 요청하는 Kubernetes 객체입니다. 즉, 애플리케이션이 사용할 수 있는 스토리지를 동적으로 할당하기 위해 PersistentVolumeClaim을 사용합니다.
  • StorageClass: PersistentVolume을 동적으로 프로비저닝하기 위해 사용하며, 스토리지 클래스 이름, 프로비저너, 볼륨 바인딩 모드, 파라미터 등을 가지고 있습니다.

Network / exposition

  • Ingress: 클러스터 외부에서 내부 서비스에 대한 HTTP(S) 라우팅을 가능하게 해 줍니다. 여러 가지 인그레스 컨트롤러를 사용하여 구현될 수 있으며, 예로 Nginx, Traefik, Istio 등의 컨트롤러가 있습니다.
  • Service: 동일한 애플리케이션을 실행하는 Pod 집합에 대해서, 네트워크 엔드포인트를 제공합니다. Service는 클러스터 내부에서 Pod을 찾아, 요청을 해당 Pod에 전달하여 로드 밸런싱을 수행합니다.
  • Endpoint: Pod의 IP 주소와 포트 번호를 나타내는 개체이며, Service와 함께 사용 됩니다.
  • NetworkPolicy: 네트워크 트래픽을 제어하기 위해 사용하며, 라벨 셀렉터를 사용하여 Pod 단위, 또는 Namespace에 적용될 수 있습니다.

RBAC (IAM)

  • Service Account: Pod 또는 Container가 클러스터 리소스에 접근할 때 사용 하는 인증 정보 입니다. 각 Pod에 대해서 기본 Service Account가 제공 됩니다.
  • User: k8s에 로그인 하고, 리소스에 액세스 하기 위한 사용자 계정을 의미 합니다. 접근 권한 관리, RBAC 부여, 인증 등을 수행 할 수 있습니다.
  • Group: User 혹은 Service Account집합입니다.
  • Role: 클러스터 내에서 리소스에 대한 작업을 수행할 수 있는 권한을 지정하는 권한 부여 규칙을 나타냅니다. Namespace 단위로 작동 합니다.
  • ClusterRole: Role과 비슷하지만, Cluster 단위로 작동 합니다.
  • ClusterRoleBinding: Role / ClusterRole에 정의된 권한을 User 또는 User 집합에 부여하는 역할을 합니다.

Resource Management

  • LimitRange: Namespace각 리소스 종류에 대해, 리소스 사용 제한을 설정 합니다.
  • Quota: Namespace당 적용되는 총 할당량 제한을 설정합니다.