我在 Kubernetes 集群的同一个 Pod 中部署了 2 个容器。一个是 NGINX,另一个是 sidecar(bash 映像)。以下是定义文件:-
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
run: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
volumes:
- name: logs
emptyDir: {}
containers:
- image: nginx
name: nginx
resources: {}
volumeMounts:
- name: logs
mountPath: /var/log/nginx
- image: bash
name: sidecar
command: ["/bin/sh","-c","tail -f /var/log/sidecar/access.log"]
volumeMounts:
- name: logs
mountPath: /var/log/sidecar
我了解 Docker 映像 (NGINX) 生成标准日志到该位置/var/log/nginx/access.log
(ref-> https://docs.docker.com/config/containers/logging/ )
我正在使用 emptyDir 卷,这意味着所有容器将在主机上的 pod 内共享相同的存储位置。
当我在服务或 Nginx pod 上进行 curl 时,我得到了 NGINX 服务器的成功响应,并且可以使用kubectl logs <pod name> sidecar -f
控制台上的命令查看其日志。
我完全不明白的是命令中的文件路径(在 bash/sidecar 容器内)是/var/log/sidecar/access.log而不是 /var/log/nginx/access.log 那我怎么来能够获取这些日志,因为目录 /var/log/sidecar 中不存在文件 access.log。
请指教,谢谢