# OpenShiftのpodスケジューリング ## OpenShift Scheduler Algorithm 以下のプロセスに従ってスケジューリングを行なう。 1. ノードのフィルタリング 2. ノードリストの優先順位付け 3. 最適なノードの選択 ## ノードのフィルタリング Schedulerは、ディスク/メモリの負荷やホストポートの可用性に基づいて対象ノードにスケジューリングできるか評価する。 また、ノードセレクターを定義でき、ラベルが一致しないノードはスケジューリングの対象外とできる。 ```shell # worker01ノードにenv=devのラベルを付ける $ oc label node worker01 env=dev ``` podでは、計算リソース(CPU/メモリ/ストレージ等)に対するリソースリクエストを定義できる。 ```shell # frontendアプリケーションは常に2つのpodが実行され、CPUの負荷が50%を超えた時に最大5podまで増える $ oc autoscale deployment/frontend --min 2 --max 5 --cpu-percent 50 ``` 加えて、TaintsとTolerationsによる定義もできる。 ## ノードリストの優先順位付け 候補ノードの重み付けスコアの評価基準は、afinity ruleとanti-afinity rule。 afinity ruleは、パフォーマンス上の理由等で関連するpodを互いに近接してスケジュールするために使用される。 anti-afinity ruleは、高可用性を保つために関連するpodを互いに近接しないようにスケジュールするために使用される。 ## 最適なノードの選択 候補ノードリストの中から、最高スコアのノードがpodのホストとして選択される。 最高スコアが複数の場合はラウンドロビン方式で選択される。 ## TODO : 合わせてKubernetesのSchedulerのコードリーディングもできたら嬉しい。 * [自作して学ぶKubernetes Scheduler](https://engineering.mercari.com/blog/entry/20211220-create-your-kube-scheduler/) * [kubernetes/kube-scheduler](https://github.com/kubernetes/kube-scheduler)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up