我有一个状态为 的吊舱,CrashLoopBackOff我现在看到的日志kubectl logs <pod-name> -p只是部分图片。其他日志可以在其他文件中找到(例如/var/log/something/something.log)。
由于这个 pod 崩溃了,我无法kubectl exec进入那里的 shell 并查看文件。
如何查看不再运行的容器生成的日志文件?
更具体地说,我正在寻找$HOME/logs/es.log(在失败的容器中)下的日志文件
我对这个看似常见的问题没有找到解决方案感到非常沮丧,因此我构建了一个 docker 镜像,它跟踪日志文件并将它们发送到 stdout,用作 sidecar 容器。
这是我所做的:
emptyDir{}在 pod 中添加了一个卷mountPath它是将日志写入的目录lutraman/logger-sidecar:v2),并将相同的卷安装到/logs(我编写了脚本以从该目录读取日志)然后,写入该目录的所有日志都可以通过 kubectl logs <pod-name> -c logger
这是一个示例 yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: dummy
labels:
app: dummy
spec:
selector:
matchLabels:
app: dummy
template:
metadata:
labels:
app: dummy
spec:
volumes:
- name: logs
emptyDir: {}
containers:
- name: dummy-app # the app that writes logs to files
image: lutraman/dummy:v2
ports:
- containerPort: 8080
name: http
protocol: TCP
env:
- name: MESSAGE
value: 'hello-test'
- name: LOG_FILE
value: '/var/log/app.log'
volumeMounts:
- name: logs
mountPath: /var/log
- name: logger # the sidecar container tracking logs and sending them to stdout
image: lutraman/logger-sidecar:v2
volumeMounts:
- name: logs
mountPath: /logs
Run Code Online (Sandbox Code Playgroud)
对于任何感兴趣的人,以下是我制作边车容器的方法:
Dockerfile:
FROM alpine:3.9
RUN apk add bash --no-cache
COPY addTail /addTail
COPY logtrack.sh /logtrack.sh
CMD ["./logtrack.sh"]
Run Code Online (Sandbox Code Playgroud)
添加尾:
apiVersion: apps/v1
kind: Deployment
metadata:
name: dummy
labels:
app: dummy
spec:
selector:
matchLabels:
app: dummy
template:
metadata:
labels:
app: dummy
spec:
volumes:
- name: logs
emptyDir: {}
containers:
- name: dummy-app # the app that writes logs to files
image: lutraman/dummy:v2
ports:
- containerPort: 8080
name: http
protocol: TCP
env:
- name: MESSAGE
value: 'hello-test'
- name: LOG_FILE
value: '/var/log/app.log'
volumeMounts:
- name: logs
mountPath: /var/log
- name: logger # the sidecar container tracking logs and sending them to stdout
image: lutraman/logger-sidecar:v2
volumeMounts:
- name: logs
mountPath: /logs
Run Code Online (Sandbox Code Playgroud)
logtrack.sh:
FROM alpine:3.9
RUN apk add bash --no-cache
COPY addTail /addTail
COPY logtrack.sh /logtrack.sh
CMD ["./logtrack.sh"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5215 次 |
| 最近记录: |