创建屏蔽云商的StorageClass
每个云商有自己的StorageClass,为了便于yaml描述跨云有效,我们创建自己的class。

AWS的StorageClass调整

取消gp2的默认

默认的是叫做gp2
1
$ k get sc
2
NAME PROVISIONER AGE
3
gp2 (default) kubernetes.io/aws-ebs 13h
Copied!
通过取消它的annotation取消默认
1
$ k edit storageclass gp2
2
# 编辑处设置storageclass.kubernetes.io/is-default-class为false
Copied!
保存退出即可

增加disk并设置默认

1
# cat aws-disk.yaml
2
apiVersion: storage.k8s.io/v1
3
kind: StorageClass
4
metadata:
5
name: disk
6
annotations:
7
storageclass.kubernetes.io/is-default-class: "true"
8
parameters:
9
fsType: ext4
10
type: gp2
11
provisioner: kubernetes.io/aws-ebs
12
reclaimPolicy: Delete
13
volumeBindingMode: WaitForFirstConsumer
14
allowVolumeExpansion: true
Copied!
创建这个class

最终效果

1
$ k get sc
2
NAME PROVISIONER AGE
3
disk (default) kubernetes.io/aws-ebs 5m12s
4
gp2 kubernetes.io/aws-ebs 13h
Copied!

阿里云的StorageClass调整

确认集群节点的可用区

阿里云要求在class中指定节点都含有哪些可用区,如果不指明可用区,对应节点可能会获取不到磁盘。这点不如aws智能一些。
阿里云要求在storageclass中指定可用区

增加disk并设置默认

1
# cat ali-disk.yaml
2
apiVersion: storage.k8s.io/v1
3
kind: StorageClass
4
metadata:
5
name: disk
6
annotations:
7
storageclass.kubernetes.io/is-default-class: "true"
8
parameters:
9
type: cloud_efficiency
10
# zoneid: us-east-1a,us-east-1b # 填写正确可用区
11
provisioner: alicloud/disk
12
volumeBindingMode: WaitForFirstConsumer
13
allowVolumeExpansion: true
Copied!

最终效果

1
$ k get sc 130 ↵
2
NAME PROVISIONER AGE
3
alicloud-disk-essd alicloud/disk 35d
4
alicloud-disk-ssd alicloud/disk 35d
5
available-delete-wait alicloud/disk 30d
6
disk (default) alicloud/disk 12d
7
efficiency-delete-wait alicloud/disk 30d
Copied!

磁盘storageclass的选择

大家没有特殊需要请使用“disk“,因为是默认,不指定class也会采用“disk“;如果有类似ssd的需求可以依照上述自己创建,或是寻求管理员的协助。