これはなんの記事?
KubernetesのdeschedulerアドオンでRemoveDuplicatesプラグインを指定する際に、公式のexampleを見ても設定の記述方法がイマイチ把握できず迷ったので、解決方法のメモです。
結論
pluginsでenabledを指定するだけでは不十分で、pluginConfigに追加が必要。
plugins.deschedule.RemoveDuplicatesで紹介されているケースを結構見かけたんですが、
plugins.balance.RemoveDuplicatesが正解みたいです。
apiVersion: "descheduler/v1alpha2"
kind: "DeschedulerPolicy"
profiles:
- name: ProfileName
pluginConfig:
- name: "RemoveDuplicates"
plugins:
balance:
enabled:
- "RemoveDuplicates"
この記事の背景
なんでこのメモを書くに至ったかの背景情報です。
余談なので、読みたい人は読んでみてください。
EKSのアップデートに伴ってdeschedulerのバージョンアップが必要になった
EKS1.30の標準サポート切れが迫ってきたので、EKS1.30 -> EKS1.31へバージョンアップしました。それに伴い、クラスタ内で利用しているdeschedulerアドオンのバージョンも互換性のためにv0.31以上に上げました。
descheduler v0.31以降はdescheduler/v1alpha1
のAPIグループが利用不可
deschedulerの振る舞いをDeschedulerPolicyというAPIリソースで指定しています。
古いdeschedulerの(v0.26.1)ころはプラグインの指定にdescheduler/v1alpha1
というAPIグループを利用していましたが、v0.31.0以降はdescheduler/v1alpha2
の利用が必須になり、要は設定記法の変更が必要になりました※。
descheduler/v1alpha1
の頃は以下の記法で指定していました。
apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
"RemoveDuplicates":
enabled: true
descheduler/v1alpha2
に移行した場合は結論に書いた通り。
※v0.27系以降はdescheduler/v1alpha2
の利用が推奨されていましたが、v1alpha1もv0.30系まで利用可能でした。しかし、v0.31.0でついにAPIグループが取り除かれました(v0.31.0リリースノート)