すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:CronJob を作成する

最終更新日:Dec 28, 2024

CronJob は、定期的なタスクと反復的なタスクを作成するために使用されます。たとえば、CronJob を作成してバックアップ操作を実行したり、メールを送信したりできます。ジョブは、短時間の実行、一度限りのタスクを処理するために使用されます。CronJob は、特定のスケジュールに基づいて 1 つ以上のジョブを作成します。このトピックでは、CronJob を作成する方法について説明します。

コンソールを使用する

ステップ 1: 基本設定を構成する

  1. ACS コンソールにログオンします。左側のナビゲーションペインで、クラスターをクリックします。

  2. クラスターページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > Cronjob を選択します。

  3. Cronjob ページで、右上隅にあるイメージから作成をクリックします。

  4. 基本情報ウィザードページで、アプリケーションの基本設定を構成します。

    パラメーター

    説明

    名前

    アプリケーションの名前を入力します。

    タイプ

    CronJob を選択します。

    ラベル

    アプリケーションにラベルを追加します。ラベルはアプリケーションを識別するために使用されます。

    アノテーション

    アプリケーションにアノテーションを追加します。

    インスタンスタイプ

    使用するインスタンスタイプ。詳細については、ACS ポッドの概要を参照してください。

    Qos タイプ

    QoS クラスを選択します。詳細については、コンピューティングパワー QoSを参照してください。

    • 汎用ポッドは、デフォルトBestEffort QoS クラスをサポートしています。

    • パフォーマンス強化ポッドは、デフォルト QoS クラスのみをサポートしています。

  5. 基本設定が完了したら、次へをクリックします。

ステップ 2: コンテナを構成する

コンテナウィザードページで、コンテナイメージ、リソース構成、ポート、環境変数、ヘルスチェック、ライフサイクル、ボリューム、およびログを構成します。

説明

