4.9. Descheduler


4.9.1. Descheduler 개요

스케줄러 는 새 Pod를 호스팅하는 데 가장 적합한 노드를 결정하는 데 사용되지만 Descheduler는 더 적합한 노드에 Pod를 다시 예약할 수 있도록 실행 중인 Pod를 제거하는 데 사용할 수 있습니다.

4.9.1.1. Descheduler 정보

Descheduler를 사용하여 특정 전략에 따라 Pod를 제거하여 Pod를 더 적절한 노드에 다시 예약할 수 있습니다.

다음과 같은 상황에서 실행 중인 Pod의 일정을 조정하면 이점을 누릴 수 있습니다.

  • 노드가 충분히 사용되지 않았거나 너무 많이 사용되었습니다.
  • 오염 또는 라벨과 같은 Pod 및 노드 선호도 요구 사항이 변경되었으며, 원래 일정 결정이 더 이상 특정 노드에 적합하지 않습니다.
  • 노드 장애로 Pod를 이동해야 합니다.
  • 새 노드가 클러스터에 추가되었습니다.
  • Pod가 너무 많이 재시작되었습니다.
중요

Descheduler는 제거된 Pod의 교체를 예약하지 않습니다. 제거된 Pod에 대한 이러한 작업은 스케줄러에서 자동으로 수행합니다.

Descheduler가 노드에서 Pod를 제거하도록 결정하는 경우 다음과 같은 일반 메커니즘을 사용합니다.

  • openshift-*kube-system 네임스페이스의 Pod는 제거되지 않습니다.
  • priorityClassNamesystem-cluster-critical 또는 system-node-critical로 설정된 중요 Pod는 제거되지 않습니다.
  • 복제 컨트롤러, 복제본 세트, 배포, 상태 저장 세트 또는 작업에 포함되지 않은 정적, 미러링 또는 독립 실행형 Pod는 다시 생성되지 않기 때문에 제거되지 않습니다.
  • 데몬 세트와 연결된 Pod는 제거되지 않습니다.
  • 로컬 스토리지가 있는 Pod는 제거되지 않습니다.
  • 최상의 Pod가 버스트 가능 Pod 및 보장된 Pod보다 먼저 제거됩니다.
  • descheduler.alpha.kubernetes.io/evict 주석이 있는 모든 Pod 유형을 제거할 수 있습니다. 이 주석은 제거를 방지하는 검사를 덮어쓰는 데 사용되며 사용자는 제거할 Pod를 선택할 수 있습니다. 사용자는 Pod를 다시 생성하는 방법과 다시 생성되는지의 여부를 알아야 합니다.
  • PDB(Pod 중단 예산)가 적용되는 Pod는 일정 조정에서 해당 PDB를 위반하는 경우 제거되지 않습니다. Pod는 PDB를 처리하는 제거 하위 리소스를 사용하여 제거합니다.

4.9.1.2. Descheduler 프로필

Descheduler 프로필을 사용하여 Pod 라이프사이클 또는 노드 사용률과 같은 기준에 따라 클러스터를 재조정하는 특정 제거 전략을 활성화합니다.

다음 Descheduler 프로필을 사용할 수 있습니다.

AffinityAndTaints

이 프로필은 Pod 간 유사성 방지, 노드 유사성, 노드 테인트를 위반하는 Pod를 제거합니다.

다음과 같은 전략을 활성화합니다.

  • RemovePodsViolatingInterPodAntiAffinity: Pod 간 유사성 방지를 위반하는 Pod를 제거합니다.
  • RemovePodsViolatingNodeAffinity: 노드 유사성을 위반하는 Pod를 제거합니다.
  • RemovePodsViolatingNodeTaints: 노드에서 NoSchedule 테인트를 위반하는 Pod를 제거합니다.

    노드 유사성 유형이 requiredDuringSchedulingIgnoredDuringExecution인 Pod가 제거됩니다.

TopologyAndDuplicates

이 프로필은 노드 간에 유사한 Pod 또는 동일한 토폴로지 도메인의 Pod를 균등하게 분배하기 위해 Pod를 제거합니다.

다음과 같은 전략을 활성화합니다.

  • RemovePodsViolatingTopologySpreadConstraint: DoNotSchedule 제약 조건을 위반하는 경우 균형이 맞지 않는 토폴로지 도메인을 찾아 더 큰 도메인에서 Pod를 제거합니다.
  • RemoveDuplicates: 동일한 노드에서 실행 중인 복제본 세트, 복제 컨트롤러, 배포 또는 작업과 연결된 Pod가 하나뿐인지 확인합니다. Pod가 두 개 이상인 경우 클러스터에서 Pod를 더 잘 배포하기 위해 이러한 중복 Pod를 제거합니다.
