Kubernetes 我可以在同一部署的吊舱中装载不同的主机吗?

Kubernetes 我可以在同一部署的吊舱中装载不同的主机吗?,kubernetes,containers,Kubernetes,Containers,对于日志,我将一个卷从主机装载到pod上。这写在部署yaml中。 但是,如果我的两个pod在同一台主机上运行,就会发生冲突,因为两个pod都会生成同名的日志文件。 我可以在部署文件中使用一些动态变量,以便为不同的POD使用不同的名称创建主机上的装载吗?您可以使用它来实现绝对路径的唯一性,这是此功能的用例之一。到目前为止,它在k1.14中是alpha 在本例中,Pod使用subPathExpr在hostPath卷/var/log/pods中创建一个目录pod1,使用向下API中的Pod名称。主机目

对于日志,我将一个卷从主机装载到pod上。这写在部署yaml中。 但是,如果我的两个pod在同一台主机上运行,就会发生冲突,因为两个pod都会生成同名的日志文件。 我可以在部署文件中使用一些动态变量,以便为不同的POD使用不同的名称创建主机上的装载吗?

您可以使用它来实现绝对路径的唯一性,这是此功能的用例之一。到目前为止,它在k1.14中是alpha

在本例中,Pod使用subPathExpr在hostPath卷/var/log/pods中创建一个目录pod1,使用向下API中的Pod名称。主机目录/var/log/pods/pod1安装在容器中的/logs处


查看pod关联/反关联以避免在同一节点上调度复制副本。这样,特定部署的每个副本都部署在单独的节点上。你不必为同一个文件夹被多个pod使用而烦恼。

我不得不为此花费数小时,你的解决方案非常有效! 尝试过,尽管有多个文档,但都不起作用。 子图片库:“$POD_名称” subPathExpr:$POD_NAME 子图片库:${POD_NAME}


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

除此之外,我已经考虑过了。
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