8장. 리소스 관리
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 장에서는 Kubernetes 리소스 관리 및 최적화를 위한 모범 사례에 중점을 둡니다. 워크로드 스케줄링, 클러스터 관리, 파드 리소스 관리, 네임스페이스 관리 및 애플리케이션 확장에 대해 설명합니다. 또한 선호도, 반 선호도, 테인트, 톨러레이션, 노드 셀렉터를 통해 Kubernetes가 제공하는 몇 가지 고급 스케줄링 기술에 대해 자세히 살펴봅니다.
리소스 제한, 리소스 요청, 파드 서비스 품질, PodDisruptionBudgets, LimitRangers 및 선호도 방지 정책을 구현하는 방법을 보여드립니다.
Kubernetes 스케줄러
스케줄러는 컨트롤 플레인에서 호스팅되는 주요 구성 요소 중 하나이다. 스케줄러는 클러스터에 배포된 파드에 대한 배치 결정을 내릴 수 있게 해준다. 클러스터의 제약 조건과 사용자가 지정한 제약 조건을 기반으로 리소스의 최적화를 처리합니다. 술어와 우선순위를 기반으로 하는 스코어링 알고리즘을 사용합니다.
술어
스케줄링 결정을 내리는 데 사용하는 첫 번째 함수는 파드를 스케줄링할 수 있는 노드를 결정하는 술어 함수이다. 이는 하드 제약 조건을 의미하므로 참 또는 거짓 값을 반환한다. 예를 들어 파드가 4GB의 메모리를 요청하고 노드가 이 요구 사항을 충족할 수 없는 경우를 들 수 있다. 이 노드는 거짓 값을 반환하고 스케줄링할 수 있는 실행 가능한 노드에서 제거된다. 또 다른 예는 노드가 스케줄 불가능으로 설정된 경우로, 스케줄링 결정에서 제거됩니다.
스케줄러는 제한성 및 복잡성 순서에 따라 술어를 확인합니다. 이 글을 쓰는 시점에서 스케줄러가 확인하는 술어는 다음과 같습니다:
CheckNodeConditionPred,CheckNodeUnschedulablePred,GeneralPred,HostNamePred,PodFitsHostPortsPred,MatchNodeSelectorPred,PodFitsResourcesPred,NoDiskConflictPred,PodToleratesNodeTaintsPred,PodToleratesNodeNoExecuteTaintsPred,CheckNodeLabelPresencePred,CheckServiceAffinityPred,MaxEBSVolumeCountPred,MaxGCEPDVolumeCountPred,MaxCSIVolumeCountPred,MaxAzureDiskVolumeCountPred,MaxCinderVolumeCountPred,CheckVolumeBindingPred,NoVolumeZoneConflictPred,CheckNodeMemoryPressurePred,CheckNodePIDPressurePred,CheckNodeDiskPressurePred,MatchInterPodAffinityPred
우선순위
술어는 참 ...