在某些应用中,同一个Volume可能会被多个Pod或者一个Pod中的多个容器共享。此时可能存在个应用需要不同子目录的需求,可以通过Pod中volumeMounts定义的subPath字段进行设置。通过对subPath的设置,容器将以subPath设置的目录而不是Volume中提供的默认根目录作为根目录。
subPath中的路径名称不能以“/”开头,需要使用相对路径的形式。
如果希望通过环境变量的形式来设置subPath路径,可以通过subPathExpr字段来实现。
subPath和subPathExpr字段是互斥的,不能同时使用。
示例
---
apiVersion: v1
kind: Pod
metadata:
name: mysql
spec:
containers:
- name: mysql
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
volue: "rootpassword"
volumeMounts:
- mountPath: /var/lib/mysql
name: site-data
subPath: mysql
- name: php
image: php
volumeMounts:
- mountPath: /var/www/html
name: site-data
subPath: html
volumes:
- name: site-data
persitentVolumeClaim:
claimName: site-data-pvc
{/tabs-pane}
{tabs-pane label="subPathExpr"}
---
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: containers1
image: busybox
command: ["sh","-c","sleep 6000"]
env:
- name: POD_NAME
volueFrom:
fieldRef:
apiVersion: v1
FilePath: metadata.name
volumeMounts:
- name: workdir1
mountPath: /logs
subPathExpr: $(POD_NAME)
restartPolicy: Never
volumes:
- name: workdir1
hostpath:
path: /var/log/pods
{/tabs-pane}
评论 (0)