华为云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