ほとんどの場合、ワークフローとポッドの再利用ポリシーを設定する必要があります。 これにより、ワークフローの完了後にクラスター内の制御プレーンとワークフローコントローラーによって使用されるリソースが線形に増加するのを防ぎます。 プロセス分析とワークフローのトラブルシューティングには、ワークフローログへのアクセスが必要です。 ポッドが削除された後、オープンソースのKubernetesは、ポッドのログまたはポッドが作成されたワークフローのログを保持しません。 ログを保持するには、ワークフロークラスターを使用します。 ワークフロークラスターはSimple Log Serviceと統合されており、ログを収集してSimple Log Serviceに保存できます。 Argo CLIまたはArgo UIを使用して、収集したログを表示できます。
使用上の注意
ワークフローのログ収集を有効にした後、ワークフローのポッドが削除されているかどうかに関係なく、Argo CLIまたはArgo UIを使用して、ワークフローが削除される前に収集されたログを表示できます。
ワークフローがデータベースに永続化されている場合は、Argo CLIを使用してワークフローログのZIPファイルをダウンロードするか、ワークフローの削除後にSimple Log Serviceコンソールでワークフローログを表示できます。
ワークフローをデータベースに永続化する方法の詳細については、「ワークフローの永続化」をご参照ください。
注意事項
oss-artifact-repositoryが有効になっていて、ワークフロークラスターにarchiveLogs: trueが指定されている場合、Simple Log Serviceはクラスターからポッドログを収集しません。 この場合、ポッドログはoss-artifact-repositoryに収集されます。oss-artifact-repositoryと比較して、Simple Log Serviceは自動化されたログライフサイクル管理と強力なログクエリ機能を提供します。 Simple Log Serviceでは、ログの保存期間を指定できます。 この場合、Simple Log Serviceを有効にするには、archiveLogs: true設定を削除します。
前提条件
Argo CLIを使用してSimple Log Serviceのログ収集を有効にする場合は、まず次の操作を実行する必要があります。
Alibaba Cloud Argo CLI 3.4.12をダウンロードしてインストールします。 詳細については、「Alibaba Cloud Argo CLI」をご参照ください。
Resource Access Management (RAM) ユーザーを使用する場合は、RAMユーザーにAliyunLogReadOnlyAccessポリシーをアタッチして、RAMユーザーにSimple Log Serviceへの読み取り専用アクセスを許可する必要があります。 詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」をご参照ください。
Simple Log Serviceの有効化
ワークフロークラスターを作成すると、クラスターからワークフローログを収集するために、k8s-log-<clusterid> という名前のSimple Log Serviceプロジェクトがシステムによって自動的に作成されます。 k8s-log-<clusterid> プロジェクトが作成されていない場合は、手動でプロジェクトを作成できます。 Simple Log Serviceプロジェクトの作成方法の詳細については、「Simple Log Serviceプロジェクトの作成」をご参照ください。
Simple Log Serviceを有効にするには、Alibaba Cloud Argo CLIを使用するか、AliyunLogConfigを作成します。
Alibaba Cloud Argo CLIを使用したシンプルなLog Serviceの有効化
Alibaba Cloud Argo CLIは、オープンソースのArgo CLIと完全に互換性があり、ログ機能が向上しています。 Alibaba Cloud Argo CLIは、削除されたポッドのログを収集できます。
次のコマンドを実行して、Simple Log Serviceを設定します。
argo config sls
ログ保存日数を入力してください。 デフォルトは7日です。
10 期待される出力:
Start to config SLS for your cluster.
デフォルトの名前空間でAliyunLogConfig CR workflow-sls-configを作成しました。
作成されたSLSログストアワークフロー-SLSプロジェクトk8s-logのlogstore-<clusterid> 、ログ保持日数は10日です出力は、Simple Log Serviceが設定されていることを示します。 クラスター内のすべてのワークフローのログは、workflow-logstore Logstoreに収集されます。
Simple Log Serviceコンソールにログインし、[k8s-log-<clusterid>] プロジェクトを見つけ、[workflow-logstore] をクリックしてログを表示します。
AliyunLogConfigを作成してSimple Log Serviceを有効にする
次のコマンドを実行して、AliyunLogConfigを作成します。Log Serviceコントローラーは、k8s-log-<clusterid> という名前のプロジェクトとworkflow-Logstoreという名前のlogstoreを自動的に作成します。
cat << EOF | kubectl apply -f-
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
メタデータ:
名前: workflow-sls-config
namespace: デフォルト
spec:
# ログは5日間保存されます
lifeCycle: 5
logstore: workflow-logstore
logtailConfig:
inputType:プラグイン
configName: workflow-sls-config
inputDetail:
プラグイン:
入力:
-詳細:
Stderr:true
Stdout:true
タイプ: service_docker_stdout
EOF Argo CLIを使用したSimple Log Serviceへのアクセス
クラスター内のワークフローログの表示
Argo CLIを使用して、既存のポッドのログや削除されたポッドのログを含むワークフローのログを表示できます。
kubectl logs <pod-name> コマンドを実行して、既存のポッドのログを表示できます。 デフォルトでは、最大2,000行のログデータが返されます。 さらにログデータを表示したり、削除されたポッドのログを表示したりする場合は、次のいずれかの方法を選択できます。
Argo CLIを使用したSimple Log Serviceへのアクセス (推奨)
次のコマンドを実行して、Argo CLIに権限を付与します。
argo config init# 画面上の指示に基づいて、AccessKey IDやAccessKey secretなどの情報を指定します。次のコマンドを実行して、ポッドのログを照会します。
argo logs <workflow-name> <pod-name> -- sls# 指定されたポッドのログを照会します。 argo logs <workflow-name> -- sls# 指定したワークフローのログのZIPファイルをダウンロードします。
Argo Serverを使用したSimple Log Serviceへのアクセス
Argo CLIを使用して削除されたポッドのログを表示する場合は、最初にArgo Serverを有効にし、必要なパラメーターを設定する必要があります。
Simple Log Serviceによって収集されたワークフローログを照会するには、<pod-name> を指定する必要があります。
別の名前空間のワークフローまたはポッドにアクセスするには、名前空間のKUBE_TOKENを取得する必要があります。
次のコマンドを実行してArgo Serverを有効にし、パラメーターを設定します。
export ARGO_SERVER=argo.<cluster id>.<regio n>.alicontainer.com:2746 export KUBE_TOKEN=$(k create token default -n default -- duration 24h) export ARGO_TOKEN="ベアラー $KUBE_TOKEN" export ARGO_INSECURE_SKIP_VERIFY=true次のコマンドを実行して、ワークフローポッドのログを照会します。
argo logs <workflow-name> <pod-name>
データベースに保持されているワークフローのログを表示する
ワークフローをデータベースに保持できます。 これにより、ワークフローが削除された後に、Argo CLIを使用してワークフローログをダウンロードできます。
次のコマンドを実行して、Argo CLIに権限を付与します。
argo config init# 画面上の指示に基づいて、AccessKey IDやAccessKey secretなどの情報を指定します。次のコマンドを実行して、ワークフローのユーザーID (UID) を照会します。
# argoアーカイブリスト NAMESPACE NAME STATUS AGE DURATION PRIORITYメッセージP/R/CパラメータUID デフォルトhello-world-l6c2r成功3d 1m 0 0/0/0 179eaef0-fde3-496f-946d-549e8f ******ワークフローログをダウンロードします。
# argoアーカイブログ179eaef0-fde3-496f-946d-549e8f ****** # ls hello-world-l6c2r.zip
Argo UIを使用したSimple Log Serviceへのアクセス
ポッドが削除されているかどうかに関係なく、Argo UIを使用してワークフローポッドのログを表示できます。 削除されたポッドのログを照会すると、次の図に示すように、ログがArgo UIに表示されます。

簡易ログサービスの無効化
次のコマンドを実行して、AliyunLogConfigを削除します。
kubectl delet e aliyunlogconfigs.log.alibabacloud.comワークフロー-sls-config -n defaultSimple Log Serviceコンソールにログインし、workflow-logstore Logstoreを削除します。