Kubernetes `local` PV 和目录创建

Kubernetes `local` PV and directory creation

在配置 local PV 时,我注意到没有选项可以在底层节点上显式创建 PV 目录(如果它尚不存在),这与 hostPath PV 不同,后者提供 DirectoryOrCreate 选项(如文档 here 中所示),local PV 要求您首先手动创建目录并赋予其正确的所有权和权限。

我正在尝试使用带有目录的 local PV 作为安装的本地存储设备,代码如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv-volume
  namespace: jenkins
spec:
  capacity:
    storage: 4Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: "/var/jenkins_home"
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - worker-1

但是,为了正确配置 PV,我首先需要通过 ssh 进入 worker-1 节点和 运行 以下命令:

sudo mkdir -p /var/jenkins_home
sudo chown -R 1000:1000 /var/jenkins_home
sudo chmod -R 755 /var/jenkins_home

是否可以创建目录并赋予其正确的所有权和权限应用 PV 配置时?

不,你不能跳过这一步。

但是您可以编写将在后台运行的脚本并执行将为本地卷创建目录并为其分配权限的命令。请记住为您的脚本授予执行权限。 例如,使用适当的命令创建脚本,然后创建 ConfigMap,这将 运行 在 ConfigMap 中创建的脚本也将配置 PV。

参见示例:configmap-volume, configmap-scripts