Kubernetes - 挂载容器 stdout stderr 日志
Kubernetes - mount container stdout stderr logs
我使用“chentex/random-logger”图像,它将stdout/stderr写入容器。我想制作部署 yaml,其中 运行 chentex 的图像,并将其日志放在共享卷内的文件中。不修改图片可以吗?
这是镜像的简单部署:
apiVersion: v1
kind: Deployment
metadata:
name: random-logger
spec:
replicas: 1
template:
metadata:
labels:
app: random-logger
spec:
containers:
- name: random-logger
image: chentex/random-logger:latest
最佳做法是将容器中的应用程序 运行 的日志消息发送到 stdout
。 chentex/random-logger
只是 follows this approach 没有任何配置选项,但我们可以提出这样的 hack:
apiVersion: apps/v1
kind: Deployment
metadata:
name: random-logger
spec:
selector:
matchLabels:
app: random-logger
template:
metadata:
labels:
app: random-logger
spec:
containers:
- name: random-logger
image: chentex/random-logger:latest
command: ["sh", "-c", "./entrypoint.sh &> /logfile"]
从 运行 pod
请求日志时,没有什么可看的:
$ kubectl logs random-logger-76c6fd98d5-8d5fm
应用程序日志写入容器内的logfile
:
$ kubectl exec random-logger-76c6fd98d5-8d5fm cat /logfile
2019-02-28T00:23:23+0000 DEBUG first loop completed.
2019-02-28T00:23:25+0000 ERROR something happened in this execution.
2019-02-28T00:23:29+0000 INFO takes the value and converts it to string.
2019-02-28T00:23:31+0000 WARN variable not in use.
2019-02-28T00:23:37+0000 INFO takes the value and converts it to string.
虽然这是可能的,但通常不建议这样做。有关更多背景信息,请参阅关于 Logging Architecture 的 Kubernetes 文档。
我使用“chentex/random-logger”图像,它将stdout/stderr写入容器。我想制作部署 yaml,其中 运行 chentex 的图像,并将其日志放在共享卷内的文件中。不修改图片可以吗?
这是镜像的简单部署:
apiVersion: v1
kind: Deployment
metadata:
name: random-logger
spec:
replicas: 1
template:
metadata:
labels:
app: random-logger
spec:
containers:
- name: random-logger
image: chentex/random-logger:latest
最佳做法是将容器中的应用程序 运行 的日志消息发送到 stdout
。 chentex/random-logger
只是 follows this approach 没有任何配置选项,但我们可以提出这样的 hack:
apiVersion: apps/v1
kind: Deployment
metadata:
name: random-logger
spec:
selector:
matchLabels:
app: random-logger
template:
metadata:
labels:
app: random-logger
spec:
containers:
- name: random-logger
image: chentex/random-logger:latest
command: ["sh", "-c", "./entrypoint.sh &> /logfile"]
从 运行 pod
请求日志时,没有什么可看的:
$ kubectl logs random-logger-76c6fd98d5-8d5fm
应用程序日志写入容器内的logfile
:
$ kubectl exec random-logger-76c6fd98d5-8d5fm cat /logfile
2019-02-28T00:23:23+0000 DEBUG first loop completed.
2019-02-28T00:23:25+0000 ERROR something happened in this execution.
2019-02-28T00:23:29+0000 INFO takes the value and converts it to string.
2019-02-28T00:23:31+0000 WARN variable not in use.
2019-02-28T00:23:37+0000 INFO takes the value and converts it to string.
虽然这是可能的,但通常不建议这样做。有关更多背景信息,请参阅关于 Logging Architecture 的 Kubernetes 文档。