Kubernetes volumeMounts

Volumes 声明了存储后,可以在所有容器中使用该存储。

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: gcr.io/google_containers/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

在使用存储时 spec.containers[*].volumeMounts.name 需要和 spec.volumes[*].name 保持一致。

subPath

有时,可以在一个 pod 中,将同一个卷共享,使其有多个用处。volumeMounts.subPath 特性可以用来指定卷中的一个子目录,而不是直接使用卷的根目录。

以下是使用单个共享卷的 LAMP 堆栈(Linux Apache Mysql PHP)的 pod 的示例。HTML 内容映射到其 html 文件夹,数据库将存储在 mysql 文件夹中:

apiVersion: v1
kind: Pod
metadata:
  name: my-lamp-site
spec:
    containers:
    - name: mysql
      image: mysql
      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
      persistentVolumeClaim:
        claimName: my-lamp-site-data