更新时间:2022-04-20 GMT+08:00
分享

挂载存储

在Kubernetes中,通过PersistentVolume(PV)方式挂载存储,典型的步骤如下:

  1. 创建PV,为集群提供存储服务。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
        name: mypv1
        annotations:
            # 访问控制: 使用 group ID(GID) 配置的存储仅允许 Pod 使用相同的 GID 进行写入。
            pv.beta.kubernetes.io/gid: "1234"
    spec:
        capacity:
            storage: 1Gi  # 指定PV容量
        accessModes:
            # 访问模式:
            # ReadWriteOnce 以读写模式 mount 到单个节点;
            # ReadOnlyMany 以只读模式 mount 到多个节点;
            # ReadWriteMany 以读写模式 mount 到多个节点。
            - ReadWriteOnce
        # 回收策略:
        # Retain管理员手工回收。PV的STATUS保持Released无法被其他PVC申请,需要删除并重新创建PV;
        # Recycle清除PV中的数据,相当于rm -rf /thevolume/*。自动启动一个Pod删除PV中的数据,删除后PV的STATUS恢复为Available;
        # Delete删除存储资源。
        persistentVolumeReclaimPolicy: Recycle
        storageClassName: nfs  # PV分类
        nfs:
            path: /nfsdata/pv1
            server: 192.168.56.105
  2. 声明PersistentVolumeClaim(PVC),指定应用实例需要的存储资源。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
        name: mypvc1
    spec:
        accessModes:
            - ReadWriteOnce  # 指定访问模式
        resources:
            requests:
                storage: 1Gi  # 指定容量
        storageClassName: nfs  # 指定PV分类
  3. 在Pod中挂载PVC。
    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: mypvc1
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage

相关文档