第8章. リソース管理
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、Kubernetesリソースの管理と最適化のベストプラクティスに焦点を当てる。ワークロードスケジューリング、クラスタ管理、Podリソース管理、ネームスペース管理、アプリケーションのスケーリングについて説明する。また、Kubernetesが提供するアフィニティ、アンチアフィニティ、テイント、トレレーション、nodeSelectorsなどの高度なスケジューリングテクニックについても掘り下げていく。
リソース制限、リソース要求、Pod Quality of Service、PodDisruptionBudget、LimitRanger、アンチアフィニティポリシーを実装する方法を紹介する。
Kubernetesスケジューラー
Kubernetesのスケジューラーは、コントロールプレーンでホストされる主要コンポーネントの1つだ。スケジューラによって、KubernetesはクラスタにデプロイされたPodの配置決定を行うことができる。ユーザが指定した制約だけでなく、クラスタの制約に基づいてリソースの最適化を行う。述語と優先順位に基づくスコアリング・アルゴリズムを使用する。
述語
Kubernetesがスケジューリングを決定するために使用する最初の関数は述語関数で、どのノードにPodをスケジューリングできるかを決定する。 これはハードな制約を意味するため、trueかfalseの値を返す。 例えば、Podが4GBのメモリを要求し、ノードがこの要求を満たせない場合などだ。そのノードはfalse値を返し、Podがスケジュール可能なノードから除外される。別の例としては、そのノードがスケジューリング不可能にセットされている場合がある。
スケジューラは、制限と複雑さの順序に基づいて述語をチェックする。この原稿を書いている時点で、スケジューラがチェックする述語は以下の通りである:
CheckNodeConditionPred,CheckNodeUnschedulablePred,GeneralPred,HostNamePred,PodFitsHostPortsPred,MatchNodeSelectorPred,PodFitsResourcesPred,NoDiskConflictPred,PodToleratesNodeTaintsPred,PodToleratesNodeNoExecuteTaintsPred,CheckNodeLabelPresencePred,CheckServiceAffinityPred,MaxEBSVolumeCountPred,MaxGCEPDVolumeCountPred,MaxCSIVolumeCountPred,MaxAzureDiskVolumeCountPred,MaxCinderVolumeCountPred,CheckVolumeBindingPred,NoVolumeZoneConflictPred,CheckNodeMemoryPressurePred,CheckNodePIDPressurePred,CheckNodeDiskPressurePred,MatchInterPodAffinityPred
優先順位
述語が真か偽の値を示し、スケジューリングのためにノードを棄却するのに対し、優先度値は相対値に基づいてすべての有効なノードをランク付けする。以下の優先順位がノードに対してスコアリングされる: ...