本文將為您介紹如何針對Job類型任務場景采集日志到日志系統。
前提條件
已創建了一個ACK Serverless集群。更多信息,請參見容器服務 Serverless 版使用快速入門。
已在該集群上部署了虛擬節點。更多信息,請參見通過虛擬節點將Pod調度到ECI上運行。
說明
如果您使用了阿里云日志服務,Job任務掛載volume收集日志通過配置環境變量,可以直接同步阿里云日志服務。詳情請參見ECI中日志采集的自定義配置。
操作步驟
重要
在ECS模式下,Job任務可以通過DaemonSet方式采集標準輸出,但是在ECI模式下不支持DaemonSet。當Job任務結束后,Pod會立即退出,此時日志可能還未被完全收集,針對這種情況,我們可以采用如下方式解決:
Job類任務掛載NAS盤,把輸出的日志存儲在NAS盤,再通過另一個同樣掛載NAS盤的Pod來采集Job任務標準輸出到日志系統中。
通過kubectl客戶端創建job.yaml。
一個計算π值Job任務:
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: resouer/ubuntu-bc command: ["sh", "-c", "echo 'scale=1000; 4*a(1)' | bc -l > /eci/a.log 2>&1"] #運行輸出結果重定向到指定文件 volumeMounts: - name: log-volume mountPath: /eci readOnly: false restartPolicy: Never volumes: - name: log-volume nfs: path: /eci server: 04edd48c7c-****.cn-hangzhou.nas.aliyuncs.com readOnly: false backoffLimit: 4
部署一個Job任務到虛擬節點。
說明關于如何部署虛擬節點請參見通過虛擬節點將Pod調度到ECI上運行。
kubectl apply -f job.yaml -n fvt-eci
查看Pod狀態。
kubectl get pod -n fvt-eci
通過kubectl客戶端創建log-collection.yaml文件,并拷貝以下內容到該文件。然后執行指令創建一個Pod,掛載NAS盤用來采集Job任務輸出日志。
apiVersion: v1 kind: Pod metadata: name: log-collection spec: containers: - image: nginx:latest name: log-collection command: ['/bin/sh', '-c', 'echo &(cat /eci/a.log)'] #查看Job日志文件 volumeMounts: - mountPath: /eci name: log-volume restartPolicy: Never volumes: - name: log-volume nfs: server: 04edd48c7c-****.cn-hangzhou.nas.aliyuncs.com path: /eci readOnly: false
文檔內容是否對您有幫助?