我有一个在pod内部运行的应用程序,该应用程序是由k8s中的部署规范创建的。由于我在所有节点上都有NFS客户端,因此可以将卷从主机装载到Pod。这是yml文件的mount-vol部分
spec:
containers:
volumeMounts:
- mountPath: /app/config
name: config-volume
- mountPath: /var/log
name: logs
volumes:
- name: config-volume
hostPath:
path: /nfs/config
- name: logs
hostPath:
path: /nfs/logs/containerlogs
配置卷:它将配置文件从主机挂载到Pod容器。
日志:它不起作用。我想将日志文件夹从Pod容器安装到主机文件夹。
答案 0 :(得分:1)
我不认为您要挂载容器来托管。它总是托管到Pod。确保主机中存在路径/ nfs / logs / containerLogs,以便您的Pod可以对其进行写入。
答案 1 :(得分:-1)
对于我来说,您的Yaml几乎可以正常工作。 我个人认为您的Yaml需要完成,例如:
spec:
containers:
volumeMounts:
- mountPath: /app/config
name: config-volume
- mountPath: /var/log
name: logs
volumes:
- name: config-volume
hostPath:
path: /nfs/config
type: Directory
- name: logs
hostPath:
path: /nfs/logs/containerlogs
type: Directory
您的规范也错过了配置image
和command
如上所述,有2条路径可以存储2种日志。
您还可以做的是在容器规范中分配2条路径,就像在没有容器的情况下启动应用程序一样。
实际上,您的规范中的类似配置如下:
command:
- /application
- --log-dir=/var/log
- --config-log-dir=/app/config
- --logtostderr=false
- --v=3
您可能会注意到参数- --logtostderr
和- --v=3
。如果您的应用程序具有类似的参数,则应正确设置它们。
完成正确的配置后,容器会将日志记录到正确的位置。