Files
website/content/ja/docs/concepts/scheduling/kube-scheduler.md
T
inductor 4b37fac15b First Japanese l10n work for release-1.17 (#19871)
* update reference to 1.17 (#18791)

* update endpoint slices to beta (#18794)

* update feature gate to 1.17 (#18799)

* update feature gate to 1.17

* Update content/ja/docs/reference/command-line-tools-reference/feature-gates.md

Co-Authored-By: inductor <kohei.ota@zozo.com>

Co-authored-by: inductor <kohei.ota@zozo.com>

* Update links to ja docs (home/, tasks/tools/install-kubectl/, concepts/services-networking/service/) (#18930)

* update link to /ja/docs/home/

* update link to /ja/docs/tasks/tools/install-kubectl/

* update link to /ja/docs/concepts/services-networking/service/

* Translate tasks/administer-cluster/enabling-endpointslices.md in Japanese (#18140) (#18873)

* Translate tasks/administer-cluster/enabling-endpointslices.md in Japanese (#18140)

* Update enabling-endpointslices.md

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update enabling-endpointslices.md

* Update enabling-endpointslices.md

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Takuya Tokuda <cs.toku.mail@gmail.com>

* Update content/ja/docs/tasks/administer-cluster/enabling-endpointslices.md

Co-Authored-By: Takuya Tokuda <cs.toku.mail@gmail.com>

* Update enabling-endpointslices.md

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
Co-authored-by: Takuya Tokuda <cs.toku.mail@gmail.com>

* update share process namespace (#19011)

* Revert trailing whitespaces (#18988)

* Correct a wrong resource name: Endpoint (#18954)

* Correct a wrong resource name: Endpoint

* Revert spaces at end of line

* Update links to ja docs (concepts/workloads/) (#18959)

* update link to /ja/docs/concepts/workloads/controllers/deployment/

* update link to /ja/docs/concepts/workloads/controllers/replicaset/

* update link to /ja/docs/concepts/workloads/controllers/statefulset/

* update link to /ja/docs/concepts/workloads/controllers/daemonset/

* update link to /ja/docs/concepts/workloads/pods/pod-overview/

* update link to /ja/docs/concepts/workloads/pods/pod/

* revert spaces at end of line

* revert spaces at end of line

* Replace links with redirect destination

* partially update link to /ja/docs/concepts/workloads/pods/pod-lifecycle/

* Update daemonset to 1.17 (#18793)

* update daemonset to 1.17

* Update content/ja/docs/concepts/workloads/controllers/daemonset.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/workloads/controllers/daemonset.md

Co-Authored-By: nasa9084 <nasa9084@users.noreply.github.com>

* apply review

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>

* remove ctrl-h (#19067)

* remove reviewers block (#19091)

* update link to /ja/docs/tasks/tools/install-minikube/ (#19147)

* translate networking (#19134)

* translate networking

* apply review

* apply review

* Update content/ja/docs/concepts/cluster-administration/networking.md

Co-Authored-By: nasa9084 <nasa9084@users.noreply.github.com>

* nit

Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>

* update link to /ja/docs/concepts/overview/components/ (#19194)

* fix a wrong field name (#19256)

* update link to /ja/docs/concepts/configuration/assign-pod-node/ (#19324)

* Translate docs/concepts/storage/persistent-volumes.md into Japanese (#19074)

* translate content/ja/docs/concepts/storage/persistent-volumes.md into Japanese

* Update content/ja/docs/concepts/storage/persistent-volumes.md

translate title

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

fix missing translation

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

conform to translation style guide

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* conform to translation style guide

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* fix translation refer: https://github.com/kubernetes/website/pull/19074/files#r378950194

* fix translation

* fix translation ref: https://github.com/kubernetes/website/pull/19074#discussion_r378931787

* fix translation ref: https://github.com/kubernetes/website/pull/19074#discussion_r378829190

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* fix translation

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* fix translation follow https://github.com/kubernetes/website/pull/19074#discussion_r382130660

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* fix translation https://github.com/kubernetes/website/pull/19074#discussion_r378811021

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: nasa9084 <nasa9084@users.noreply.github.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: bells17 <bells171@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/concepts/storage/persistent-volumes.md

Co-Authored-By: nasa9084 <nasa9084@users.noreply.github.com>

* fix translation https://github.com/kubernetes/website/pull/19074/files#r380769175

* fix translation https://github.com/kubernetes/website/pull/19074#discussion_r380745506

* fix translation https://github.com/kubernetes/website/pull/19074#discussion_r381264848

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
Co-authored-by: bells17 <bells171@gmail.com>
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>

* update link to /ja/docs/tutorials/hello-minikube/ and /ja/docs/concepts/architecture/nodes/ (#19515)

* Translate tasks/configure-pod-container/configure-projected-volume-storage.md into Japanese (#19240)

* copy from content/en/docs/tasks/configure-pod-container/configure-projected-volume-storage.md

Signed-off-by: Takuma Hashimoto <takumaxd+github@gmail.com>

* Translate content/ja/docs/tasks/configure-pod-container/configure-projected-volume-storage.md into Japanese

Signed-off-by: Takuma Hashimoto <takumaxd+github@gmail.com>

* fix translation

https://kubernetes.io/ja/docs/tasks/debug-application-cluster/get-shell-running-container/
にて、「シェルを取得する」という表現が用いられているため、そちらに合わせる

Signed-off-by: Takuma Hashimoto <takumaxd+github@gmail.com>

* fix terminology 投影 -> Projected (#19641)

* translate configure-access-multiple-clusters into Japanese (#19563)

* translate configure-access-multiple-clusters into Japanese

* reflect PR feedback

* Translate concepts/cluster-administration/cluster-administration-overview.md into Japanese #18829 (#19258)

* ja-trans: translate concepts/cluster-administration/cluster-administration-overview.md into Japanese (#18829)

* ja-trans: Improve Japanese translation in concepts/cluster-administration/cluster-administration-overview.md  (#18829)

* ja-trans: Improve Japanese translation in concepts/cluster-administration/cluster-administration-overview.md  (#18829)

* Translate tasks/service-catalog/install-service-catalog-using-helm/ in Japanese (#19776)

* issue 18957

* translate a reference file

* Update content/ja/docs/reference/glossary/service-catalog.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/reference/glossary/service-catalog.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Update content/ja/docs/tasks/service-catalog/install-service-catalog-using-helm.md

Co-Authored-By: Naoki Oketani <okepy.naoki@gmail.com>

* Apply suggestions from code review

Co-Authored-By: Tim Bannister <tim@scalefactory.com>

* Apply suggestions from code review

Co-Authored-By: Tim Bannister <tim@scalefactory.com>

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
Co-authored-by: inductor <kohei.ota@zozo.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>

* Fix dead link of api-conventions doc (#19801)

Co-authored-by: Naoki Oketani <okepy.naoki@gmail.com>
Co-authored-by: Jin Hase <hase.jin@jp.fujitsu.com>
Co-authored-by: Takuya Tokuda <cs.toku.mail@gmail.com>
Co-authored-by: nasa9084 <nasa9084@users.noreply.github.com>
Co-authored-by: Takahashi Tomohiko <takahashi@tomohiko.io>
Co-authored-by: bells17 <bells171@gmail.com>
Co-authored-by: Takuma Hashimoto <takumaxd+github@gmail.com>
Co-authored-by: Joe Kamibeppu <joekamibeppu@gmail.com>
Co-authored-by: Keita Akutsu <kakts.git@gmail.com>
Co-authored-by: SatoruItaya <44042909+SatoruItaya@users.noreply.github.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>
Co-authored-by: KoyamaSohei <koyamaso0309@gmail.com>
2020-04-26 15:30:44 +08:00

10 KiB

title, content_template, weight
title content_template weight
Kubernetesのスケジューラー templates/concept 60

{{% capture overview %}}

Kubernetesにおいて、スケジューリング とは、{{< glossary_tooltip term_id="kubelet" >}}が{{< glossary_tooltip text="Pod" term_id="pod" >}}を稼働させるために{{< glossary_tooltip text="Node" term_id="node" >}}に割り当てることを意味します。

{{% /capture %}}

{{% capture body %}}

スケジューリングの概要

スケジューラーは新規に作成されたPodで、Nodeに割り当てられていないものを監視します。スケジューラーは発見した各Podのために、稼働させるべき最適なNodeを見つけ出す責務を担っています。そのスケジューラーは下記で説明するスケジューリングの原理を考慮に入れて、NodeへのPodの割り当てを行います。

Podが特定のNodeに割り当てられる理由を理解したい場合や、カスタムスケジューラーを自身で作ろうと考えている場合、このページはスケジューリングに関して学ぶのに役立ちます。

kube-scheduler

kube-schedulerはKubernetesにおけるデフォルトのスケジューラーで、{{< glossary_tooltip text="コントロールプレーン" term_id="control-plane" >}}の一部分として稼働します。
kube-schedulerは、もし希望するのであれば自分自身でスケジューリングのコンポーネントを実装でき、それを代わりに使用できるように設計されています。

kube-schedulerは、新規に作成された各Podや他のスケジューリングされていないPodを稼働させるために最適なNodeを選択します。
しかし、Pod内の各コンテナにはそれぞれ異なるリソースの要件があり、各Pod自体にもそれぞれ異なる要件があります。そのため、既存のNodeは特定のスケジューリング要求によってフィルターされる必要があります。

クラスター内でPodに対する割り当て要求を満たしたNodeは_割り当て可能_ なNodeと呼ばれます。
もし適切なNodeが一つもない場合、スケジューラーがNodeを割り当てることができるまで、そのPodはスケジュールされずに残ります。

スケジューラーはPodに対する割り当て可能なNodeをみつけ、それらの割り当て可能なNodeにスコアをつけます。その中から最も高いスコアのNodeを選択し、Podに割り当てるためのいくつかの関数を実行します。
スケジューラーは_binding_ と呼ばれる処理中において、APIサーバーに対して割り当てが決まったNodeの情報を通知します。

スケジューリングを決定する上で考慮が必要な要素としては、個別または複数のリソース要求や、ハードウェア/ソフトウェアのポリシー制約、affinityやanti-affinityの設定、データの局所性や、ワークロード間での干渉などが挙げられます。

kube-schedulerによるスケジューリング

kube-schedulerは2ステップの操作によってPodに割り当てるNodeを選択します。

  1. フィルタリング

  2. スコアリング

フィルタリング ステップでは、Podに割り当て可能なNodeのセットを探します。例えばPodFitsResourcesフィルターは、Podのリソース要求を満たすのに十分なリソースをもつNodeがどれかをチェックします。このステップの後、候補のNodeのリストは、要求を満たすNodeを含みます。
たいてい、リストの要素は複数となります。もしこのリストが空の場合、そのPodはスケジュール可能な状態とはなりません。

スコアリング ステップでは、Podを割り当てるのに最も適したNodeを選択するために、スケジューラーはリストの中のNodeをランク付けします。
スケジューラーは、フィルタリングによって選ばれた各Nodeに対してスコアを付けます。このスコアはアクティブなスコア付けのルールに基づいています。

最後に、kube-schedulerは最も高いランクのNodeに対してPodを割り当てます。もし同一のスコアのNodeが複数ある場合は、kube-schedulerがランダムに1つ選択します。

デフォルトのポリシーについて

kube-schedulerは、デフォルトで用意されているスケジューリングポリシーのセットを持っています。

フィルタリング

  • PodFitsHostPorts: Nodeに、Podが要求するポートが利用可能かどうかをチェックします。

  • PodFitsHost: Podがそのホスト名において特定のNodeを指定しているかをチェックします。

  • PodFitsResources: Nodeに、Podが要求するリソース(例: CPUとメモリー)が利用可能かどうかをチェックします。

  • PodMatchNodeSelector: PodのNodeSelectorが、Nodeのラベルにマッチするかどうかをチェックします。

  • NoVolumeZoneConflict: Podが要求するVolumeがNode上で利用可能かを、障害が発生しているゾーンを考慮して評価します。

  • NoDiskConflict: NodeのVolumeがPodの要求を満たし、すでにマウントされているかどうかを評価します。

  • MaxCSIVolumeCount: CSI Volumeをいくつ割り当てるべきか決定し、それが設定された上限を超えるかどうかを評価します。

  • CheckNodeMemoryPressure: もしNodeがメモリーの容量が逼迫している場合、また設定された例外がない場合はそのPodはそのNodeにスケジュールされません。

  • CheckNodePIDPressure: もしNodeのプロセスIDが枯渇しそうになっていた場合や、設定された例外がない場合はそのPodはそのNodeにスケジュールされません。

  • CheckNodeDiskPressure: もしNodeのストレージが逼迫している場合(ファイルシステムの残り容量がほぼない場合)や、設定された例外がない場合はそのPodはそのNodeにスケジュールされません。

  • CheckNodeCondition: Nodeは、ファイルシステムの空き容量が完全になくなった場合、ネットワークが利用不可な場合、kubeletがPodを稼働させる準備をできていない場合などに、その状況を通知できます。Nodeがこの状況下かつ設定された例外がない場合、Podは該当のNodeにスケジュールされません。

  • PodToleratesNodeTaints: PodのTolerationがNodeのTaintを許容できるかチェックします。

  • CheckVolumeBinding: Podが要求するVolumeの要求を満たすか評価します。これはPersistentVolumeClaimがバインドされているかに関わらず適用されます。

スコアリング

  • SelectorSpreadPriority: 同一のService、StatefulSetや、ReplicaSetに属するPodを複数のホストをまたいで稼働させます。

  • InterPodAffinityPriority: weightedPodAffinityTermの要素をイテレートして合計を計算したり、もし一致するPodAffinityTermがNodeに適合している場合は、"重み"を合計値に足したりします。:最も高い合計値を持つNode(複数もあり)が候補となります。

  • LeastRequestedPriority: 要求されたリソースがより低いNodeを優先するものです。言い換えると、Nodeに多くのPodが稼働しているほど、Podが使用するリソースが多くなり、その要求量が低いNodeが選択されます。

  • MostRequestedPriority: 要求されたリソースがより多いNodeを優先するものです。このポリシーは、ワークロードの全体セットを実行するために必要な最小数のNodeに対して、スケジュールされたPodを適合させます。 

  • RequestedToCapacityRatioPriority: デフォルトのリソーススコアリング関数を使用して、requestedToCapacityベースのResourceAllocationPriorityを作成します。

  • BalancedResourceAllocation: バランスのとれたリソース使用量になるようにNodeを選択します。

  • NodePreferAvoidPodsPriority: Nodeのscheduler.alpha.kubernetes.io/preferAvoidPodsというアノテーションに基づいてNodeの優先順位づけをします。この設定により、2つの異なるPodが同じNode上で実行しないことを示唆できます。

  • NodeAffinityPriority: "PreferredDuringSchedulingIgnoredDuringExecution"の値によって示されたNode Affinityのスケジューリング性向に基づいてNodeの優先順位づけを行います。詳細はNodeへのPodの割り当てにて確認できます。

  • TaintTolerationPriority: Node上における許容できないTaintsの数に基づいて、全てのNodeの優先順位リストを準備します。このポリシーでは優先順位リストを考慮してNodeのランクを調整します。

  • ImageLocalityPriority: すでにPodに対するコンテナイメージをローカルにキャッシュしているNodeを優先します。

  • ServiceSpreadingPriority: このポリシーの目的は、特定のServiceに対するバックエンドのPodが、それぞれ異なるNodeで実行されるようにすることです。このポリシーではServiceのバックエンドのPodが既に実行されていないNode上にスケジュールするように優先します。これによる結果として、Serviceは単体のNode障害に対してより耐障害性が高まります。

  • CalculateAntiAffinityPriorityMap: このポリシーはPodのAnti-Affinityの実装に役立ちます。

  • EqualPriorityMap: 全てのNodeに対して等しい重みを与えます。

{{% /capture %}} {{% capture whatsnext %}}