在Serverless集群运行Job任务,无法通过DaemonSet采集日志,且Job Pod在任务结束后会立即退出,可能导致日志未能完整收集。为确保这类场景下日志的完整性,您可以将Job任务的输出日志存储到挂载的NAS盘,然后通过一个独立的日志采集Pod从该NAS盘读取日志并发送到日志系统。本文将为您介绍如何针对Job类型任务场景采集日志到日志系统。
前提条件
- 确保您已经创建Serverless集群,具体操作请参阅创建Serverless集群。
- 已开通天翼云弹性文件或对象存储服务。
- 确保kubectl工具已经连接目标集群。
操作步骤
步骤一:通过kubectl客户端创建job.yaml
- 创建一个计算π值Job任务,并挂载NAS盘, Job参考YAML配置如下:
apiVersion: batch/v1
kind: Job
metadata:
name: pi-log
spec:
template:
spec:
containers:
- name: pi
image: user1-registry-huadong1.crs-internal.ctyun.cn/library/perl:latest
command: ["/bin/sh", "-c", "perl -Mbignum=bpi -wle 'print bpi(1000)' > /eci/a.log 2>&1"] #运行输出结果重定向到指定文件
resources:
limits:
cpu: "1"
memory: 2Gi
volumeMounts:
- name: pvc-nas
mountPath: /eci
readOnly: false
restartPolicy: Never
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-static-nas
backoffLimit: 4
- 创建Job任务。
kubectl apply -f job.yaml
- 查看Pod状态。
kubectl get pod
步骤二:创建Pod来采集Job任务输出日志
- 通过kubectl客户端创建log-collection.yaml文件,示例如下:
apiVersion: v1
kind: Pod
metadata:
name: log-collection
spec:
containers:
- image: registry-huadong1.crs-internal.ctyun.cn/open-source/nginx:1.26-alpine-slim
name: log-collection
command: ['/bin/sh', '-c', 'echo &(cat /eci/a.log)'] #查看Job日志文件
resources:
limits:
cpu: "1"
memory: 2Gi
volumeMounts:
- name: pvc-nas
mountPath: /eci
restartPolicy: Never
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-static-nas
- 然后执行指令创建一个Pod,挂载NAS盘用来采集Job任务输出日志。
kubectl get pod
- 可通过ECI控制台查看log-collection pod的日志输出如下: