kubernetesのCronjobを一時停止するためのkubectlコマンド
2021/07/28
Kubernetes で設定している Cronjob を一時的に停止したいことがあり、調べたところ Cronjob を一時停止する方法がわかったのでまとめてみました。
Cronjobを一時停止するために使う kubectl コマンドについて
Kubernetes の Cronjob を一時停止するには、kubectl patch
コマンドでパッチを当てることで対応できます。
kubectl patch コマンドの構文
kubectl patch
コマンドの構文は下記のようになっています。
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
Cronjob を一時停止するためのコマンド
kubectl patch コマンドの構文をもとに Cronjob を一時停止にするコマンドを作成すると下記のようになります。
kubectl patch {cronjob_name} -p '{"spec":{"suspend":true}}'
Cronjob を一時停止する手順
Cronjob を確認
Cronjob を停止する前に、現在の状況を確認するために kubectl get cronjob
コマンドを実行。
$ kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
sample-batch 0 */1 * * * False 0 10m 1d
SUSPEND
が False
になっているため、一時停止状態ではないことがわかります。
Cronjob を一時停止
Cronjob が有効なことがわかったので、無効にするために kubectl patch
コマンドを実行します。
$ kubectl patch cronjob sample-batch -p '{"spec":{"suspend":true}}'
cronjob.batch/sample-batch patched
patched
と表示されたので、正常にパッチを適応できたことがわかります。
Cronjob を一時停止出来ているか確認
パッチが適応できたことを確認するためにもう一度 kubectl get cronjob
コマンドを実行します。
$ kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
sample-batch 0 */1 * * * True 0 10m 1d
False
だった SUSPEND
が True
になっているのを確認できましたので、これで無事に一時停止状態にできました。
Cronjob の一時停止を解除する手順
一時停止の解除
一時停止を解除するときは、Cronjob.spec.suspend
に False
を設定する必要があるので、下記のようなコマンドになります。
$ kubectl patch cronjob sample-batch -p '{"spec":{"suspend":false}}'
cronjob.batch/sample-batch patched
patched
で無事に完了。
解除されていることを確認
解除できていることを確認してみます。
$ kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
sample-batch 0 */1 * * * False 0 10m 1
SUSPEND
が False
になっているので、解除されたことがわかります。
まとめ
kubectl
コマンドを実行するだけで再起動する必要もなく Cronjob を一時停止できたので、コマンドがわかってからはスムーズに作業できて良かったです。
kubectl patch
コマンドはいろいろなリソースタイプに使えるみたいなので、これからもちょっとずつ活用方法を勉強していこうと思います。
参考
kubectlの概要ページ
https://kubernetes.io/ja/docs/reference/kubectl/overview/
Kubectlのチートシート
https://kubernetes.io/ja/docs/reference/kubectl/cheatsheet/
Cronjobについて
https://kubernetes.io/ja/docs/tasks/job/automated-tasks-with-cron-jobs/