주의

다음 프로필 중 하나로 TopologyAndDuplicates 를 활성화하지 마십시오: softTopologyAndDuplicates 또는 Cryostat AndScale. 이러한 프로필을 사용하면 충돌이 발생합니다.

LifecycleAndUtilization

이 프로필은 장기 실행 Pod를 제거하고 노드 간 리소스 사용량의 균형을 조정합니다.

다음과 같은 전략을 활성화합니다.

  • RemovePodsHavingTooManyRestarts: 컨테이너가 너무 여러 번 재시작된 Pod를 제거합니다.

    Init Container를 포함하여 모든 컨테이너(Init Container 포함)를 다시 시작할 수 있는 Pod 수가 100을 초과합니다.

  • LowNodeUtilization: 활용도가 낮은 노드를 찾고, Pod 재생성 시 Pod가 이처럼 활용도가 낮은 노드에 예약되도록 가능하면 과도하게 사용된 노드에서 Pod를 제거합니다.

    • 모든 임계값(CPU, 메모리, Pod 수)에서 사용량이 20% 미만인 경우 노드는 활용도가 낮은 것으로 간주됩니다.
    • 모든 임계값(CPU, 메모리, Pod 수)에서 사용량이 50%를 초과하면 노드는 과도하게 사용되는 것으로 간주됩니다.

    필요한 경우 기술 프리뷰 필드를 devLowNodeUtilizationThresholds 필드 dev Low NodeUtilizationThresholds를 다음 값으로 설정하여 활용도가 낮은 임계값을 조정할 수 있습니다. 10 %/30%의 경우 낮음, 중간 은 20%/50 % 또는 높음 for 40%/70%입니다. 기본값은 Medium 입니다.

  • PodLifeTime: 너무 오래된 Pod를 제거합니다.

    기본적으로 24시간이 지난 Pod가 제거됩니다. Pod 수명 값을 사용자 지정할 수 있습니다.

주의

Long Lifecycle 또는 Cryostat AndScale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 이러한 프로필을 사용하면 충돌이 발생합니다.

SoftTopologyAndDuplicates

이 프로필은 whenUnsatisfiable: ScheduleAnyway 와 같은 소프트 토폴로지 제약 조건이 있는 Pod도 제거용으로 간주된다는 점을 제외하고 TopologyAndDuplicates 와 동일합니다.

주의

softTopologyAndDuplicates 및 TopologyAndDuplicates 를 모두 활성화하지 마십시오. 두 결과를 모두 활성화하면 충돌이 발생합니다.

EvictPodsWithLocalStorage
이 프로필을 사용하면 로컬 스토리지가 있는 Pod를 제거할 수 있습니다.
EvictPodsWithPVC
이 프로필을 사용하면 영구 볼륨 클레임이 있는 Pod를 제거할 수 있습니다. Kubernetes NFS 하위 디렉터리 외부 프로비저닝기를 사용하는 경우 프로비저너가 설치된 네임스페이스에 대해 제외된 네임스페이스를 추가해야 합니다.
CompactAndScale

이 프로필을 사용하면 활용도 가 낮은 노드에서 Pod를 제거하려고 하면 더 작은 노드 세트에서 워크로드를 실행할 수 있습니다. 모든 임계값(CPU, 메모리, Pod 수)에서 사용량이 20% 미만인 경우 노드는 활용도가 낮은 것으로 간주됩니다.

필요한 경우 기술 프리뷰 필드 devHighNodeUtilizationThresholds 필드를 10%, Modest for 20% 또는 30%의 Moderate 값으로 설정하여 활용도가 낮은 백분율을 조정할 수 있습니다. 기본값은 Modest 입니다.

주의

Lifecycle AndUtilization,LongLifecycle 또는 TopologyAndDuplicates 와 같은 프로필을 사용하여 CryostatAndScale 을 활성화하지 마십시오. 이러한 프로필을 사용하면 충돌이 발생합니다.

KubeVirtRelieveAndMigrate

이 프로필은 LongLifeCycle 프로필의 향상된 버전입니다.

