ワークフローは、Kubernetesリソースとしてワークフロークラスターに保存されます。 各リソースのサイズは1 MB以下に制限されています。 ワークフローリソースは、各タスクのステータスを /status/nodesフィールドに格納します。 ワークフローに多数のタスクが含まれる場合、リソースのサイズが1 MBを超えることがあります。 この場合、ステータス情報の更新時に例外が発生します。 この問題を解決するには、ステータス情報を外部SQLデータベースにオフロードします。 このトピックでは、ワークフローのステータス情報をApsaraDB RDS for MySQLにオフロードして、大規模なワークフローをサポートする方法について説明します。
前提条件
ApsaraDB RDS for MySQLインスタンスが作成されています。
重要ApsaraDB RDS for MySQLインスタンスは、ワークフロークラスターと同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。 VPC CIDRブロックは、ApsaraDB RDS for MySQLインスタンスのホワイトリストに追加する必要があります。
データベースの作成後、ApsaraDB RDS for MySQLインスタンスのデータベース名、データベースのユーザー名とパスワード、エンドポイントを記録します。 アカウントには、データベースに対する読み取りおよび書き込み権限が必要です。 ApsaraDB RDS For MySQLインスタンスのエンドポイントを表示する方法の詳細については、「インスタンスエンドポイントとポートの表示と管理」をご参照ください。
手順
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次のコマンドを実行して、シークレットを作成します。
kubectl apply -f secret.yamlworkflow-controller-configmapファイルを変更します。 ワークフローのオフロード機能を有効にするには、
persistenceにnodeStatusOffLoad: 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. データベース
データベースの名前。
設定が完了したら、Argo Serverポッドを再起動し、ポッドが通常どおり実行されることを確認します。
kubectl delete pod argo-server-xxx -n <cluster-id>説明Argo Serverポッドが繰り返し再起動する場合は、ワークフロークラスターとApsaraDB RDS for MySQLインスタンス間の接続を確認します。 同じVPCにデプロイされ、VPC CIDRブロックがApsaraDB RDS for MySQLインスタンスのホワイトリストに追加されていることを確認します。
関連ドキュメント
ワークフローのステータスと課金ルールの表示方法の詳細については、「Create a workflow」をご参照ください。
大規模なワークフローのオフロードの詳細については、「大規模なワークフローのオフロード」をご参照ください。