概要
dcgm-exporter(NVIDIA Device Plugin)をkube-system以外のnamespaceにデプロイしようとした際、DaemonSetがDesiredを持つものの、Warningが出てポッドが作成されない
Type: warning
Reason: failedCreate
From: daemonset-controller
Message: Error creating: insufficient quota to match these scopes: [{priorityClass In [system-node-critical system-cluster-critical]}]
原因
上記のエラーメッセージにあるように、PriorityClassの設定が原因です。
dcgm-exporterはデフォルトでsystem-node-critical
というPriorityClassを使用しようとしますが、このPriorityClassはkube-system
ネームスペース以外では使用が制限されています。
そもそもPriorityClassとは(Claude君による説明)
PriorityClassは、Kubernetesにおいてポッドの優先順位を定義するリソースです。主な役割は:
- ポッドのスケジューリング優先順位の決定
- リソース競合時の振る舞いの制御
- システムクリティカルなポッドの保護
特にsystem-node-critical
やsystem-cluster-critical
といった高優先度のPriorityClassは、通常システムコンポーネント用に予約されており、kube-system
ネームスペースでのみ使用可能です。
解決方法
DaemonSetにパッチを適用することで解決できました。
ValuesInline
でがんばって変更しようとしたけどうまくいかなかった。
kind: Kustomization
helmCharts:
- name: dcgm-exporter
# 他の設定...
patches:
- patch: |
- op: add
path: /spec/template/spec/priorityClassName
value: "" # または任意のPriorityClass名
target:
kind: DaemonSet
name: dcgm-exporter