工作流程完成時,一般需要配置工作流程和Pod的回收策略清理相應的資源,以避免叢集控制面和工作流程控制器資源的線性增長。當工作流程出現問題或需要進行流程分析時,查看工作流程日誌是一個必不可少的能力。由於原生的叢集在Pod清理後就不能查看Pod或工作流程日誌,因此,工作流程叢集整合了阿里雲Log ServiceSLS,收集工作流程運行過程中Pod產生的日誌,上報到您帳號下的SLS服務中,並且支援通過Argo CLI或Argo UI便捷地查看工作流程的日誌。
使用說明
日誌收集後,如果工作流程還在叢集中,無論Pod是否被刪除,您都可以通過Argo CLI和Argo UI查看工作流程相關的Pod日誌。
如果工作流程在叢集中被刪除,但是已經持久化到資料庫中,您可以通過Argo CLI下載工作流程日誌的ZIP包或者直接存取Log Service控制台查看日誌。
關於如何將工作流程持久化到資料庫中,請參見持久化工作流程。
注意事項
如果工作流程叢集開啟
oss-artifact-repository,同時設定archiveLogs: true,即工作流程叢集已配置使用oss-artifact-repository儲存日誌,則SLS日誌收集不生效。相比
oss-artifact-repository收集,SLS日誌收集具有自動的日誌生命週期管理(可配置日誌保留的天數),強大的查詢能力。如需通過SLS收集日誌,可以將archiveLogs: true刪除。
前提條件
若您選擇使用Argo CLI方式開啟Log Service和擷取日誌,您需要提前完成以下操作:
下載並安裝v3.4.12或以上版本的阿里雲Argo CLI。具體操作,請參見阿里雲Argo CLI。
若您使用的帳號為RAM使用者,則需要為RAM使用者授予Log ServiceSLS的唯讀許可權,系統權限原則為AliyunLogReadOnlyAccess。具體授權操作,請參見建立RAM使用者及授權。
開啟Log Service
工作流程叢集建立後,系統會自動建立一個名為k8s-log-<clusterid>的Project,用來收集工作流程叢集日誌。如果Log ServiceProject不存在,請自行建立名為k8s-log-<clusterid>的Project。關於建立Project的具體操作,請參見建立Project。
您可以通過阿里雲 Argo CLI或者通過直接建立Log ServiceCR兩種方式開啟Log Service。
通過阿里雲Argo CLI開啟
阿里雲Argo CLI完全相容開源Argo CLI,增強了日誌能力,可以擷取工作流程已刪除Pod的日誌。
執行以下命令,配置Log Service參數。
argo config sls
Please input log retention days. Default is 7 days.
10預期輸出:
Start to config SLS for your cluster.
Created AliyunLogConfig CR workflow-sls-config in default namespace.
Created SLS logstore workflow-logstore in SLS project k8s-log-<clusterid>, log retention days is 10 days預期輸出表明,Log Service配置成功。所有工作流程日誌將被收集到名為workflow-logstore的日誌庫(Logstore)中。
您可以登入Log Service控制台,尋找名為k8s-log-<clusterid>的Project,然後查看對應的workflow-logstore。
通過建立Log ServiceCR開啟
執行以下命令,建立阿里雲日誌配置CR。Log Service控制器會自動建立一個名為k8s-log-<clusterid>的Project和一個名為workflow-logstore的日誌庫(Logstore)。
cat << EOF | kubectl apply -f -
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: workflow-sls-config
namespace: default
spec:
# log will store for 5 days
lifeCycle: 5
logstore: workflow-logstore
logtailConfig:
inputType: plugin
configName: workflow-sls-config
inputDetail:
plugin:
inputs:
- detail:
Stderr: true
Stdout: true
type: service_docker_stdout
EOF通過Argo CLI訪問Log Service
訪問叢集中的工作流程日誌
通過Argo CLI可以訪問在叢集中現存的工作流程的日誌,包括已存在的Pod和刪除的Pod。
在叢集中存在的Pod可以通過原生kubectl logs <pod-name>訪問,預設最多顯示2000行日誌,若該方式顯示的日誌數量不夠或者需要訪問已經刪除的Pod,可以通過以下兩種方式訪問SLS的日誌。
通過Argo CLI直接存取SLS(推薦)
執行以下命令,配置存取權限。
argo config init #按照提示配置相關資訊,包括ak、sk等。執行以下命令擷取對應Pod的日誌。
argo logs <workflow-name> <pod-name> --sls # 擷取對應Pod日誌。 argo logs <workflow-name> --sls # 擷取對應workflow日誌ZIP包。
通過訪問Argo Server訪問SLS
如需通過Argo CLI訪問已刪除Pod的日誌,則需要先開啟Argo Server並配置相關參數。
通過Log Service擷取工作流程日誌,必須指定<pod-name>。
若需要訪問其他Namespace的Workflow/Pod,則擷取KUBE_TOKEN時,需要使用對應Namespace。
執行以下命令,開啟Argo Server並配置參數。
export ARGO_SERVER=argo.<cluster id>.<region>.alicontainer.com:2746 export KUBE_TOKEN=$(k create token default -n default --duration 24h) export ARGO_TOKEN="Bearer $KUBE_TOKEN" export ARGO_INSECURE_SKIP_VERIFY=true執行以下命令,擷取工作流程Pod的日誌。
argo logs <workflow-name> <pod-name>
訪問持久化到資料庫的工作流程日誌
您可以配置持久化工作流程,將工作流程持久化儲存到資料庫中,即使工作流程在叢集中被刪除,也可以通過Agro CLI方式下載工作流程日誌。
執行以下命令,配置存取權限。
argo config init #按照提示配置相關資訊,包括ak、sk等。執行以下命令查詢工作流程的UID。
# argo archive list NAMESPACE NAME STATUS AGE DURATION PRIORITY MESSAGE P/R/C PARAMETERS UID default hello-world-l6c2r Succeeded 3d 1m 0 0/0/0 179eaef0-fde3-496f-946d-549e8f******下載工作流程日誌。
# argo archive logs 179eaef0-fde3-496f-946d-549e8f****** # ls hello-world-l6c2r.zip
通過Argo UI訪問Log Service
無論工作流程Pod是否被刪除,您都可以通過Argo UI訪問Pod的日誌。如果Pod被刪除,則訪問SLS擷取日誌並顯示到Argo UI,如下圖所示。

關閉Log Service
執行以下命令,刪除AliyunLogConfig CR。
kubectl delete aliyunlogconfigs.log.alibabacloud.com workflow-sls-config -n default登入Log Service控制台,將名為workflow-logstore的日誌庫刪除。