λ kubectl uncordon
gpt-5.icon
Kubernetes クラスタ内で「スケジューリング禁止状態(cordon)」にされたノードを再びスケジューリング可能に戻すコマンドです。
🧩 背景:cordon / uncordon の関係
Kubernetes では、ノードの状態を制御して Pod のスケジューリング可否を管理します。
table:_
コマンド 意味 Pod のスケジューリング
kubectl cordon <ノード名> ノードを「スケジューリング禁止」にする ❌ 新規Podは配置されない(既存Podは動作し続ける)
kubectl uncordon <ノード名> ノードを「スケジューリング可能」に戻す ✅ 新しいPodがスケジュールされるようになる
kubectl drain <ノード名> ノードを退避状態にして、既存Podを削除(別ノードへ再スケジューリング) ❌ 退避中はスケジュール不可(cordonも含む)
🛠️ 使用例
code:bash
# ノードをスケジューリング禁止にする
kubectl cordon my-node
# 状態確認
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# my-node Ready,SchedulingDisabled ... ...
# スケジューリング可能に戻す
kubectl uncordon my-node
# 状態確認
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# my-node Ready ... ...
STATUS カラムから SchedulingDisabled が消えていれば成功です。
💡 よくある利用ケース
1. ノードのメンテナンス時
まず kubectl drain でPodを退避。
メンテナンス完了後、kubectl uncordon で再スケジュール可能に。code:bash
kubectl drain my-node --ignore-daemonsets
# ...メンテナンス作業...
kubectl uncordon my-node
2. 一時的なノード停止の解除
リソース調整や障害対応で cordon していたノードを、問題解消後に戻すとき。
⚠️ 注意点
uncordon は「スケジューリングを再開」するだけで、Podを自動的に戻すことはしません。
drain で退避したPodは、すでに別ノードにスケジュールされているため、必要であればDeploymentやDaemonSetなどの再配置で対応します。
DaemonSet や Static Pod は drain 時にも削除されません。そのため、uncordon で再び新しいPodが追加されることもあります。
✅ まとめ
table:_
状態 コマンド スケジュール可否 備考
通常 – ✅ Ready 状態
cordon 後 kubectl cordon ❌ 新規 Pod のスケジュールを停止
drain 後 kubectl drain ❌ Pod を退避させ、スケジュールも停止
復帰 kubectl uncordon ✅ スケジュール再開