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

Container Service for Kubernetes:大規模なワークフローをApsaraDB RDS for MySQLにオフロードする

最終更新日:Oct 28, 2024

ワークフローは、Kubernetesリソースとしてワークフロークラスターに保存されます。 各リソースのサイズは1 MB以下に制限されています。 ワークフローリソースは、各タスクのステータスを /status/nodesフィールドに格納します。 ワークフローに多数のタスクが含まれる場合、リソースのサイズが1 MBを超えることがあります。 この場合、ステータス情報の更新時に例外が発生します。 この問題を解決するには、ステータス情報を外部SQLデータベースにオフロードします。 このトピックでは、ワークフローのステータス情報をApsaraDB RDS for MySQLにオフロードして、大規模なワークフローをサポートする方法について説明します。

前提条件

手順

  1. secret.yamlという名前のファイルを作成し、次の内容をファイルに追加して、データベースのユーザー名とパスワードを保存します。

    apiVersion: v1
    stringData:
      username: <database-username>  # Replace with the database username. 
      password: <database-password>  # Replace with the database password. 
    kind: Secret
    metadata:
      name: argo-mysql-config
      namespace: default
    type: Opaque
  2. 次のコマンドを実行して、シークレットを作成します。

    kubectl apply -f secret.yaml
  3. workflow-controller-configmapファイルを変更します。 ワークフローのオフロード機能を有効にするには、persistencenodeStatusOffLoad: trueを追加します。 workflow-controller-configmapファイルの変更の詳細については、「ワークフロークラスターの構成の変更」をご参照ください。

      persistence: |
        connectionPool:
          maxIdleConns: 100
          maxOpenConns: 0
          connMaxLifetime: 0s # 0 means connections don't have a max lifetime
        archiveTTL: 30d
        nodeStatusOffLoad: true
        mysql:
          host: rm-****.mysql.cn-beijing.rds.aliyuncs.com
          port: 3306
          database: argo-workflow  # Specify the database you created in the Prerequisites section.
          tableName: argo_workflows
          userNameSecret:
            name: argo-mysql-config
            key: username
          passwordSecret:
            name: argo-mysql-config
            key: password

    パラメーター

    説明

    nodeStatusOffLoad

    ワークフローのオフロード機能を有効にするには、trueに設定します。

    mysql.host

    ApsaraDB RDS for MySQLインスタンスのエンドポイント。

    mysql. データベース

    データベースの名前。

  4. 設定が完了したら、Argo Serverポッドを再起動し、ポッドが通常どおり実行されることを確認します。

    kubectl delete pod argo-server-xxx -n <cluster-id>
    説明

    Argo Serverポッドが繰り返し再起動する場合は、ワークフロークラスターとApsaraDB RDS for MySQLインスタンス間の接続を確認します。 同じVPCにデプロイされ、VPC CIDRブロックがApsaraDB RDS for MySQLインスタンスのホワイトリストに追加されていることを確認します。

関連ドキュメント