我可以在同一部署的Pod中安装不同的主机吗?

时间:2019-06-04 15:10:15

标签: kubernetes containers

对于日志,我将主机上的卷安装到Pod上。这是在部署yaml中编写的。 但是,如果我的两个Pod在同一主机上运行,​​则将发生冲突,因为两个Pod都将产生具有相同名称的日志文件。 我可以在部署文件中使用一些动态变量,以便为不同的Pod用不同的名称创建主机上的装载吗?

3 个答案:

答案 0 :(得分:1)

您可以使用subPathExpr在绝对路径中实现唯一性,这是此功能的一种使用情况。截至目前,它在k1.14中为alpha。

  

在此示例中,Pod使用DownPath API中的Pod名称,使用subPathExpr在hostPath卷/ var / log / pods中创建目录pod1。主机目录/ var / log / pods / pod1安装在容器的/ logs上。

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: container1
    env:
    - name: POD_NAME
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: metadata.name
    image: busybox
    command: [ "sh", "-c", "while [ true ]; do echo 'Hello'; sleep 10; done | tee -a /logs/hello.txt" ]
    volumeMounts:
    - name: workdir1
      mountPath: /logs
      subPathExpr: $(POD_NAME)
  restartPolicy: Never
  volumes:
  - name: workdir1
    hostPath:
      path: /var/log/pods

答案 1 :(得分:0)

查看pod亲和力/反亲和力,以免在同一节点上安排副本。这样,特定部署的每个副本都将部署在单独的节点上。您将不必为多个Pod使用相同的文件夹而烦恼。

答案 2 :(得分:0)

为此,我不得不花费数小时,您的解决方案就像一个魅力! 曾经尝试过,尽管在多个文档中都没有给出任何效果。 subPathExpr:“ $ POD_NAME” subPathExpr:$ POD_NAME subPathExpr:$ {POD_NAME}

最后,这个成功了,subPathExpr:$(POD_NAME)