Kubernetesジョブが完了したことを(スクリプト内から)通知する方法を探しています。その後、コンテナからログを取得してクリーンアップを実行します。
これを行うにはどうすればよいでしょうか? kubectl describe job <job_name>
を実行して1 Succeeded
などのgrepを実行するのが最善の方法でしょうか?
バージョン1.11以降、次のことができます。
kubectl wait --for=condition=complete job/myjob
また、タイムアウトを設定することもできます。
kubectl wait --for=condition=complete --timeout=30s job/myjob
次のコマンドを使用して、ジョブのステータスを視覚的に監視できます。
kubectl get jobs myjob -w
-w
オプションは、変更を監視します。 1
を表示するSUCCESSFUL
列を探しています。
シェルスクリプトで待機するには、次のコマンドを使用します。
until kubectl get jobs myjob -o jsonpath='{.status.conditions[?
(@.type=="Complete")].status}' | grep True ; do sleep 1 ; done
公式のPython kubernetes-client
を使用できます。
https://github.com/kubernetes-client/python
新規作成Python virtualenv:
virtualenv -p python3 kubernetes_venv
で有効化
source kubernetes_venv/bin/activate
kubernetesクライアントをインストールします:
pip install kubernetes
新しいPythonスクリプトを作成して実行:
from kubernetes import client, config
config.load_kube_config()
v1 = client.BatchV1Api()
ret = v1.list_namespaced_job(namespace='<YOUR-JOB-NAMESPACE>', watch=False)
for i in ret.items:
print(i.status.succeeded)
~/.kube/config
に特定のkubeconfig
とジョブ名前空間の有効な値を設定することを忘れないでください-> '<YOUR-JOB-NAMESPACE>'
私は使うだろう -w
または --watch
:
kubectl get jobs.batch --watch
名前の補完の期間python 0/1 3m4s 3m4s