コンテナの追加コンテナ 1タブの右側にクリックして、さらにコンテナを追加します。

  1. 全般セクションで、基本的なコンテナ設定を構成します。

    パラメーター

    説明

    イメージ名

    • イメージを選択

      イメージを選択をクリックして、コンテナイメージを選択します。

      • コンテナレジストリ エンタープライズ版: コンテナレジストリ エンタープライズ版インスタンスに保存されているイメージを選択します。イメージが属するリージョンとコンテナレジストリインスタンスを選択する必要があります。コンテナレジストリの詳細については、コンテナレジストリとはを参照してください。

      • コンテナレジストリ 個人版: コンテナレジストリ 個人版インスタンスに保存されているイメージを選択します。コンテナレジストリ 個人版がアクティブになっていることを確認してください。イメージが属するリージョンとコンテナレジストリインスタンスを選択する必要があります。

      • アーティファクトセンター: アーティファクトセンターには、アプリケーションコンテナ化のための基本オペレーティングシステムイメージ、基本言語イメージ、および AI およびビッグデータ関連イメージが含まれています。この例では、NGINX イメージが選択されています。詳細については、アーティファクトセンターの概要を参照してください。

    • (オプション) イメージプルポリシーを設定する

      イメージプルポリシードロップダウンリストからイメージプルポリシーを選択します。デフォルトでは、Kubernetes の IfNotPresent ポリシーが使用されます。

      • ifNotPresent: プルするイメージがオンプレミスマシンで見つかった場合、オンプレミスマシンのイメージが使用されます。それ以外の場合、システムはイメージレジストリからイメージをプルします。

      • 常に: アプリケーションがデプロイまたは拡張されるたびに、システムはレジストリからイメージをプルします。

      • しない: システムはオンプレミスマシンのイメージのみを使用します。

    • (オプション) イメージプルシークレットを設定する

      イメージプルシークレットを設定をクリックして、プライベートイメージをプルするために使用するシークレットを設定します。

    必要なリソース

    コンテナのリソースリクエストを指定します。

    • CPU: コンテナの CPU リクエストと CPU 制限を構成できます。デフォルトでは、CPU リクエストは CPU 制限と同じです。CPU リソースは従量課金制で課金されます。YAML テンプレートを使用してリソースリクエストとは異なるリソース制限を設定した場合、リソースリクエストはリソース制限の値に自動的に上書きされます。詳細については、リソース仕様を参照してください。

    • メモリ: コンテナのメモリリクエストとメモリ制限を構成できます。デフォルトでは、メモリリクエストはメモリ制限と同じです。メモリリソースは従量課金制で課金されます。YAML テンプレートを使用してリソースリクエストとは異なるリソース制限を設定した場合、リソースリクエストはリソース制限の値に自動的に上書きされます。詳細については、リソース仕様を参照してください。

    コンテナ起動パラメーター

    コンテナの起動オプションを指定します。このパラメーターはオプションです。

    • stdin: ACK コンソールで入力をコンテナに渡します。

    • tty: 仮想端末で定義された起動パラメーターを ACK コンソールに渡します。

    説明

    stdintty は一緒に使用されます。この場合、仮想端末 (tty) はコンテナの stdin に関連付けられます。たとえば、インタラクティブプログラムはユーザーから stdin を受信し、端末にコンテンツを表示します。

    Init コンテナ

    このチェックボックスを選択すると、init コンテナが作成されます。このパラメーターはオプションです。

    Init コンテナを使用して、アプリケーションコンテナの起動をブロックまたは延期できます。ポッド内のアプリケーションコンテナは、init コンテナが起動した後にのみ同時に起動します。たとえば、init コンテナを使用して、アプリケーションが依存するサービスの可用性を検証できます。アプリケーションイメージでは提供されていないツールやスクリプトを init コンテナで実行して、アプリケーションコンテナのランタイム環境を初期化できます。たとえば、ツールやスクリプトを実行してカーネルパラメーターを構成したり、構成ファイルを生成したりできます。詳細については、Init コンテナを参照してください。

  2. オプション: ポートセクションで、追加をクリックしてコンテナポートを追加できます。

    パラメーター

    説明

    名前

    コンテナポートの名前を入力します。

    コンテナポート

    公開するコンテナポートを指定します。ポート番号は 1 から 65535 の範囲内である必要があります。

    プロトコル

    有効な値: TCP および UDP。

  3. オプション: 環境セクションで、追加をクリックして環境変数を追加できます。

    環境ラベルを追加したり、構成を渡したりするために、キーと値のペアで環境変数をポッドに追加できます。詳細については、環境変数を介してポッド情報をコンテナに公開するを参照してください。

    パラメーター

    説明

    タイプ

    環境変数のタイプを選択します。有効な値:

    • カスタム

    • パラメーター

    • シークレット

    • 値/valuefrom

    • ResourceFieldRef

    ConfigMap またはシークレットを選択した場合、選択した ConfigMap またはシークレットのすべてのデータをコンテナ環境変数に渡すことができます。

    この例では、シークレットが選択されています。タイプドロップダウンリストからシークレットを選択し、値/ValueFrom ドロップダウンリストからシークレットを選択します。デフォルトでは、選択したシークレットのすべてのデータが環境変数に渡されます。环境变量

    この場合、アプリケーションのデプロイに使用される YAML ファイルには、選択したシークレットのすべてのデータを参照する設定が含まれています。yaml

    変数キー

    環境変数の名前。

    値/valuefrom

    環境変数の値。

  4. オプション: ヘルスチェックセクションで、ビジネス要件に基づいてlivenessreadiness、およびstartupプローブを有効にできます。

    • Liveness: Liveness プローブは、コンテナをいつ再起動するかを判断するために使用されます。

    • Readiness: Readiness プローブは、コンテナがトラフィックを受信する準備ができているかどうかを判断するために使用されます。

    • Startup: Startup プローブは、コンテナをいつ起動するかを判断するために使用されます。

    詳細については、Liveness、Readiness、および Startup プローブの構成を参照してください。

    パラメーター

    説明

    HTTP

    コンテナに HTTP GET リクエストを送信します。次のパラメーターを設定できます。

    • プロトコル: リクエストを送信するプロトコル。有効な値: HTTP および HTTPS

    • パス: サーバーでリクエストされた HTTP パス。

    • ポート: コンテナによって公開されるポートの番号または名前。ポート番号は 1 から 65535 である必要があります。

    • HTTP ヘッダー: HTTP リクエストのカスタムヘッダー。重複ヘッダーは許可されています。HTTP ヘッダーをキーと値のペアで指定できます。

    • 初期遅延 (秒): YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間 (秒単位) を指定します。デフォルト値: 3。

    • 期間 (秒): YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔 (秒単位) を指定します。デフォルト値: 10。最小値: 1。

    • タイムアウト (秒): YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間 (秒単位) を指定します。デフォルト値: 1。最小値: 1。

    • 正常なしきい値: 失敗したプローブの後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値: 1。最小値: 1。Liveness プローブの場合、このパラメーターは 1 に設定する必要があります。

    • 異常なしきい値: 成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値: 3。最小値: 1。

    TCP

    コンテナに TCP ソケットを送信します。kubelet は指定されたポートでソケットを開こうとします。接続が確立できる場合、コンテナは正常と見なされます。それ以外の場合、コンテナは異常と見なされます。次のパラメーターを構成できます。

    • ポート: コンテナによって公開されるポートの番号または名前。ポート番号は 1 から 65535 である必要があります。

    • 初期遅延 (秒): YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間 (秒単位) を指定します。デフォルト値: 15。

    • 期間 (秒): YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔 (秒単位) を指定します。デフォルト値: 10。最小値: 1。

    • タイムアウト (秒): YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間 (秒単位) を指定します。デフォルト値: 1。最小値: 1。

    • 正常なしきい値: 失敗したプローブの後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値: 1。最小値: 1。Liveness プローブの場合、このパラメーターは 1 に設定する必要があります。

    • 異常なしきい値: 成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値: 3。最小値: 1。

    コマンド

    コンテナでプローブコマンドを実行して、コンテナのヘルス状態を確認します。次のパラメーターを構成できます。

    • コマンド: コンテナのヘルス状態を確認するために実行されるプローブコマンド。

    • 初期遅延 (秒): YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間 (秒単位) を指定します。デフォルト値: 5。

    • 期間 (秒): YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔 (秒単位) を指定します。デフォルト値: 10。最小値: 1。

    • タイムアウト (秒): YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間 (秒単位) を指定します。デフォルト値: 1。最小値: 1。

    • 正常なしきい値: 失敗したプローブの後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値: 1。最小値: 1。Liveness プローブの場合、このパラメーターは 1 に設定する必要があります。

    • 異常なしきい値: 成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値: 3。最小値: 1。

  5. オプション: ライフサイクルセクションで、コンテナのライフサイクルを構成できます。

    コンテナのライフサイクルを構成するには、開始、開始後、停止前のパラメーターを指定できます。詳細については、コンテナライフサイクルイベントにハンドラーをアタッチするを参照してください。

    パラメーター

    説明

    開始

    コンテナが起動する前に有効になるコマンドとパラメーターを指定します。

    開始後

    コンテナが起動した後に有効になるコマンドを指定します。

    停止前

    コンテナを終了するコマンドを指定します。

  6. オプション: ボリュームセクションで、コンテナにマウントするボリュームを構成します。

    • ローカルストレージ: PV タイプドロップダウンリストから ConfigMap、シークレット、または EmptyDir を選択できます。次に、マウントソースとコンテナパスパラメーターを設定して、ボリュームをコンテナパスにマウントします。詳細については、ボリュームを参照してください。

    • クラウドストレージ: ディスクとファイルストレージ NAS (NAS) ファイルシステムがサポートされています。詳細については、ストレージの概要を参照してください。

  7. オプション: ログセクションで、ログ設定を指定し、収集されたログにカスタムタグを追加できます。

    パラメーター

    説明

    収集設定

    • ログストア: 収集されたログデータを保存するために、ログサービスにログストアを作成します。

    • コンテナ内のログパス (stdout に設定可能): ログを収集する Stdout またはパスを指定します。

      • stdout ファイルを収集する: stdout を指定すると、stdout ファイルが収集されます。

      • テキストログ: コンテナの指定されたパスにあるログが収集されることを指定します。この例では、/var/log/nginx がパスとして指定されています。パスにはワイルドカード文字を使用できます。

    カスタムタグ

    カスタムタグを追加することもできます。タグは、ログが収集されるときにコンテナのログに追加されます。ログ分析とフィルタリングのために、コンテナログにカスタムタグを追加できます。

  8. 次へをクリックして、詳細設定ウィザードページに進みます。

