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

SUSPENDFalse になっているため、一時停止状態ではないことがわかります。

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 だった SUSPENDTrue になっているのを確認できましたので、これで無事に一時停止状態にできました。

Cronjob の一時停止を解除する手順

一時停止の解除

一時停止を解除するときは、Cronjob.spec.suspendFalse を設定する必要があるので、下記のようなコマンドになります。

$ 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

SUSPENDFalse になっているので、解除されたことがわかります。

まとめ

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/