본문 바로가기

Tech/[Container] Kubernetes

쿠버네티스 기본 오브젝트 - Pod

Pod

Pod Overview

 

Pod과 Container

  • Pod(파드)는 하나의 독립적인 서비스를 구동 시키는 Container들을 포함한다.
  • 하나의 Container는 여러 개의 포트를 가질 수 있지만, 한 Pod 내 다른 Container와 중복되는 포트를 사용할 수는 없다. 즉 로컬호스트 환경으로 묶여있다.
  • Pod의 IP는 생성 시 자동으로 할당되고, 재생성 시 변경되며 외부에서는 접근할 수 없다. (휘발성)

 

Pod과 Label

  • Label(라벨)모든 오브젝트에 사용할 수 있지만, 주로 Pod에서 가장 많이 사용된다.
    목적에 따라 오브젝트들을 분류하기 위해 사용한다. → 예) 검색, 오브젝트 간 연결
  • 키:값 형태로 구성되고, 한 Pod에 여러 개의 라벨을 등록할 수 있다.

 

Pod과 Node Schedule

  • Pod는 특정 워커 Node 위에서 동작하게 된다. 어디 Node 에서 동작할지 직접 선택, Scheduler 로 구분할 수 있다.
  • 직접 선택 : Pod 선언 시 nodeSelector 항목에 동작할 Node를 지정한다.
  • Scheduler : 쿠버네티스의 Scheduler각 노드의 리소스 상황과 Pod에 선언된 최소 필요 리소스 양(request 항목), 제한할 리소스 양(limits 항목)을 고려해 적절히 스케줄링한다.

Scheduler의 CPU와 Memory 리소스 초과 시 동작 방식이 상이하다.

  • CPU : 초과 시 request를 낮춰 CPU 사용률을 제어하고, 초과되더라도 Pod를 종료 시키지 않는다.
  • Memory : 초과 시 Pod를 종료 시킨다.

그 이유는 CPU와 Memory의 문제 발생 시 사이드 이펙트가 다르기 때문이다.

  • CPU는 프로세스 처리속도 지연의 문제가 발생하지만,
  • Memory는 다른 프로세스의 메모리 영역을 침범하면서 두 프로세스 모두 죽기 때문이다.

그게 만약 중요한 서비스의 프로세스였다면 치명적인 이슈로 이어질 수 있다.

 

Reference : https://inf.run/yW34