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

Container Service for Kubernetes:ワークフローの作成

最終更新日:Apr 22, 2025

ワークフロークラスターは、オープンソースのArgoワークフローに基づいて開発され、継続的統合および継続的配信 (CICD) パイプライン、データ処理、機械学習、シミュレーション計算に適用できます。 このトピックでは、Alibaba Cloud Argo CLIを使用してワークフローを作成し、そのワークフローのCPUおよびメモリリソースを設定する方法の例を示します。

前提条件

使用上の注意

ワークフローサービスアカウント

ワークフローでは、他のKubernetesリソースにアクセスするサービスアカウントを指定できます。 サービスアカウントを作成すると、ワークフロークラスターは自動的にこのサービスアカウントへの権限を付与します。 サービスアカウントの権限が不十分な場合は、DingTalkグループ35688562に参加してテクニカルサポートをリクエストしてください

Alibaba Cloud Argo CLI

Alibaba Cloud Argo CLIは、オープンソースのArgo CLIと完全に互換性があり、メトリクスとロギング機能が強化されています。 Alibaba Cloud Argo CLIを使用して、ワークフローのCPU使用率、メモリ使用率、および運用コストを照会できます。 さらに、これを使用して、ワークフローから削除されたポッドのログを取得できます。

以下の手順を実行します。

    説明

    次の例では、Linuxが使用されます。 使用するオペレーティングシステムに基づいて、次のAlibaba Cloud Argo CLIパッケージのいずれかをダウンロードできます。

  1. 次のコマンドを実行して、Alibaba Cloud Argo CLIをダウンロードします。

    wget https://ack-one.oss-cn-hangzhou.aliyuncs.com/cli/v3.4.12/argo-cli-aliyun-linux
  2. 次のコマンドを実行して、argo-cli-aliyun-linuxを実行可能にします。

    chmod +x argo-cli-aliyun-linux
  3. 环境変数に含まれるディレクトリに実行ファイルを移动します。 例: /usr/local/bin/

    mv argo-cli-aliyun-linux /usr/local/bin/argo

ワークフローの作成

Alibaba Cloud Argo CLIまたはkubectlを使用してワークフローを作成できます。

Alibaba Cloud Argo CLIを使用したワークフローの管理

  1. helloworld-workflow.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow                  # new type of k8s spec.
    metadata:
      generateName: hello-world-    # name of the workflow spec.
    spec:
      entrypoint: whalesay          # invoke the whalesay template.
      templates:
        - name: whalesay              # name of the template.
          container:
            image: docker/whalesay
            command: [ cowsay ]
            args: [ "hello world" ]
  2. 次のコマンドを実行して、ワークフローを送信します。

    argo submit helloworld-workflow.yaml
  3. ワークフローのステータスを照会します。

    1. 次のコマンドを実行して、ワークフローのリストを照会します。

      argo list

      期待される出力:

      NAME                STATUS      AGE   DURATION   PRIORITY
      hello-world-lgdpp   Succeeded   2m    37s        0
    2. 次のコマンドを実行して、ワークフローのステータスを照会します。

      argo get hello-world-lgdpp

      期待される出力:

      Name:                hello-world-lgdpp
      Namespace:           default
      ServiceAccount:      unset (will run with the default ServiceAccount)
      Status:              Succeeded
      Conditions:
       PodRunning          False
       Completed           True
      ....
      Duration:            37 seconds
      Progress:            1/1
      ResourcesDuration:   17s*(1 cpu),17s*(100Mi memory)
      
      STEP                  TEMPLATE  PODNAME            DURATION  MESSAGE
       ✔ hello-world-lgdpp  whalesay  hello-world-lgdpp  27s

kubectlを使用したワークフローの管理

kubeconfigファイルを設定した後、kubectlを使用してワークフロークラスターを管理できます。 ただし、通常のKubernetesクラスターとは異なり、kubectlを使用すると一部の操作が制限されます。 次の表に、kubectlを使用してさまざまなリソースを管理するために必要な権限を示します。

リソース

権限

priorityclasses

ワークフローでPriorityClassesを管理し、PriorityClassesをカスタマイズしてポッドの優先順位に基づいてポッドのスケジューリングを制御する権限。

名前空間

名前空間を作成するための権限と、自己管理名前空間内のすべてのリソースに対する完全な権限。 ただし、システム名前空間のリソースにアクセスすることはできません。 システム名前空間とは、名前がkube- で始まる名前空間を指します。

重要

クラスターIDにちなんで名付けられた名前空間は、Argoのシステム名前空間です。 この名前空間を管理できます。 たとえば、workflow-controller-configmapでArgoワークフロー設定を変更できます。

persistentvolumes

完全な権限。

persistentvolumeclaims

自己管理名前空間のリソースに対する完全な権限。

secretsconfigmapsserviceaccounts

自己管理名前空間のリソースに対する完全な権限。

ポッド

セルフマネージド名前空間のリソースに対する読み取り権限。

ポッド /logevents

セルフマネージド名前空間のリソースに対する読み取り権限。

pods/exec

自己管理型の名前空間にリソースを作成する権限。

アルゴ:

ワークフロー

workflowtasksets

workflowtemplates

cronworkflow

自己管理名前空間のリソースに対する完全な権限。

ワークフローでコンテナのCPUおよびメモリ要求を構成する

ワークフロークラスタは、好ましくは、プリエンプティブル弾性コンテナインスタンスを使用する。 従量課金のエラスティックコンテナインスタンスは、コストの最適化にも使用されます。 プリエンプティブルエラスティックコンテナインスタンスの保護期間は1時間です。 ワークフローの各ステップが1時間以内に完了できることを確認します。

プリエンプティブエラスティックコンテナインスタンスは、2 vCPU以上の設定のみをサポートします。

  • コンテナにリソースリクエストが設定されていない場合、または2 vCPU /4 GiB未満で設定されている場合、システムはデフォルトで2 vCPU /4 GiBを使用します。

  • thdリソースリクエストが2 vCPU /4 GiBを超えると、システムは仕様を満たすエラスティックコンテナインスタンスと自動的に一致します。

    次の表に、サポートされているCPUおよびメモリ要求を示します。 CPUリクエストを8 vCPU以上に設定しないことを推奨します。

    vCPU

    メモリ (GiB)

    2

    4、8、および16

    4

    4、8、16、および32

    8

    4、8、16、32、および64

従量課金のエラスティックコンテナインスタンスを強制的にワークフローを実行する

プリエンプティブルのエラスティックコンテナインスタンスを使用してコスト優先モードで主要なタスクを実行したくない場合は、従量課金のエラスティックコンテナインスタンスにワークフローを強制的に実行させることができます。

次のサンプルコードに示すように、[Container] セクションでrequestsおよびlimitsパラメーターを設定します。

apiVersion: argoproj.io/v1alpha1
kind: Workflow                  # new type of k8s spec.
metadata:
  generateName: hello-world-    # name of the workflow spec.
spec:
  entrypoint: whalesay         # invoke the whalesay template.
  templates:
    - name: whalesay              # name of the template.
      container:
        image: docker/whalesay
        command: [ cowsay ]
        args: [ "hello world" ]
        resources:
          requests:
            cpu: 0.5
            memory: 1Gi
          limits:
            cpu: 0.5
            memory: 1Gi