MST

星途 面试题库

面试题:容器化环境中,如何实现容器编排时持久化数据存储的基本配置

在使用常见容器编排工具(如Kubernetes)时,阐述如何为容器配置持久化存储卷,以确保数据在容器重启或迁移后不丢失,需说明主要的配置步骤及涉及到的关键资源对象。
12.1万 热度难度
后端开发容器化

知识考点

AI 面试

面试题答案

一键面试

1. 关键资源对象

  • PersistentVolume(PV):它是集群中由管理员提供的一块存储,就像是一块预先准备好的硬盘。PV 有自己的生命周期,独立于任何单个 Pod。定义 PV 时需指定存储的类型(如 NFS、本地磁盘等)、容量、访问模式(如 ReadWriteOnce、ReadOnlyMany 等)。
  • PersistentVolumeClaim(PVC):它是用户对存储的请求,类似于向系统申请一块硬盘。PVC 会根据需求与合适的 PV 进行绑定。用户在 PVC 中指定所需的存储容量和访问模式等信息。
  • Volume:在 Pod 中定义,用于将 PV 挂载到容器内的指定目录,使得容器可以使用 PV 提供的存储。

2. 主要配置步骤

  1. 创建 PersistentVolume: 通过编写 PV 的 YAML 文件来定义 PV。例如,以下是一个基于 NFS 的 PV 示例:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-nfs-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: nfs-server.example.com
    path: /exports/path

在上述示例中,定义了一个容量为 1Gi,访问模式为 ReadWriteOnce 的 NFS 类型的 PV,NFS 服务器地址为 nfs-server.example.com,挂载路径为 /exports/path。然后使用 kubectl apply -f pv.yaml 命令创建 PV。 2. 创建 PersistentVolumeClaim: 编写 PVC 的 YAML 文件,声明对存储的需求。示例如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-nfs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi

此 PVC 请求 500Mi 的存储空间,访问模式为 ReadWriteOnce。使用 kubectl apply -f pvc.yaml 命令创建 PVC,Kubernetes 会自动将该 PVC 与满足条件的 PV 进行绑定。 3. 在 Pod 中使用存储卷: 在 Pod 的 YAML 文件中定义 Volume 并挂载到容器内的目录。示例如下:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: my-volume
      mountPath: /data
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-nfs-pvc

上述 Pod 定义了一个 Volume,它引用了名为 my-nfs-pvc 的 PVC,并将其挂载到容器内的 /data 目录。使用 kubectl apply -f pod.yaml 命令创建 Pod,这样容器就可以在 /data 目录使用持久化存储,即使容器重启或迁移,数据也不会丢失。