검색

6.4. 노드당 최대 Pod 수 관리

download PDF

OpenShift Container Platform에서는 노드의 프로세서 코어 수, 하드 제한 또는 둘 다에 따라 노드에서 실행할 수 있는 Pod 수를 구성할 수 있습니다. 두 옵션을 모두 사용하는 경우 두 옵션 중 더 낮은 값이 노드의 Pod 수를 제한합니다.

옵션을 둘 다 사용하는 경우 한 노드의 Pod 수는 두 값 중 작은 값으로 제한됩니다. 이 값을 초과하면 다음과 같은 결과가 발생할 수 있습니다.

  • CPU 사용률 증가
  • Pod 예약 속도 저하.
  • 노드의 메모리 크기에 따라 메모리 부족 시나리오 발생.
  • IP 주소 모두 소진
  • 리소스 과다 할당으로 인한 사용자 애플리케이션 성능 저하.
중요

Kubernetes의 경우 단일 컨테이너를 보유한 하나의 Pod에서 실제로 두 개의 컨테이너가 사용됩니다. 두 번째 컨테이너는 실제 컨테이너 시작 전 네트워킹 설정에 사용됩니다. 따라서 10개의 Pod를 실행하는 시스템에서는 실제로 20개의 컨테이너가 실행됩니다.

참고

클라우드 공급자의 디스크 IOPS 제한이 CRI-O 및 kubelet에 영향을 미칠 수 있습니다. 노드에서 다수의 I/O 집약적 Pod가 실행되고 있는 경우 오버로드될 수 있습니다. 노드에서 디스크 I/O를 모니터링하고 워크로드에 대해 처리량이 충분한 볼륨을 사용하는 것이 좋습니다.

podsPerCore 매개변수는 노드의 프로세서 코어 수에 따라 노드에서 실행할 수 있는 Pod 수를 설정합니다. 예를 들어 프로세서 코어가 4개인 노드에서 podsPerCore10으로 설정된 경우 노드에 허용되는 최대 Pod 수는 40이 됩니다.

kubeletConfig:
  podsPerCore: 10

podsPerCore0으로 설정하면 이 제한이 비활성화됩니다. 기본값은 0입니다. podsPerCore 매개변수 값은 maxPods 매개변수 값을 초과할 수 없습니다.

maxPods 매개변수는 노드의 속성에 관계없이 노드가 실행할 수 있는 Pod 수를 고정된 값으로 설정합니다.

 kubeletConfig:
    maxPods: 250

6.4.1. 노드 당 최대 pod 수 구성

podsPerCoremaxPods는 노드에 예약할 수 있는 최대 Pod 수를 제어합니다. 두 옵션을 모두 사용하는 경우 두 옵션 중 더 낮은 값이 노드의 Pod 수를 제한합니다.

예를 들어 4 개의 프로세서 코어가 있는 노드에서 podsPerCore10으로 설정된 경우 노드에서 허용되는 최대 Pod 수는 40입니다.

사전 요구 사항

  1. 다음 명령을 입력하여 구성할 노드 유형의 정적 MachineConfigPool CRD와 연결된 라벨을 가져옵니다.

    $ oc edit machineconfigpool <name>

    예를 들면 다음과 같습니다.

    $ oc edit machineconfigpool worker

    출력 예

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfigPool
    metadata:
      creationTimestamp: "2022-11-16T15:34:25Z"
      generation: 4
      labels:
        pools.operator.machineconfiguration.openshift.io/worker: "" 1
      name: worker
    #...

    1
    레이블은 Labels 아래에 표시됩니다.
    작은 정보

    라벨이 없으면 다음과 같은 키/값 쌍을 추가합니다.

    $ oc label machineconfigpool worker custom-kubelet=small-pods

프로세스

  1. 구성 변경을 위한 사용자 정의 리소스 (CR)를 만듭니다.

    max-pods CR의 설정 예

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: set-max-pods 1
    spec:
      machineConfigPoolSelector:
        matchLabels:
          pools.operator.machineconfiguration.openshift.io/worker: "" 2
      kubeletConfig:
        podsPerCore: 10 3
        maxPods: 250 4
    #...

    1
    CR에 이름을 지정합니다.
    2
    머신 구성 풀에서 라벨을 지정합니다.
    3
    노드의 프로세서 코어 수에 따라 노드가 실행할 수있는 Pod 수를 지정합니다.
    4
    노드의 속성에 관계없이 노드가 고정 값으로 실행할 수 있는 Pod 수를 지정합니다.
    참고

    podsPerCore0으로 설정하면 이 제한이 비활성화됩니다.

    위의 예에서 podsPerCore의 기본값은 10이며 maxPods의 기본값은 250입니다. 즉, 노드에 25 개 이상의 코어가 없으면 기본적으로 podsPerCore가 제한 요소가 됩니다.

  2. 다음 명령을 실행하여 CR을 생성합니다.

    $ oc create -f <file_name>.yaml

검증

  1. MachineConfigPool CRD를 나열하여 변경 사항이 적용되는지 확인합니다. Machine Config Controller에서 변경 사항을 선택하면 UPDATING 열에 True가 보고됩니다.

    $ oc get machineconfigpools

    출력 예

    NAME     CONFIG                        UPDATED   UPDATING   DEGRADED
    master   master-9cc2c72f205e103bb534   False     False      False
    worker   worker-8cecd1236b33ee3f8a5e   False     True       False

    변경이 완료되면 UPDATED 열에 True가 보고됩니다.

    $ oc get machineconfigpools

    출력 예

    NAME     CONFIG                        UPDATED   UPDATING   DEGRADED
    master   master-9cc2c72f205e103bb534   False     True       False
    worker   worker-8cecd1236b33ee3f8a5e   True      False      False

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.