ステップ 3: 詳細設定を構成する

  1. Cronjob 設定セクションで、パラメーターを構成します。

    パラメーター

    説明

    スケジュール

    時間単位、日単位、週単位、または月単位でスケジュールを指定できます。cron 式を指定することもできます。詳細については、Cron 式を参照してください。

    同時実行ポリシー

    次の同時実行ポリシーのいずれかを選択できます。

    • 許可: ジョブの同時実行を許可します。同時実行ジョブはクラスターリソースを競合します。

    • 禁止: ジョブの同時実行を禁止します。ジョブがスケジュール内で完了しない場合、次のジョブはスキップされます。

    • 置換: ジョブがスケジュール内で完了しない場合、ジョブはスキップされます。

    ジョブ履歴

    レコードを保持する成功または失敗したジョブの数を指定できます。パラメーターを 0 に設定すると、システムはジョブのレコードを保持しません。

  2. ジョブ設定セクションで、ジョブパラメーターを構成します。

    パラメーター

    説明

    完了

    正常に終了する必要があるポッドの数。デフォルト値: 1。

    並列処理

    ジョブが並列で実行する必要があるポッドの数。デフォルト値: 1。

    タイムアウト

    YAML ファイルの activeDeadlineSeconds フィールド。このフィールドは、ジョブの期間制限を指定します。ジョブが期間制限内で完了しない場合、システムはジョブの終了を試みます。

    バックオフ制限

    ポッドが失敗した後にポッドを再作成する最大試行回数。デフォルト値: 6。失敗したポッドは、指数バックオフ遅延で再作成されます。遅延の上限は 6 分です。

    再起動

    有効な値: しない および 失敗時

  3. オプション: ラベル、アノテーションセクションで、追加をクリックして、ポッドにラベルとアノテーションを追加します。

  4. 作成をクリックします。

