(kubectl) Criação de um PV a partir de um disco EVS existente
Observações e restrições
O exemplo de configuração a seguir se aplica a clusters do Kubernetes 1.13 ou anterior.
Procedimento
- Efetue logon no console do EVS, crie um disco EVS e registre o ID do volume, a capacidade e o tipo de disco do disco EVS.
- Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
- Crie dois arquivos YAML para criar o PV (PersistentVolume) e a PVC (PersistentVolumeClaim). Suponha que os nomes dos arquivos sejam pv-evs-example.yaml e pvc-evs-example.yaml.
touch pv-evs-example.yaml pvc-evs-example.yaml
Versão do cluster do Kubernetes
Descrição
Exemplo de YAML
1.11.7 ≤ versão K8s ≤ 1.13
Clusters da v1.11.7 a v1.13
1.11 ≤ versão K8s < 1.11.7
Clusters da v1.11 a v1.11.7
Versão K8s = 1.9
Clusters da v1.9
Clusters da v1.11.7 a v1.13
- Exemplo de arquivo YAML para o PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a annotations: pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol name: pv-evs-example spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: pvc-evs-example namespace: default flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: disk-mode: SCSI fsType: ext4 volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabela 1 Parâmetros principais Parâmetro
Descrição
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade de volume do SVE na unidade de Gi.
storageClassName
Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Driver de armazenamento.
Para discos EVS, defina este parâmetro como huawei.com/fuxivol.
volumeID
ID do volume do disco EVS.
Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.
disk-mode
Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.
Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.
Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.
spec.claimRef.apiVersion
O valor é fixado em v1.
spec.claimRef.kind
O valor é fixado em PersistentVolumeClaim.
spec.claimRef.name
Nome da PVC. O valor é o mesmo que o nome da PVC criada na próxima etapa.
spec.claimRef.namespace
Namespace da PVC. O valor é o mesmo que o namespace da PVC criada na próxima etapa.
- Exemplo de arquivo YAML para a PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example
Tabela 2 Parâmetros principais Parâmetro
Descrição
volume.beta.kubernetes.io/storage-class
Classe de armazenamento, que deve ser a mesma do PV existente.
volume.beta.kubernetes.io/storage-provisioner
O campo deve ser definido como flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade solicitada na PVC, em Gi.
O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.
volumeName
Nome do PV.
Clusters da v1.11 a v1.11.7
- Exemplo de arquivo YAML para o PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pv-evs-example spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: fsType: ext4 volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabela 3 Parâmetros principais Parâmetro
Descrição
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade de volume do SVE na unidade de Gi.
storageClassName
Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Driver de armazenamento.
Para discos EVS, defina este parâmetro como huawei.com/fuxivol.
volumeID
ID do volume do disco EVS.
Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.
disk-mode
Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.
Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.
Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.
- Exemplo de arquivo YAML para a PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example
Tabela 4 Parâmetros principais Parâmetro
Descrição
volume.beta.kubernetes.io/storage-class
Classe de armazenamento. O valor pode ser sas ou ssd. O valor deve ser o mesmo do PV existente.
volume.beta.kubernetes.io/storage-provisioner
O campo deve ser definido como flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade solicitada na PVC, em Gi.
O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.
volumeName
Nome do PV.
Clusters da v1.9
- Exemplo de arquivo YAML para o PV:
apiVersion: v1 kind: PersistentVolume metadata: labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pv-evs-example namespace: default spec: accessModes: - ReadWriteOnce capacity: storage: 10Gi flexVolume: driver: huawei.com/fuxivol fsType: ext4 options: fsType: ext4 kubernetes.io/namespace: default volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 persistentVolumeReclaimPolicy: Delete storageClassName: sas
Tabela 5 Parâmetros principais Parâmetro
Descrição
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade de volume do SVE na unidade de Gi.
storageClassName
Tipos de disco EVS. Valores compatíveis: High I/O (SAS) and Ultra-high I/O (SSD)
driver
Driver de armazenamento.
Para discos EVS, defina este parâmetro como huawei.com/fuxivol.
volumeID
ID do volume do disco EVS.
Para obter o ID do volume, entre no console do CCE, escolha Resource Management > Storage, clique no nome da PVC na página de guia EVS e copie o ID da PVC na página de detalhes da PVC.
disk-mode
Tipo de dispositivo do disco EVS. O valor é VBD ou SCSI.
Para clusters do CCE anteriores a v1.11.7, você não precisa definir esse campo. O valor padrão é VBD.
Esse campo é obrigatório para clusters do CCE de v1.11.7 a v1.13 que usam Linux x86. Como os volumes do EVS fornecidos dinamicamente por uma PVC são criados a partir de discos SCSI EVS, é aconselhável escolher SCSI ao criar volumes manualmente (PVs estáticos). Volumes no modo VBD ainda podem ser usados após upgrades de cluster.
- Exemplo de arquivo YAML para a PVC:
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: sas volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol labels: failure-domain.beta.kubernetes.io/region: ap-southeast-1 failure-domain.beta.kubernetes.io/zone: ap-southeast-1a name: pvc-evs-example namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-evs-example volumeNamespace: default
Tabela 6 Parâmetros principais Parâmetro
Descrição
volume.beta.kubernetes.io/storage-class
Classe de armazenamento, que deve ser a mesma do PV existente.
volume.beta.kubernetes.io/storage-provisioner
O campo deve ser definido como flexvolume-huawei.com/fuxivol.
failure-domain.beta.kubernetes.io/region
Região onde o cluster está localizado.
failure-domain.beta.kubernetes.io/zone
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
storage
Capacidade solicitada na PVC, em Gi.
O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.
volumeName
Nome do PV.
- Exemplo de arquivo YAML para o PV:
- Crie um PV.
kubectl create -f pv-evs-example.yaml
- Crie uma PVC.
kubectl create -f pvc-evs-example.yaml
Depois que a operação for bem-sucedida, escolha Resource Management > Storage para exibir a PVC criada. Você também pode visualizar o disco EVS por nome no console do EVS.
- (Opcional) Adicione os metadados associados ao cluster para garantir que o disco do EVS associado ao PV estático montado não seja excluído quando o nó ou o cluster for excluído.
Se você pular esta etapa neste exemplo ou ao criar um PV ou PVC estático, certifique-se de que o disco EVS associado ao PV estático tenha sido desvinculado do nó antes de excluir o nó.
- Obtenha o token do locatário. Para obter detalhes, consulte Obtenção de um token de usuário.
- Obtenha o endereço de acesso EVS EVS_ENDPOINT. Para obter detalhes, consulte Regiões e pontos de extremidade.
- Adicione os metadados associados ao cluster ao disco EVS que suporta o PV estático.
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}'
Tabela 7 Parâmetros principais Parâmetro
Descrição
EVS_ENDPOINT
Endereço de acesso ao EVS. Defina este parâmetro para o valor obtido em 2.
project_id
ID do projeto.
volume_id
ID do disco EVS associado. Defina este parâmetro como volume_id do PV estático a ser criado. Você também pode efetuar logon no console do EVS, clicar no nome do disco EVS a ser importado e obter o ID em Summary na página de detalhes do disco, conforme mostrado em Figura 1.
cluster_id
ID do cluster onde o PV do EVS será criado. No console do CCE, escolha Resource Management > Clusters. Clique no nome do cluster a ser associado. Na página de detalhes do cluster, obtenha o ID do cluster, conforme mostrado em Figura 2.
pvc_namespace
Namespace onde a PVC deve ser vinculada.
TOKEN
Token do usuário. Defina este parâmetro para o valor obtido em 1.
Por exemplo, execute os seguintes comandos:
curl -X POST https://evs.ap-southeast-1.myhuaweicloud.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
Depois que a solicitação for executada, execute os seguintes comandos para verificar se o disco EVS foi associado aos metadados do cluster:
curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \ -H 'X-Auth-Token:${TOKEN}'
Por exemplo, execute os seguintes comandos:
curl -X GET https://evs.ap-southeast-1.myhuaweicloud.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \ -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='
A saída do comando exibe os metadados atuais do disco EVS.
{ "metadata": { "namespace": "default", "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "hw:passthrough": "true" } }