有没有办法在Pod规范中获取UID

时间:2018-09-04 06:58:06

标签: kubernetes

我想做的是为Pod提供统一的日志存储,当前一直保存到hostPath,但是我还希望该路径包括UID,以便在Pod销毁后可以轻松获取其路径。

例如:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-logging-support
spec:
  containers:
  - image: python:2.7
    name: web-server
    command:
    - "sh"
    - "-c"
    - "python -m SimpleHTTPServer > /logs/http.log 2>&1"
    volumeMounts:
    - mountPath: /logs
      name: log-dir
  volumes:
  - name: log-dir
    hostPath:
      path: /var/log/apps/{metadata.uid}
      type: DirectoryOrCreate

metadata.uid是我要填写的,但我不知道如何填写。

2 个答案:

答案 0 :(得分:2)

对于日志记录,最好使用其他策略。

我建议您看看这个link

如果将其流式传输到stdout并由代理抓取,则可以最好地管理您的日志,如下图所示:

enter image description here

不要保留您的登录文件系统,而是使用代理收集它们并将它们放在一起以进行进一步的analisys。

Fluentd非常受欢迎,值得一提。

答案 1 :(得分:1)

从kubernetes中搜索文档后,我终于看到solution来解决我的特定问题。该功能正是我想要的。

所以我可以使用以下方式创建广告连播

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-logging-support
spec:
  containers:
  - image: python:2.7
    name: web-server
    command:
    - "sh"
    - "-c"
    - "python -m SimpleHTTPServer > /logs/http.log 2>&1"
    env:
    - name: POD_UID
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: metadata.uid
    volumeMounts:
    - mountPath: /logs
      name: log-dir
      subPath: $(POD_UID)
  volumes:
  - name: log-dir
    hostPath:
      path: /var/log/apps/
      type: DirectoryOrCreate