申し訳ありませんが、申し訳ありません。 私は管理者特権を持っていないので、opensshiftでcronjobsによって起動されたpythonアプリケーションを既に持っているので、最善の方法はREST APIを使うことだと思いました。 24時間以上経過して完了したジョブをクリーンアップするこのスクリプトを書くことができました。
from os import environ
import requests
from datetime import datetime, timedelta
セットアップ認証トークン
apihost = 'https://openshift.redhat.com:8443{endpoint}'
jobsurl = apihost.format(
endpoint = '/apis/batch/v1/namespaces/%s/jobs' % environ['NAMESPACE']
)
headers = {
'Authorization': 'Bearer %s' % environ['AUTH_TOKEN']
}
取得し、現在のジョブ
req_jobs = requests.get(jobsurl, headers=headers, verify=False)
ループを通って、セット
に
jobstodelete = []
for item in req_jobs.json()['items']:
if 'completionTime' in item['status']:
elapsed_time = datetime.now() - datetime.strptime(item['status']['completionTime'], '%Y-%m-%dT%H:%M:%SZ')
if elapsed_time > timedelta(hours=24):
jobstodelete.append(item['metadata']['selfLink'])
削除ジョブを削除するジョブを識別する for job in jobstodelete:
delurl = apihost.format(
endpoint = job
)
req_del = requests.delete(delurl, headers=headers, verify=False)
これにより、正常にジョブをクリーンアップします。
どのOpenShiftインストールを使用していますか?完全インストールの場合、クラスタレベルで定期的なジョブを実行し、特定の時間よりも古いものがある場合はその内容をクリーンアップします。 Minishiftまたは '' oc cluster up''を実行している場合、このジョブが実行されるかどうかはわかりません。それが使用するコマンドは '' oc adm prune''ですが、ジョブから停止したポッドについては何も表示されません。私は仕事のために停止したポッドで何が起こるかを調べてみます。 –
@GrahamDumpleton私はv3.5.5.31を使用していますが、私は管理者権限がありませんので、別の方法でそれにアプローチする必要があります。私はあなたのアプローチを見ていくつもりですが、私はそれをテストしたときに私が共有する自分のアプローチを考え出しました。 – jimjim