Job類型任務(wù)如何采集日志
本文將為您介紹如何針對Job類型任務(wù)場景采集日志到日志系統(tǒng)。
前提條件
已創(chuàng)建了一個ACK Serverless集群。更多信息,請參見容器服務(wù) Serverless 版使用快速入門。
已在該集群上部署了虛擬節(jié)點(diǎn)。更多信息,請參見通過虛擬節(jié)點(diǎn)將Pod調(diào)度到ECI上運(yùn)行。
已創(chuàng)建NAS文件系統(tǒng)并添加掛載點(diǎn)。更多信息,請參見創(chuàng)建文件系統(tǒng)和管理掛載點(diǎn)。
如果您使用了阿里云日志服務(wù),Job任務(wù)掛載volume收集日志通過配置環(huán)境變量,可以直接同步阿里云日志服務(wù)。詳情請參見ECI中日志采集的自定義配置。
操作步驟
在ECS模式下,Job任務(wù)可以通過DaemonSet方式采集標(biāo)準(zhǔn)輸出,但是在ECI模式下不支持DaemonSet。當(dāng)Job任務(wù)結(jié)束后,Pod會立即退出,此時日志可能還未被完全收集,針對這種情況,我們可以采用如下方式解決:
Job類任務(wù)掛載NAS盤,把輸出的日志存儲在NAS盤,再通過另一個同樣掛載NAS盤的Pod來采集Job任務(wù)標(biāo)準(zhǔn)輸出到日志系統(tǒng)中。
通過kubectl客戶端創(chuàng)建job.yaml。
一個計(jì)算π值Job任務(wù):
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"] #運(yùn)行輸出結(jié)果重定向到指定文件 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任務(wù)到虛擬節(jié)點(diǎn)。
說明關(guān)于如何部署虛擬節(jié)點(diǎn)請參見通過虛擬節(jié)點(diǎn)將Pod調(diào)度到ECI上運(yùn)行。
kubectl apply -f job.yaml -n fvt-eci
查看Pod狀態(tài)。
kubectl get pod -n fvt-eci
通過kubectl客戶端創(chuàng)建log-collection.yaml文件,并拷貝以下內(nèi)容到該文件。然后執(zhí)行指令創(chuàng)建一個Pod,掛載NAS盤用來采集Job任務(wù)輸出日志。
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