gpt4 book ai didi

具有 logrotate sidecar 挂载点问题的 Kubernetes

转载 作者:行者123 更新时间:2023-12-03 16:32:16 65 4
gpt4 key购买 nike

我正在尝试使用 nginx 和 logrotate sidecar 部署一个测试 pod。Logrotate sidecar 取自:logrotate

我的 Pod yaml 配置:

apiVersion: v1
kind: Pod
metadata:
name: nginx-apache-log
labels:
app: nginx-apache-log

spec:
containers:

- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: logs
mountPath: /var/log

- name: logrotate
image: path/to/logrtr:sidecar
volumeMounts:
- name: logs
mountPath: /var/log

volumes:
- name: logs
emptyDir: {}

我想要实现的是监视/var/log//.log 的 Logrotate 容器,但是使用上面的配置,nginx 容器失败,因为没有/var/log/nginx :

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory)
2018/10/15 10:22:12 [emerg] 1#1: open() "/var/log/nginx/error.log" failed (2: No such file or directory)

但是,如果我将 nginx 的 mountPath 从

mountPath: /var/log 

到:

mountPath: /var/log/nginx

然后它开始,记录到/var/log/nginx/access.log 和 error.log,但是 logrotate sidecar 看到的所有日志都在/var/log 而不是/var/log/nginx/。只有一个 nginx 容器不是问题,但我计划让更多容器应用程序记录到它们自己的/var/log/appname 文件夹。

有什么方法可以解决/解决这个问题吗?我不想为每个应用运行 Sidecar。

如果我将 pod 配置更改为:

  - name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: logs
mountPath: /var/log
initContainers:
- name: install
image: busybox
command:
- mkdir -p /var/log/nginx
volumeMounts:
- name: logs
mountPath: "/var/log"

然后它失败了:

Warning  Failed     52s (x4 over 105s)  kubelet, k8s-slave1  Error: failed to start container "install": Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"mkdir -p /var/log/nginx\": stat mkdir -p /var/log/nginx: no such file or directory": unknown

最佳答案

将挂载路径保留为 /var/log。在您的 nginx 容器中,在启动脚本中执行 mkdir/var/log/nginx。您可能需要稍微调整目录权限才能使其正常工作。

关于具有 logrotate sidecar 挂载点问题的 Kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52814951/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com