ステップ 4: アプリケーション情報を表示する

アプリケーションが作成されたら、表示されるページの詳細の表示をクリックして、CronJob 詳細ページに移動します。

ジョブページの情報も表示できます。CronJob の名前をクリックするか、アクション列の詳細をクリックして、CronJob 詳細ページに移動します。

kubectl

次の表では、CronJob の作成に使用される主要なパラメーターについて説明します。

パラメーター

説明

.spec.schedule

CronJob のスケジュールを指定します。スケジュール形式の詳細については、Cron スケジュールを参照してください。

.spec.jobTemplate

実行するジョブのタイプを指定します。ジョブタイプの詳細については、ジョブパターンを参照してください。

.spec.startingDeadlineSeconds

ジョブを実行する必要がある期限を指定します。

.spec.concurrencyPolicy

同時実行ポリシーを指定します。有効な値: 許可、禁止、および置換。

  • 許可: ジョブの同時実行を許可します。同時実行ジョブはクラスターリソースを競合します。

  • 禁止: ジョブの同時実行を禁止します。ジョブがスケジュール内で完了しない場合、次のジョブはスキップされます。

  • 置換: ジョブがスケジュール内で完了しない場合、ジョブはスキップされます。

この例では、hello という名前の CronJob を作成して、kubectl を使用して CronJob を作成する方法を示します。

  1. ACS クラスターに接続します。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する および Cloud Shell で kubectl を使用して ACS クラスターを管理するを参照してください。

  2. cronjob.yaml ファイルを作成し、次のコンテンツをファイルにコピーします。

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: registry.cn-hangzhou.aliyuncs.com/acs/busybox:v1.29.2
                args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
  3. 次のコマンドを実行して、CronJob を作成します。

    kubectl create -f cronjob.yaml

    cronjob.batch/hello created が返された場合、CronJob は作成されています。