LoginSignup
5
0

More than 3 years have passed since last update.

Kubernetes 1.17: SIG Scheduling の変更内容

Last updated at Posted at 2020-01-14

はじめに

ここでは, Kubernetes 1.17 の CHANGELOG から SIG Scheduling に関係のあるものを抜粋しています.

主な変更点 (1.17 What's New)

該当なし

アップグレード時の注意点 (Urgent Upgrade Notes)

  • kubeadm の設定で kube-apiserver の authorization-mode を指定する際に, これまでデフォルトで先頭に付けられていた Node,RBAC が付与されなくなります. これにより authorization-mode を完全に上書きできるようになります. (#82616, @ghouscht)

注目機能 (Notable Features)

Stable

  • ScheduleDaemonSetPods が GA となります. (この feature gate は 1.18 で削除されます.) (#82795, @draveness)
    • :pencil: ScheduleDaemonSetPods は DaemonSet のスケジューリングに DaemonSet コントローラではなくデフォルトスケジューラを利用するためのモードです. DaemonSet コントローラによってスケジュールされる場合には次のような問題がありました.
      • 通常の Pod は作成後に Pending となるが, DaemonSet の Pod の場合は Pending にならない.
      • Pod の preemption はデフォルトスケジューラが行うため, DaemonSet コントローラによるスケジューリングに Pod の priority や preemption が考慮されない.
  • TaintNodesByCondition が GA となります. (この feature gate は 1.18 で削除されます.) (#82703, @draveness)
    • :pencil: TaintNodesByCondition は Node の readiness やリソース使用状況などのコンディションに応じて Node に Taint を付与するモードです.
  • ResourceQuotaScopeSelectors が GA となります. (この feature gate は 1.18 で削除されます.) (#82690, @draveness)

Beta

該当なし

Alpha

該当なし

その他の変更 (Other Notable Changes)

:pencil: ここにかかれているものは半数以上が Scheduling Framework の実装に関するものです. それ以外のものと区別が付くように Scheduling Framework に関連するものは先頭に [Scheduling Framework] という接頭辞を付けています.

  • スケジューラポリシーの検証時に RequestedToCapacityRatio の重複のみを検証するようにし, 他のカスタムな predicates/priorities を許容するよう変更 (#84646, @liu)
  • scheduler policy の設定を複数回宣言できないよう変更 (#83963, @damemi)
  • TaintNodesByCondition が GA へ変更. CheckNodeMemoryPressure, CheckNodePIDPressure, CheckNodeDiskPressure, CheckNodeCondition が削除. (代わりに CheckNodeUnschedulablePred が利用可能) (#84152, @draveness)
  • [Scheduling Framework] Filter プラグインに PodFitsHostPorts が追加 (#83659, @wgliang)
  • [Scheduling Framework] Filter プラグインに PodFitsResources が追加 (#83650, @wgliang)
  • [Scheduling Framework] Filter プラグインに PodMatchNodeSelector/NodAffinity が追加 (#83660, @wgliang)
  • generic_scheduler にトレースするステップを追加 (#83539, @wgliang)
  • [Scheduling Framework] Filter プラグインに PodFitsHost が追加 (#83662, @wgliang)
  • PodAffinity の利用時に kube-scheduler が panic する問題を修正 (#82841, @Huang)
  • [Scheduling Framework] Schedule() 関数の受けるコンテクストの仮引数の位置を第一仮引数に変更. (#82119, @wgliang)
  • [Scheduling Framework] 複数の PluginConfig がある場合に正しい引数が PluginFactory へ渡されない問題を修正 (#82483, @everpeace)
  • kube-scheduler のプロファイリングをデフォルトで有効化 (#84835, @denkensk)
  • スケジューラがキャッシュサイズのメトリクスをレポートするよう変更 (#83508, @damemi)
  • [Scheduling Framework] 利用者が ComponentConfig を利用して NodeLabel を設定できるよう変更 (#84297, @liu)
  • preferredDuringSchedulingIgnoredDuringExecution を利用する inter-pod affinity の処理を最大で 4 倍高速化 (#84264, @ahg)
  • [Scheduling Framework] Filter Plugin に cloud provider storage を判定するためのものを追加 (#84148, @gongguan)
  • [Scheduling Framework] Permit API のリファクタリング (#83756, @hex108)
  • スケジューラーのキューに新しく追加された Pod に関するメトリクスをレポートするよう変更 (#83577, @liu)
  • kube-scheduler がログレベルを動的な変更をサポート (#83910, @mrkm4ntr)
  • [Scheduling Framework] レイテンシとリクエスト数に関するメトリクスを追加 (#83569, @liu)
  • [Scheduling Framework] framework のインタフェースに SharedInformerFactory を追加 (#83663, @draveness)
  • [Scheduling Framework] 一度または複数のスケジューリングの試行を通して Pod ごとのメトリクスをレポートするよう変更 (#83674, @liu)
    • :pencil: スケジューリングの試行の単位でなく, Pod 単位でメトリクスを集計するような変更のようです.
  • [Scheduling Framework] スケジューラの設定に podInitialBackoffDurationSeconds と podMaxBackoffDurationSeconds を追加 (#81263, @draveness)
  • [Scheduling Framework] framework のインタフェースに Kubernetes クライアントを返す ClientSet を追加 (#82432, @draveness)
  • [Scheduling Framework] スケジューラ API から MaxPriority を削除 (代わりに MaxNodeScore または MaxExtenderPriority を使って下さい.) (#83386, @draveness)
  • [Scheduling Framework] ScoreWithNormalizePlugin を ScorePlugin へ統合 (#83042, @draveness)
  • [Scheduling Framework] PreFilter プラグインで計算済みのステートから Pod を追加・削除するための API を追加 (#82912, @ahg)
  • [Scheduling Framework] PluginContext と ContextData に Clone メソッドを追加 (#82951, @ahg)
  • [Scheduling Framework] Filter AIP の変更 (#82842, @ahg)
    • :pencil: Filter() API に Node 名だけでなく Node の情報を含む構造体を渡すようになったようです.
  • クリティカル Pod が kube-system ではない Namespace に作れるようになります. クリティカル Pod を kube-system のみで作れるようにするためにはクラスタ管理者が AdmissionConfiguration ファイルを用意して, デフォルトでクリティカル Pod の作成を制限した上で, kube-system に Quota オブジェクトを作成してクリティカル Pod の作成を許容するようにする必要があります. 詳しくはこちらを確認して下さい. https://kubernetes.io/docs/concepts/policy/resource-quotas/#limit-priority-class-consumption-by-default (#76310, @ravisantoshgudimetla)
  • [Scheduling Framework] Scheduler ComponentConfig のいくつかのフィールドがポインタを利用するように変更 (#83619, @damemi)
    • :pencil: いくつかのフィールドで nil を許容するようにするための修正のようです.
  • Scheduler Policy API にスケジューラ API グループ kubescheduler.config.k8s.io と一貫性のある新しい API バージョン kubescheduler.config.k8s.io/v1 が追加されます. これは古い API バージョン v1 と同じ API を持ちます. (#83578, @Huang)
  • [Scheduling Framework] PluginContext の名前を CycleState へ変更 (#83430, @draveness)
  • scheduler extender API のフィールドが pkg/scheduler/api から pkg/scheduler/apis/extender/v1 へ移動 (#83262, @Huang)
  • kube-scheduler が不正な形式の v1alpha1 の ComponentConfig を利用したときに警告を出すよう変更 (#84129, @obitech)
  • kube-scheduler が events.k8s.io/v1beta1 が利用できない場合には core/v1 の Event を使うよう修正 (#83692, @yastij)
  • [Scheduling Framework] プラグインが内部で利用する Node のスコアのレンジを [0, 10] から [0, 100] へ変更 (#83522, @draveness)
5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0