一、数据卷类型
| 数据卷类型 | 描述 |
| 使用临时路径 | / |
| 使用主机路径 | 将容器所在宿主机的文件目录挂载到容器的指定路径中(即对应 Kubernetes 的 HostPath)。你可以根据业务需求,不设置源路径(即对应 Kubernetes 的 EmptyDir)。如果不设置源路径,系统将分配主机的临时目录挂载到容器的挂载点。指定源路径的本地硬盘数据卷适用于将数据持久化存储到容器所在宿主机,EmptyDir 适用于容器的临时存储。 |
| 使用 NFS 盘 | 只需填写 NFS 路径,你可以使用腾讯云的 文件存储 CFS,也可使用自建的文件存储 NFS。使用 NFS 数据卷适用于多读多写的持久化存储,也适用于大数据分析、媒体处理、内容管理等场景。 |
| 使用已有 PersistentVolumeClaim | 使用已有 PersistentVolumeClaim 声明工作负载的存储,自动分配或新建 PersistentVolume 挂载到对应的 Pod 下。主要适用于 StatefulSet 创建的有状态应用。 |
| 使用 ConfigMap | ConfigMap 以文件系统的形式挂载到 Pod 上,支持自定义 ConfigMap 条目挂载到特定的路径。更多详情请参见 ConfigMap 管理。 |
| 使用 Secret | Secret 以文件系统的形式挂载到 Pod 上,支持自定义 Secret 条目挂载到特定的路径。更多详情请参见 Secret 管理。 |
二、数据卷的注意事项
·创建数据卷后,需在实例内容器模块设置容器的挂载点。
·同一个服务下,数据卷的名称和容器设置的挂载点不能重复。
·本地硬盘数据卷源路径为空时,系统将分配 /var/lib/kubelet/pods/pod_name/volumes/kubernetes.io~empty-dir 临时目录,且使用临时的数据卷生命周期与实例的生命周期保持一致。
·数据卷挂载未设置权限,默认设置为读写权限。
三、创建工作负载挂载数据卷
3. 在工作负载下,任意选择 Workload 类型,进入对应的信息页面。
例如,选择工作负载 > DaemonSet,在 DaemonSet 信息页面单击新建。如下:
4. 在新建 DaemonSet 页面,根据页面信息,设置工作负载名、命名空间等信息。
5. 在“数据卷(选填)”中,单击添加数据卷。根据实际需求,选择数据卷的存储方式,这篇以使用已有 PVC 为例。
6. 在“实例内容器”的挂载点配置挂载点。如下:
在 步骤5 中选择添加数据卷后,才可进行挂载点配置。
7. 其余选项请按需设置,并单击创建 DaemonSet 即可完成创建。
四、各类数据卷挂载配置
该表展示了不同数据卷的使用细节,当你在创建工作负载时,并选择“添加数据卷”后,可参照以下内容进行数据卷的添加以及挂载点的设置:
| 数据卷 | | | 挂载点 | | |
| 类型 | 名称 | 其他 | 目标路径 | 挂载子路径 | 读写权限 |
| 临时路径 | 自定义 | / | 请根据实际需求进行填写,示例如 /cache。 | 仅挂载选中数据卷中的子路径或单一文件,示例如 /data 或 /test.txt。 | 请根据实际需求进行选择。只读:只允许读取该容器路径数据卷,数据修改只允许在宿主机上操作。读写:允许读取以及将修改保存到该容器路径数据卷。 |
| | | | | 主机路径 | 设置主机路径。主机路径:该路径不能为空,例如当该容器需要访问 Docker 时主机路径可设置为/var/lib/docker。检查类型:TKE 为你提供 NoChecks、DirectoryOrCreate 等多种检查类型,请仔细查阅控制台上每种类型介绍,并根据实际需求进行选择。 |
| | | | | NFS 盘 | NFS 路径:填写文件系统 CFS 或自建 NFS 地址。如需创建文件系统,请参见 创建文件系统及挂载点。NFS 路径示例如10.0.0.161:/。该路径可登录 文件系统控制台,单击目标文件系统 ID ,在挂载点信息页签的 “Linux 下挂载目录”中获取。 |
| | | | | 已有 PVC | 请选择 PVC:根据实际需求进行选择。 |
| | | | | ConfigMap | 选择 ConfigMap:根据实际需求进行。选项:提供“全部”和“指定部分Key”两种选择。Items:当选择“指定部分Key” 选项时,可以通过添加 item 向特定路径挂载,如挂载点是 /data/config,子路径是 dev,最终会存储在 /data/config/dev 下。 |
| | | | | | Secret |
| | | | | ||
| | | | |
五、kubectl 操作 Volume 指引
仅提供示例文件,你可直接通过 kubectl 进行创建操作。
六、Pod 挂载 Volume YAML 示例
apiVersion: v1kind: Podmetadata: name: test-pdspec: containers: – image: k8s.gcr.io/test-webserver name: test-container volumeMounts: – mountPath: /cache name: cache-volume volumes: – name: cache-volume emptyDir: {}
·spec.volumes:设置数据卷名称、类型、数据卷的参数。
·spec.volumes.emptyDir:设置临时路径。
·spec.volumes.hostPath:设置主机路径。
·spec.volumes.nfs:设置 NFS 盘。
·spec.volumes.persistentVolumeClaim:设置已有 PersistentVolumeClaim
·spec.volumeClaimTemplates:若使用该声明,将根据内容自动创建 PersistentVolumeClaim 和 PersistentVolume。
·spec.containers.volumeMounts:填写数据卷的挂载点。