操作場景
操作步驟
步驟 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: v1?kind: 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 //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 //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: 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: flexvolume-ctyun.com/fuxivol** **
name: pv-evs-example?spec:?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: v1?kind: PersistentVolumeClaim?metadata:?annotations:?volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivol?labels:?failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01?name: pvc-evs-example?namespace: default?spec:?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: v1?kind: PersistentVolume?metadata:?labels:?failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pv-evs-example?spec:?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: v1?kind: PersistentVolumeClaim?metadata:?annotations:?volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivol?labels:?failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01?name: pvc-evs-example?namespace: default?spec:?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: v1?kind: PersistentVolume?metadata:?labels:?failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pv-evs-example?namespace: default?spec:?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: v1?kind: PersistentVolumeClaim?metadata:?annotations:?volume.beta.kubernetes.io/storage-class: sas** **
volume.beta.kubernetes.io/storage-provisioner: flexvolume-ctyun.com/fuxivol?labels:?failure-domain.beta.kubernetes.io/region: region01** **
failure-domain.beta.kubernetes.io/zone: AZ01** **
name: pvc-evs-example?namespace: default?spec:?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的名稱。 |