Kubernetes in Action 14장 포드의 계산 리소스 관리

  1. 포드 컨테이너의 리소스 요청
    1. 리소스 요청을 포함한 포드 만들기: resources:, requests-pod top
    2. 리소스 요청이 스케쥴링에 미치는 영향
      1. 포드가 노드에서 실행할 수 있는지 스케줄러가 결정하는 방법: 사용량(X) 요청량(O)
      2. 포드를 위한 최상의 노드를 선택할 때 스케줄러가 포드의 요청을 사용하는 방법: LeastRequestedPriority, MostRequestedPriority
        1. 노드의 용량 검사
        2. 어떤 노드에서 실행할 수 없는 포드 만들기
        3. 포드가 스케줄되지 않은 이유 알아내기
        4. 포드가 스케줄될 수 있도록 리소스 해제
      3. CPU 요청이 CPU 시간 공유에 미치는 영향
      4. 사용자 지정 리소스의 정의와 요청
  2. 컨테이너에 사용 가능한 리소스 한계
    1. 컨테이너가 사용 가능한 리소스 양에 대한 엄격한 한계 설정
      1. 리소스 한계를 가진 포드 만들기
      2. 한계 오버커밋
    2. 한계 초과: CrashLoopBackOff 상태
    3. 컨테이너 앱이 한계를 확인하는 방법
      1. 컨테이너는 항상 컨테이너가 아닌 노드의 메모리를 본다
      2. 컨테이너는 모든 노드의 CPU 코어도 본다
  3. 포드의 QoS 클래스 이해: BestEffort, Bustable, Guranteed
    1. 포드에의 QoS 클래스 정의
      1. BestEffort 클래스에 포드 할당
      2. Guaranteed 클래스에 포드 할당
      3. Bustable QoS 클래스를 포드에 할당
      4. QoS 클래스의 요청과 한계 사이의 관계를 정의하는 법
      5. 컨테이너의 QoS 클래스 이해
      6. 다수의 컨테이너의 포드 QoS 클래스 이해
    2. 메모리가 부족할 때 어떤 프로세스가 강제 종료되는지 이해하기
      1. QoS 클래스가 줄을 세우는 방식
      2. 동일한 QoS 클래스의 컨테이너를 다루는 방법: OutOfMemory 점수
  4. 네임스페이스당 포드에 대한 기본 요청 및 한계 설정
    1. LimitRange 리소스 소개
    2. LimmitRange 객체 만들기
    3. 한계 적용
    4. 기본 리소스 요청 및 한계 적용
  5. 네임스페이스에서 사용 가능한 총 리소스 한계
    1. ResourceQuota 객체 소개
      1. CPU와 메모리의 ResourceQuota 생성
      2. quota와 quota 사용법 검사
      3. ResourceQuota와 함께 LimitRange 생성
    2. 영구 스토리지에 할당량 지정
    3. 생성 가능한 객체 수 제한
    4. 특정 포드 상태나 QoS 클래스의 할당량 지정
  6. 포드 리소스 사용 모니터링
    1. 실제 리소스 사용량 수집 및 검색: cAdvisor 에이전트, Heapster 컴포넌트
      1. 힙스터 활성화
      2. 클러스터 노드의 CPU 및 메모리 사용량 표시
      3. 개별 포드의 CPU와 메모리 사용량 표시
    2. 리소스 사용 통계의 히스토리 저장 및 분석
      1. 인플러스DB와 그라파나 소개
      2. 클러스터에서 실행 중인 인플럭스DB와 그라파나
      3. 그라파나로 리소스 사용 분석
      4. 파드에 표시된 정보 사용
  7. 요약
    1. 리소스 요청을 지정하면 쿠버네티스가 클러스터에서 포드를 스케줄하는 데 도움이 된다
    2. 리소스 한계를 지정하면 다른 리소스 포드가 기아 상태로 들어가는 것을 방지한다.
    3. 사용되지 않은 CPU 시간은 컨테이너의 CPU 요청에 따라 할당된다.
    4. 너무 많은 CPU를 사용한다고 해서 컨테이너를 강제 종료하진 않지만 너무 많은 메모리를 사용하려고 하면 컨테이너를 강제 종료한다.
    5. 오버커밋된 시스템에서는 포드의 QoS 클래스와 실제 메모리 사용량에 따라 더 중요한 포드의 메모리를 확보하기 위해 컨테이너를 강제 종료한다.
    6. LimitRange 객체를 사용해 개별 포드에 최소, 최대, 기본 리소스 요청 및 한계를 정의할 수 있다.
    7. ResourceQuota 객체를 사용해 네임스페이스의 모든 포드가 사용할 수 있는 리소스의 양을 제한할 수 있다.
    8. 포드의 리소스 요청 및 한계 대비 얼마나 많이 사용하는지 알기 위해서는 충분한 기간 동안 포드가 리소스를 사용하는 방식을 모니터링해야 한다.

Loading

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published. Required fields are marked *