操作场景
操作步骤
步骤 1 登录EVS控制台,创建一个EVS云硬盘,记录云硬盘的VolumeID、容量和磁盘类型。
步骤 2 请参见3.4.2 通过kubectl操作CCE集群配置kubectl命令。
步骤 3 新建两个yaml文件,用于创建PersistentVolume(PV)、PersistentVolumeClaim(PVC),假设文件名分别为 pv-evs-example.yaml 、 pvc-evs-example.yaml 。
touch pv-evs-example.yaml pvc-evs-example.yaml
K8S集群版本(K8S version) | 说明 | yaml示例 |
---|---|---|
1.15+ | 1.15及以上版本的集群 | 请参见[1.15+ yaml文件配置示例] |
1.11.7 ≤ K8S version ≤ 1.13 | 1.11.7以上及1.13版本集群 | 请参见[1.11.7~1.13 yaml文件配置示例] |
1.11 ≤ K8S version < 1.11.7 | 1.11.7之前的1.11版本集群 | 请参见[1.11~1.11.7 yaml文件配置示例] |
K8S version = 1.9 | 1.9版本集群 | 请参见[1.9 yaml文件配置示例] |
1.15+(1.15及以上版本的集群)
- vi pv-evs-example.yaml
PV yaml文件配置示例如下:
apiVersion: v1** **
kind: PersistentVolume** **
metadata:** **
labels:** **
failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
annotations:** **
pv.kubernetes.io/provisioned-by: everest-csi-provisioner** **
name: pv-evs-example** **
spec:** **
accessModes:** **
- ReadWriteOnce** **
capacity:** **
storage: 10Gi** **
csi:** **
driver: disk.csi.everest.io** **
fsType: ext4** **
volumeAttributes:** **
everest.io/disk-mode: SCSI** **
everest.io/disk-volume-type: SAS** **
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner** **
volumeHandle: 0992dbda-6340-470e-a74e-4f0db288ed82** **
persistentVolumeReclaimPolicy: Delete** **
storageClassName: csi-disk
表 关键参数说明
参数 | 描述 |
---|---|
everest.io/disk-volume-type | 云硬盘类型,全大写。当前支持高I/O(SAS)、超高I/O(SSD)和普通I/O(SATA)。 |
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | 创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。 |
storage | 云硬盘的容量,单位为Gi。 |
storageClassName | 存储卷动态供应关联的k8s storage class名称。云硬盘需使用“csi-disk”。 |
accessModes | 指定读写模式,显示volume实际具有的访问模式。1.15集群版本只支持非共享卷,此字段设置为“ReadWriteOnce”。 |
driver | 挂载依赖的存储驱动。EVS云硬盘配置为“disk.csi.everest.io”。 |
volumeHandle | 云硬盘的volumeID。获取方法: 在云服务器控制台中,单击左侧栏目树中的“云硬盘 > 磁盘”,单击要对接的云硬盘名称进入详情页,在“概览信息”页签下单击“ID”后的复制图标即可获取云硬盘的volumeID。 |
everest.io/disk-mode | 云硬盘磁盘模式,取值支持SCSI。 |
- vi pv-evs-example.yaml
PVC yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumeClaim** **
metadata:** **
labels:** **
failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
annotations:** **
everest.io/disk-volume-type: SAS** **
volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner** **
name: pvc-evs-example** **
namespace: default** **
spec:** **
accessModes:** **
- ReadWriteOnce** **
resources:** **
requests:** **
storage: 10Gi** **
volumeName: pv-evs-example** **
storageClassName: csi-disk
表 关键参数说明
参数 | 描述 |
---|---|
everest.io/disk-volume-type | 云硬盘类型,全大写。当前支持高I/O(SAS)、超高I/O(SSD)和普通I/O(SATA),必须和已有PV保持一致。 |
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。u欧 |
storage | PVC申请容量,单位为Gi。必须和已有PV的storage大小保持一致。 |
storageClassName | 指定k8s storage class名称。云硬盘需使用“csi-disk”。 |
volumeName | PV的名称。 |
步骤 4 创建PV。
kubectl create -f pv-evs-example.yaml
步骤 5 创建PVC。
kubectl create -f pvc-evs-example.yaml
执行成功后,可以在“资源管理 > 存储管理”的云硬盘存储中查看创建的PVC,也可以在EVS页面根据名称查看EVS云硬盘。
步骤 6 (可选)增加集群关联的metadata,确保在删除节点或集群时避免删除已挂载的静态PV关联的EVS盘。
注意:
若不执行本步骤或创建静态PV/PVC时没有执行过本步骤,请务必确保删除节点前,提前将静态PV关联的云硬盘从节点上卸载。
-
获取租户Token。
-
获取EVS访问地址EVS_ENDPOINT。
3.给EVS静态PV关联的EVS盘补充集群关联的metadata。
curl -X POST {EVS_ENDPOINT}/v2/{project_id}/volumes/${volume_id}/metadata --insecure ** **
-d '{"metadata":{"cluster_id": "{cluster_id}", "namespace": "{pvc_namespace}"}}' ** **
-H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' ** **
-H 'X-Auth-Token:${TOKEN}'
表关键参数说明
参数 | 描述 |
---|---|
EVS_ENDPOINT | EVS访问地址,配置为[b]( " ")中获取的值。 |
project_id | 项目ID。 |
volume_id | 关联EVS盘的ID,配置为[步骤2]( " ")待创建静态PV中的volume_id,也可在EVS控制台,单击待导入的云硬盘名称,在磁盘详情界面的“概览信息”中获取ID的值。 |
cluster_id | 待创建EVS PV的集群ID。在CCE控制台中单击“资源管理 > 集群管理”。单击待关联集群的名称,在集群详情页面,即可获取集群ID。 |
pvc_namespace | 待绑定PVC的namespace名称。 |
TOKEN | 用户Token,配置为[a]( " ")中获取的值。 |
例如,执行如下命令:
curl -X POST https://evs.region01.myctyun.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure ** **
-d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' ** **
-H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' ** **
-H 'X-Auth-Token:MIIPe******IsIm1ldG
请求执行完成后,执行如下命令,可查看EVS盘是否已关联集群的metadata。
curl -X GET {EVS_ENDPOINT}/v2/{project_id}/volumes/${volume_id}/metadata --insecure ** **
-H 'X-Auth-Token:${TOKEN}'
例如,执行如下命令:
curl -X GET https://evs.region01.myctyun.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure ** **
-H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='
在回显中就可以看到该EVS盘当前的metadata。
{** **
"metadata": {** **
"namespace": "default",** **
"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442",** **
** "hw:passthrough": "true"**
}** **
}
历史版本示例
1.11.7 ≤ K8S version ≤ 1.13(1.11.7以上及1.13版本集群)
- PV yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumemetadata:labels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
annotations:** **
pv.kubernetes.io/provisioned-by: flexvolume-ctyun.com/fuxivol** **
name: pv-evs-examplespec:accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
flexVolume:
driver: ctyun.com/fuxivol
fsType: ext4
options:** **
disk-mode: SCSI** **
fsType: ext4
volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82
persistentVolumeReclaimPolicy: Delete
storageClassName: sas
表 关键参数说明
参数 | 描述 |
---|---|
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | 创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。 |
storage | 云硬盘的容量,单位为Gi。 |
storageClassName | 云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。 |
driver | 挂载依赖的存储驱动。EVS云硬盘配置为“ctyun.com/fuxivol”。 |
volumeID | 云硬盘的volumeID。获取方法: 在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。 |
disk-mode | 云硬盘磁盘模式,取值可以是VBD和SCSI。v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。 |
- PVC yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumeClaimmetadata:annotations:volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivollabels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01name: pvc-evs-examplenamespace: defaultspec:accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi** **
volumeName: pv-evs-example
表关键参数说明
参数 | 描述 |
---|---|
volume.beta.kubernetes.io/storage-class | 存储类型,支持sas,ssd和sata。必须和已有PV保持一致。 |
volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-ctyun.com/fuxivol。 |
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。 |
storage | PVC申请容量,单位为Gi。必须和已有PV的storage大小保持一致。 |
volumeName | PV的名称。 |
1.11 ≤ K8S version < 1.11.7(1.11.7之前的1.11版本集群)
- PV yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumemetadata:labels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pv-evs-examplespec:accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
flexVolume:
driver: ctyun.com/fuxivol
fsType: ext4
options:** **
fsType: ext4
volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82
persistentVolumeReclaimPolicy: Delete
storageClassName: sas
表 关键参数说明
参数 | 描述 |
---|---|
failure-domain.beta.kubernetes.io/region | 集群所在的region。Region对应的值请参见。 |
failure-domain.beta.kubernetes.io/zone | 创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。zone对应的值请参见。 |
storage | 云硬盘的容量,单位为Gi。 |
storageClassName | 云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。 |
driver | 挂载依赖的存储驱动。EVS云硬盘配置为“ctyun.com/fuxivol”。 |
volumeID | 云硬盘的volumeID。获取方法: 在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。 |
disk-mode | 云硬盘磁盘模式,取值可以是VBD和SCSI。v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。 |
- PVC yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumeClaimmetadata:annotations:volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivollabels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01name: pvc-evs-examplenamespace: defaultspec:accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi** **
volumeName: pv-evs-example
表 关键参数说明
参数 | 描述 |
---|---|
volume.beta.kubernetes.io/storage-class | 存储类型,支持sas,ssd和sata。必须和已有PV保持一致。 |
volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-ctyun.com/fuxivol。 |
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。 |
storage | PVC申请容量,单位为Gi。必须和已有PV的storage大小保持一致。 |
volumeName | PV的名称。 |
K8S version = 1.9(1.9版本集群)
- PV yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumemetadata:labels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pv-evs-examplenamespace: defaultspec:accessModes:
- ReadWriteMany
capacity:
storage: 10Gi
flexVolume:
driver: ctyun.com/fuxivol
fsType: ext4
options:
fsType: ext4
kubernetes.io/namespace: default
volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82
persistentVolumeReclaimPolicy: Delete
storageClassName: sas
表 关键参数说明
参数 | 描述 |
---|---|
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | 创建云硬盘所在的可用区,必须和工作负载规划的可用区保持一致。 |
storage | 云硬盘的容量,单位为Gi。 |
storageClassName | 云硬盘类型,当前支持高I/O(sas)、超高I/O(ssd)和普通I/O(sata)。 |
driver | 挂载依赖的存储驱动。EVS云硬盘配置为“ctyun.com/fuxivol”。 |
volumeID | 云硬盘的volumeID。获取方法: 在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“云硬盘存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。 |
disk-mode | 云硬盘磁盘模式,取值可以是VBD和SCSI。v1.11.7之前的CCE集群,该字段无需填写,默认都是VBD。v1.11.7+以及v1.13的Linux x86 CCE集群要求该字段值必须存在,且基于PVC触发动态创建的都是EVS SCSI模式的卷,因此这里静态PV形式优先选用SCSI模式的云硬盘;同时支持升级后的老集群中VBD卷能够继续正常使用。 |
- PVC yaml文件配置示例如下:
apiVersion: v1kind: PersistentVolumeClaimmetadata:annotations:volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivollabels:failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pvc-evs-examplenamespace: defaultspec:accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi** **
volumeName: pv-evs-example** **
volumeNamespace: default
表 关键参数说明
参数 | 描述 |
---|---|
volume.beta.kubernetes.io/storage-class | 存储类型,支持sas,ssd和sata。必须和已有PV保持一致。 |
volume.beta.kubernetes.io/storage-provisioner | 必须使用flexvolume-ctyun.com/fuxivol。 |
failure-domain.beta.kubernetes.io/region | 集群所在的region。 |
failure-domain.beta.kubernetes.io/zone | EVS云硬盘所在可用区,必须和工作负载规划的可用区保持一致。 |
storage | PVC申请容量,单位为Gi。必须和已有PV的storage大小保持一致。 |
volumeName | PV的名称。 |