Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

23.6.3. 시스템 프로세스의 리소스 예약

스케줄러 는 Pod 요청에 따라 노드의 모든 Pod에 충분한 리소스가 있는지 확인합니다. 노드의 컨테이너 요청 합계가 노드 용량보다 크지 않음을 확인합니다. 노드에서 시작하는 모든 컨테이너가 포함되어 있지만 클러스터 지식 외부에서 시작된 컨테이너 또는 프로세스는 포함되지 않습니다.

클러스터가 작동하기 위해 노드에서 실행해야 하는 시스템 데몬(sd, docker 등)을 허용하려면 노드 용량의 일부 부분을 예약하는 것이 좋습니다. 특히 메모리와 같은 압축 불가능한 리소스의 경우 리소스를 예약하는 것이 좋습니다.

Pod가 아닌 프로세스에 대한 리소스를 명시적으로 예약하려면 다음 두 가지 방법이 있습니다.

  • 기본 방법은 스케줄링에 사용할 수 있는 리소스를 지정하여 노드 리소스를 할당하는 것입니다. 자세한 내용은 노드 리소스 할당을 참조하십시오.
  • 또는 클러스터에서 노드에서 예약하지 않고 용량을 예약하지 않는 resource-reserver Pod를 생성할 수 있습니다. 예를 들면 다음과 같습니다.

    예 23.1. resource-reserver Pod 정의

    apiVersion: v1
    kind: Pod
    metadata:
      name: resource-reserver
    spec:
      containers:
      - name: sleep-forever
        image: gcr.io/google_containers/pause:0.8.0
        resources:
          limits:
            cpu: 100m 1
            memory: 150Mi 2
    1
    클러스터에 알 수 없는 호스트 수준 데몬을 위해 노드에 예약할 CPU 양입니다.
    2
    클러스터에 알 수 없는 호스트 수준 데몬을 위해 노드에 예약할 메모리 양입니다.

    정의를 파일에 저장한 다음(예: resource-reserver.yaml ) 노드 구성 디렉터리에 파일을 배치합니다(예: /etc/origin/node/ 또는 달리 지정되는 경우 --config=<dir> 위치).

    또한 적절한 노드 구성 맵의 kubeletArguments.config 매개변수에 디렉터리를 지정하여 노드 구성 디렉토리에서 정의를 읽도록 노드 서버를 구성합니다.

    kubeletArguments:
      config:
        - "/etc/origin/node" 1
    1
    --config=<dir> 이 지정되면 여기에 <dir> 을 사용합니다.

    resource-reserver.yaml 파일을 사용하여 노드 서버를 시작하면 sleep-forever 컨테이너도 시작합니다. 스케줄러는 노드의 나머지 용량을 고려하여 그에 따라 클러스터 Pod를 배치할 위치를 조정합니다.

    resource-reserver 포드를 제거하려면 노드 구성 디렉터리에서 resource-reserver.yaml 파일을 삭제하거나 이동할 수 있습니다.