KubeVirtRelieveAndMigrate 프로필은 높은 비용의 노드에서 Pod를 제거하여 전체 리소스 비용을 줄이고 워크로드 마이그레이션을 가능하게 합니다. 또한 노드 간에 유사한 예비 용량을 유지 관리할 수 있도록 워크로드를 주기적으로 재조정하여 갑작스러운 워크로드 급증을 보다 효과적으로 처리할 수 있도록 지원합니다. 노드는 다음과 같은 비용이 발생할 수 있습니다.

  • 리소스 사용률: 리소스 부족을 늘리면 애플리케이션을 실행하는 데 필요한 오버헤드가 증가합니다.
  • 노드 유지보수: 노드의 컨테이너 수가 많을수록 리소스 사용량 및 유지 관리 비용이 증가합니다.

이 프로필을 사용하면 EvictionsIn Back place alpha 기능을 사용하여 LowNodeUtilization 전략을 활성화합니다. 이 프로필은 다음 사용자 지정 필드도 노출합니다.

  • dev CryostatUtilizationProfile: 로드 인식 해제를 활성화합니다.
  • devLowNodeUtilizationThresholds: LowNodeUtilization 전략에 대한 실험 임계값을 설정합니다. devDeviationThresholds 와 함께 이 필드를 사용하지 마십시오.
  • devDeviationThresholds: 활용도가 높은 노드에서 워크로드를 재배포하는 데 도움이 되도록 활용도가 낮은 리소스 사용량이 있는 노드를 처리합니다. devLowNodeUtilizationThresholds 에서는 이 필드를 사용하지 마십시오. 지원되는 값은 다음과 같습니다. 낮음 (10%:10%), 중간 (20%:20%), 높음 (30%:30%), AsymmetricLow (0%:10%), AsymmetricMedium (0%:20%), AsymmetricHigh (0%:30%).
  • devEnableSoftTainter: soft-tainting 구성 요소가 스케줄링 힌트로 소프트 테인트를 동적으로 적용하거나 제거할 수 있습니다.

설정 예

apiVersion: operator.openshift.io/v1
kind: KubeDescheduler
metadata:
  name: cluster
  namespace: openshift-kube-descheduler-operator
spec:
  managementState: Managed
  deschedulingIntervalSeconds: 30
  mode: "Automatic"
  profiles:
    - KubeVirtRelieveAndMigrate
  profileCustomizations:
    devEnableSoftTainter: true
    devDeviationThresholds: AsymmetricLow
    devActualUtilizationProfile: PrometheusCPUCombined

KubeVirtRelieveAndMigrate 프로필에는 모든 작업자 노드에서 PSI 지표를 활성화해야 합니다. 다음 MachineConfig CR(사용자 정의 리소스)을 적용하여 이를 활성화할 수 있습니다.

MachineConfig CR의 예

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  labels:
    machineconfiguration.openshift.io/role: worker
  name: 99-openshift-machineconfig-worker-psi-karg
spec:
  kernelArguments:
    - psi=1

참고

MachineConfig 오브젝트의 이름은 머신 구성이 사전순으로 처리되므로 중요합니다. 기본적으로 98- 로 시작하는 구성은 PSI를 비활성화합니다. PSI가 활성화되어 있는지 확인하려면 99-openshift-machineconfig-worker-psi-karg 와 같은 더 높은 접두사로 구성 이름을 지정합니다.

이 프로필을 soft TopologyAndDuplicates 프로필과 함께 사용하여 호스트된 컨트롤 플레인 환경에서 유용할 수 있는 소프트 토폴로지 제약 조건을 기반으로 Pod를 재조정할 수도 있습니다.

LongLifecycle

이 프로필은 노드 간 리소스 사용량의 균형을 유지하고 다음 전략을 활성화합니다.

  • RemovePodsHavingTooManyRestarts: 컨테이너가 너무 여러 번 다시 시작된 Pod와 모든 컨테이너(Init Containers 포함)에서 재시작 횟수가 100을 초과하는 Pod를 제거합니다. VM 게스트 운영 체제를 다시 시작해도 이 수가 늘어나지 않습니다.
  • LowNodeUtilization: 활용도가 낮은 노드가 있는 경우 활용도가 높은 노드에서 Pod를 제거합니다. 제거된 Pod의 대상 노드는 스케줄러에 의해 결정됩니다.

    • 모든 임계값(CPU, 메모리, Pod 수)에서 사용량이 20% 미만인 경우 노드는 활용도가 낮은 것으로 간주됩니다.
    • 모든 임계값(CPU, 메모리, Pod 수)에서 사용량이 50%를 초과하면 노드는 과도하게 사용되는 것으로 간주됩니다.
주의

Lifecycle AndUtilization 또는#159 AndScale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 이러한 프로필을 사용하면 충돌이 발생합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동