华为云cce pvc 指定云硬盘云存储

1 华为云cce pvc

https://support.huaweicloud.com/usermanual-cce/cce_01_0044.html
1.15

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-evs-auto-example
  namespace: default
  annotations:
    everest.io/disk-volume-type: SATA
  labels:
    failure-domain.beta.kubernetes.io/region: cn-north-1
    failure-domain.beta.kubernetes.io/zone: cn-north-1a
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: csi-disk

1.15之前

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-evs-auto-example
  namespace: default
  labels:
    failure-domain.beta.kubernetes.io/region: cn-north-1
    failure-domain.beta.kubernetes.io/zone: cn-north-1a
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: sata

注意区域选对,选错了可是挂不上盘的。也就是存储是分区域的。

那么如果不指定zone和region那2个label,能申请成功吗? (下面有解答)

2. 详细看 storage class

类型有好几种,

NAME              PROVISIONER                     AGE
efs-performance   flexvolume-huawei.com/fuxiefs   328d
efs-standard      flexvolume-huawei.com/fuxiefs   328d
nfs-rw            flexvolume-huawei.com/fuxinfs   328d
obs-standard      flexvolume-huawei.com/fuxiobs   328d
obs-standard-ia   flexvolume-huawei.com/fuxiobs   328d
sas               flexvolume-huawei.com/fuxivol   328d
sata              flexvolume-huawei.com/fuxivol   328d
ssd               flexvolume-huawei.com/fuxivol   328d

后面三种云硬盘,对于sata,高,ssd云硬盘。

详细看sas类型的storageClass

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.beta.kubernetes.io/is-default-class: "false"
  creationTimestamp: "2019-07-04T06:31:05Z"
  labels:
    kubernetes.io/cluster-service: "true"
  name: sas
  resourceVersion: "1463"
  selfLink: /apis/storage.k8s.io/v1/storageclasses/sas
  uid: 4d561246-9e25-11e9-bda5-fa163e39be81
parameters:
  kubernetes.io/description: ""
  kubernetes.io/hw:passthrough: "true"
  kubernetes.io/storagetype: BS
  kubernetes.io/volumetype: SAS
  kubernetes.io/zone: cn-east-2c
provisioner: flexvolume-huawei.com/fuxivol
reclaimPolicy: Delete
volumeBindingMode: Immediate

可以看到有个kubernetes.io/zone,上面那个问题,如果不指定label,那么会申请zone里面的硬盘。
里面的值还都不能修改,可以理解为默认值吧,可以在pod的pvc里面覆盖他的配置。

如果你修改,会报错如下:

# storageclasses.storage.k8s.io "sas" was not valid:
# * parameters: Forbidden: updates to parameters are forbidden.

3. Statefulset 应用挂载数据盘

跟直接使用pvc有所不同,因为volumeClaimTemplates里面是不能指定labels的,需要放在template的metadata 下的labels中,官网上面有个例子很好的说明了这一点:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: deploy-evs-sata-in
  namespace: default
  generation: 1
  labels:
    appgroup: ''
  annotations:
    container.io/container-0: https://console.huaweicloud.com/swr/dockerimage/nginx.png
    description: ''
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deploy-evs-sata-in
      failure-domain.beta.kubernetes.io/region: cn-north-1
      failure-domain.beta.kubernetes.io/zone: cn-north-1a
  template:
    metadata:
      labels:
        app: deploy-evs-sata-in
        failure-domain.beta.kubernetes.io/region: cn-north-1
        failure-domain.beta.kubernetes.io/zone: cn-north-1a
      annotations:
        metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]'
        pod.alpha.kubernetes.io/initialized: 'true'
    spec:
      containers:
        - name: container-0
          image: 'nginx:1.12-alpine-perl'
          env:
            - name: PAAS_APP_NAME
              value: deploy-evs-sata-in
            - name: PAAS_NAMESPACE
              value: default
            - name: PAAS_PROJECT_ID
              value: a2cd8e998dca42e98a41f596c636dbda
          resources: {}
          volumeMounts:
            - name: bs-sata-mountoptionpvc
              mountPath: /tmp
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      imagePullSecrets:
        - name: default-secret
      affinity: {}
      schedulerName: default-scheduler
  volumeClaimTemplates:
    - metadata:
        name: bs-sata-mountoptionpvc
        namespace: default
        annotations:
          everest.io/disk-volume-type: SATA
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        storageClassName: csi-disk   
  serviceName: wwww
  podManagementPolicy: OrderedReady
  updateStrategy:
    type: RollingUpdate
  revisionHistoryLimit: 10


posted @ 2020-05-28 10:31  过去的我  阅读(908)  评论(0编辑  收藏  举报