使用云硬盘存储卷

最近更新时间:2019-09-11 20:39:58

您可以在金山云容器引擎Kubernetes集群中使用云硬盘存储卷,支持以静态存储卷的形式挂载到容器的某一路径,容器的迁移,云硬盘会随着迁移。

目前,金山云提供两种kubernetes挂载方式

静态存储卷

使用说明

1、云硬盘为非共享存储,只能被一个 pod 挂载,实例数量需要设置为1

2、使用前需要先在控制台申请一块云硬盘,并获得磁盘 ID(volumeId)

3、volumeName、PV Name要与之volumeId相同。

4、集群中只有与云盘在同一个可用区(Zone)的节点才可以挂载云盘。

5、文件系统类型(fsType)支持ext3、ext4、xfs

6、目前金山云售卖云主机中,通用性N1、通用型N2、IO优化型I2和IO优化型I3云主机支持挂载云硬盘(详见云硬盘使用限制)。如您选择云硬盘作为存储卷,建议在创建服务时,将pod调度到以上机型,否则可能存在云硬盘无法挂载的情况出现。具体调度方式参考Assigning Pods to Nodes

直接通过volume使用

下面的示例nginx-disk-deploy.yaml将yaml文件中声明的EBS云硬盘挂在到pod内的nginx-flexvolume-disk容器的/data路径下

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-disk-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-flexvolume-disk
        image: nginx
        volumeMounts:
          - name: "b5c80953-1499-40ff-918a-4d6d4dfbfddd"
            mountPath: "/data"
      volumes:
        - name: "b5c80953-1499-40ff-918a-4d6d4dfbfddd"
          flexVolume:
            driver: "ksc/ebs"
            fsType: "ext4"
            options:
              volumeId: "b5c80953-1499-40ff-918a-4d6d4dfbfddd"

通过PV/PVC使用

定义PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: "b5c80953-1499-40ff-918a-4d6d4dfbfddd"
spec:
  capacity:
    storage: 20Gi
  storageClassName: disk
  accessModes:
    - ReadWriteOnce
  flexVolume:
    driver: "ksc/ebs"
    fsType: "ext4"
    options:
      volumeId: "b5c80953-1499-40ff-918a-4d6d4dfbfddd"

定义PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-disk
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: disk
  resources:
    requests:
      storage: 20Gi

创建deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-disk-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-flexvolume-disk
        image: nginx
        volumeMounts:
        - name: pvc-disk
          mountPath: "/data"
      volumes:
      - name: pvc-disk
        persistentVolumeClaim:
          claimName: pvc-disk

动态存储卷

动态存储卷需要手动创建 StorageClass,并在PVC中指定storageClassName

创建StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd30
provisioner: ksc/ebs
parameters:
  type: SSD3.0
  zone: cn-beijing-6b # 选填 #
  chargetype: Daily

参数说明:

  • provisioner:配置为 ksc/ebs,指定使用金山云Provsioner 插件创建
  • reclaimPolicy: 云盘的回收策略,默认为Delete,支持Retain
  • type:EBS类型,必填,可选参数:SSD2.0/SSD3.0/SATA2.0/SATA3.0(字母全部大写)
  • zone(选填):创建云盘的可用区,注意不同可用区可创建的EBS类型不一样,具体对应关系参考 云硬盘使用限制。当不指定zone参数时,则会在集群所拥有的全部节点所在可用区中随机选择可用区创建云盘
  • chargetype:云盘的计费方式,默认值为Daliy,详情参考创建云硬盘Open Api中的chargetype字段。
  • purchasetime:若选择"包年包月"的计费方式,需要设置购买时长,单位为月

创建Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: pvc-disk
          mountPath: "/data"
      volumes:
      - name: pvc-disk
        persistentVolumeClaim:
          claimName: nginx-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ssd30
  resources:
    requests:
      storage: 20Gi

金山云,开启您的云计算之旅

注册有礼