Uso de um disco EVS existente através de um PV estático
O CCE permite que você crie um PV usando um disco EVS existente. Depois que o PV é criado, você pode criar uma PVC e ligá-la ao PV. Esse modo se aplica a cenários em que o armazenamento subjacente está disponível ou é cobrado anualmente/mensalmente..
Pré-requisitos
- Você criou um cluster e instalou o complemento Armazenamento do contêiner do CCE (Everest) no cluster.
- Você criou um disco EVS que atende aos seguintes requisitos:
- O disco EVS existente não pode ser um disco do sistema, um disco DSS ou um disco partilhado.
- O tipo de dispositivo do disco EVS deve ser SCSI (o tipo de dispositivo padrão é VBD quando você compra um disco EVS).
- O disco EVS deve estar disponível e não ser usado por outros recursos.
- A AZ do disco EVS deve ser a mesma do nó do cluster. Caso contrário, o disco EVS não pode ser montado e o pod não pode iniciar.
- Se o disco EVS estiver encriptado, a chave tem de estar disponível.
- Somente os discos EVS no projeto empresarial ao qual o cluster pertence e o projeto empresarial padrão são suportados.
- Discos EVS com partições ou sistemas de arquivos não ext4 não podem ser importados.
- Se você quiser criar um cluster usando comandos, use kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
Restrições
- Os discos EVS não podem ser conectados em AZs e não podem ser usados por várias cargas de trabalho, vários pods da mesma carga de trabalho ou várias tarefas. O compartilhamento de dados de um disco compartilhado não é suportado entre nós em um cluster do CCE. Se um disco EVS for atacado a vários nós, podem ocorrer conflitos de I/O e conflitos de cache de dados. Portanto, crie apenas um pod ao criar uma Implementação que use discos EVS.
- Para clusters anteriores à v1.19.10, se uma política HPA for usada para expandir uma carga de trabalho com discos EVS anexados, os pods existentes não poderão ser lidos ou gravados quando um novo pod for agendado para outro nó.
Para clusters de v1.19.10 e posterior, se uma política HPA for usada para expandir uma carga de trabalho com discos EVS anexados, um novo pod não poderá ser iniciado porque os discos EVS não podem ser anexados.
Usar um disco EVS existente no console
- Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
- Crie estaticamente uma PVC e PV.
- Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs). Clique em Create PVC no canto superior direito. Na caixa de diálogo exibida, configure os parâmetros de PVC.
Parâmetro
Descrição
PVC Type
Neste exemplo, selecione EVS.
PVC Name
Digite o nome da PVC, que deve ser exclusivo no mesmo namespace.
Creation Method
- Se o armazenamento subjacente estiver disponível, crie um volume de armazenamento ou use um volume de armazenamento existente para criar estaticamente uma PVC com base em se um PV foi criado.
- Se nenhum armazenamento subjacente estiver disponível, selecione Dynamically provision. Para mais detalhes, consulte Uso de um disco EVS por meio de um PV dinâmico.
Neste exemplo, selecione Create new para criar um PV e uma PVC ao mesmo tempo no console.
PVa
Selecione um PV existente no cluster. Crie um PV com antecedência. Para obter detalhes, consulte "Criação de um volume de armazenamento" em Operações relacionadas.
Você não precisa especificar esse parâmetro neste exemplo.
EVSb
Clique em Select EVS. Na página exibida, selecione o disco EVS que atende aos seus requisitos e clique em OK.
PV Nameb
Digite o nome do PV, que deve ser exclusivo no mesmo cluster.
Access Modeb
Discos EVS suportam apenas ReadWriteOnce indicando que um volume de armazenamento pode ser montado em um nó no modo leitura/gravação. Para mais detalhes, consulte Modos de acesso a volume.
Reclaim Policyb
Você pode selecionar Delete ou Retain para especificar a política de recuperação do armazenamento subjacente quando a PVC é excluída. Para mais detalhes, consulte Política de recuperação da PV.
a: o parâmetro está disponível quando Creation Method está definido como Use existing.
b: o parâmetro está disponível quando Creation Method está definido como Create new.
- Clique em Create para criar uma PVC e um PV.
Você pode escolher Storage no painel de navegação e exibir a PVC e o PV criados nas páginas de guia PersistentVolumeClaims (PVCs) e PersistentVolumes (PVs), respectivamente.
- Escolha Storage no painel de navegação e clique na guia PersistentVolumeClaims (PVCs). Clique em Create PVC no canto superior direito. Na caixa de diálogo exibida, configure os parâmetros de PVC.
- Crie uma aplicação.
- No painel de navegação à esquerda, clique em Workloads. No painel direito, clique na guia StatefulSets.
- Clique em Create Workload no canto superior direito. Na página exibida, clique em Data Storage na área Container Settings e clique em Add Volume para selecionar PVC.
Monte e use volumes de armazenamento, conforme mostrado na Tabela 1. Para obter detalhes sobre outros parâmetros, consulte Cargas de trabalho.
Tabela 1 Montagem de um volume de armazenamento Parâmetro
Descrição
PVC
Selecione um volume do EVS existente.
Um volume do EVS não pode ser montado repetidamente em várias cargas de trabalho.
Mount Path
Digite um caminho de montagem, por exemplo, /tmp.
Este parâmetro indica o caminho do contêiner no qual um volume de dados será montado. Não monte o volume em um diretório do sistema como / ou /var/run. Caso contrário, os contêineres estarão com defeito. Monte o volume em um diretório vazio. Se o diretório não estiver vazio, verifique se não há arquivos que afetem a inicialização do contêiner. Caso contrário, os arquivos serão substituídos, causando falhas de inicialização do contêiner ou falhas de criação de carga de trabalho.AVISO:Se um volume for montado em um diretório de alto risco, use uma conta com permissões mínimas para iniciar o contêiner. Caso contrário, os arquivos de alto risco na máquina host podem ser danificados.
Subpath
Digite um subcaminho, por exemplo, tmp, indicando que os dados no caminho de montagem do contêiner serão armazenados na pasta tmp do volume.
Um subcaminho é usado para montar um volume local para que o mesmo volume de dados seja usado em um único pod. Se este parâmetro for deixado em branco, o caminho raiz é usado por padrão.
Permission
- Read-only: você só pode ler os dados nos volumes montados.
- Read/Write: você pode modificar os volumes de dados montados no caminho. Os dados recém-gravados não serão migrados se o contêiner for migrado, o que pode causar perda de dados.
Neste exemplo, o disco é montado no caminho /data do contêiner. Os dados de contêiner gerados nesse caminho são armazenados no disco EVS.
Um disco EVS não compartilhado não pode ser conectado a vários pods em uma carga de trabalho. Caso contrário, os pods não poderão ser iniciados corretamente. Certifique-se de que o número de pods de carga de trabalho seja 1 ao anexar um disco EVS.
- Após a configuração, clique em Create Workload.
Depois que a carga de trabalho for criada, os dados no diretório de montagem do contêiner serão armazenados persistentemente. Verifique o armazenamento referindo-se a Verificar a persistência dos dados.
(kubectl) Usar um disco EVS existente
- Use o kubectl para se conectar ao cluster.
- Crie um PV. Se um PV tiver sido criado no cluster, ignore esta etapa.
- Crie o arquivo pv-evs.yaml.
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: everest-csi-provisioner everest.io/reclaim-policy: retain-volume-only # (Optional) The PV is deleted while the underlying volume is retained. name: pv-evs # PV name. labels: failure-domain.beta.kubernetes.io/region: <your_region> # Region of the node where the application is to be deployed. failure-domain.beta.kubernetes.io/zone: <your_zone> # AZ of the node where the application is to be deployed. spec: accessModes: - ReadWriteOnce # Access mode. The value must be ReadWriteOnce for EVS disks. capacity: storage: 10Gi # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768. csi: driver: disk.csi.everest.io # Dependent storage driver for the mounting. fsType: ext4 volumeHandle: <your_volume_id> # Volume ID of the EVS disk. volumeAttributes: everest.io/disk-mode: SCSI # Device type of the EVS disk. Only SCSI is supported. everest.io/disk-volume-type: SAS # EVS disk type. storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner everest.io/crypt-key-id: <your_key_id> # (Optional) Encryption key ID. Mandatory for an encrypted disk. everest.io/enterprise-project-id: <your_project_id> # (Optional) Enterprise project ID. If an enterprise project is specified, use the same enterprise project when creating a PVC. Otherwise, the PVC cannot be bound to a PV. persistentVolumeReclaimPolicy: Delete # Reclaim policy. storageClassName: csi-disk # Storage class name. The value must be csi-disk for EVS disks.
Tabela 2 Parâmetros principais Parâmetro
Obrigatório
Descrição
everest.io/reclaim-policy: retain-volume-only
Não
Opcional.
Atualmente, apenas retain-volume-only é suportado.
Este campo é válido somente quando a versão do everest for 1.2.9 ou posterior e a política de recuperação for Delete. Se a política de recuperação for Delete e o valor atual for retain-volume-only, o PV associado será excluído enquanto o volume de armazenamento subjacente for retido, quando uma PVC for excluída.
failure-domain.beta.kubernetes.io/region
Sim
Região onde o cluster está localizado.
Para obter detalhes sobre o valor da region, consulte Regiões e pontos de extremidade.
failure-domain.beta.kubernetes.io/zone
Sim
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
Para obter detalhes sobre o valor da zone, consulte Regiões e pontos de extremidade.
volumeHandle
Sim
ID do volume do disco EVS.
Para obter o ID do volume, faça logon no Cloud Server Console. No painel de navegação, escolha Elastic Volume Service > Disks. Clique no nome do disco EVS de destino para acessar sua página de detalhes. Na página de guia Summary, clique no botão copiar após ID.
everest.io/disk-volume-type
Sim
Tipos de disco EVS. Todas as letras estão em maiúsculas.- SAS: I/O alta
- SSD: I/O ultra-alta
- GPSSD: SSD de uso geral
- ESSD: SSD extremo
everest.io/crypt-key-id
Não
Obrigatório quando o disco EVS é criptografado. Insira o ID da chave de criptografia selecionada durante a criação do disco EVS.
Para obter o ID da chave de criptografia, faça logon no Cloud Server Console. No painel de navegação, escolha Elastic Volume Service > Disks. Clique no nome do disco EVS de destino para acessar sua página de detalhes. Na página de guia Summary, copie o valor de KMS Key ID na área Configuration Information.
everest.io/enterprise-project-id
Não
Opcional.
ID do projeto empresarial do disco EVS. Se um projeto empresarial for especificado, use o mesmo projeto empresarial ao criar uma PVC. Caso contrário, a PVC não pode ser vinculado a um PV.
Para obter o código do projeto empresarial, efetue logon no Cloud Server Console. No painel de navegação, escolha Elastic Volume Service > Disks. Clique no nome do disco EVS de destino para acessar sua página de detalhes. Na página de guia Summary, clique no projeto empresarial em Management Information para acessar o console do projeto empresarial. Copie o ID correspondente para obter o ID do projeto corporativo ao qual o disco EVS pertence.
persistentVolumeReclaimPolicy
Sim
Uma política de recuperação é suportada quando a versão do cluster é ou posterior a 1.19.10 e a versão do everest é ou posterior a 1.2.9.
As políticas de recuperação Delete e Retain são suportadas. Para mais detalhes, consulte Política de recuperação da PV. Se for necessária uma alta segurança de dados, selecione Retain para impedir que os dados sejam excluídos por engano.
Delete:
- Se everest.io/reclaim-policy não for especificada, o volume de PV e EVS serão excluídos quando uma PVC for excluída.
- Se everest.io/reclaim-policy estiver definida para retain-volume-only, quando uma PVC for excluída, o PV será excluído, mas os recursos do EVS serão retidos.
Retain: quando uma PVC é excluída, o PV e os recursos de armazenamento subjacentes não são excluídos. Em vez disso, você deve excluir manualmente esses recursos. Depois disso, o PV está no estado Released e não pode ser vinculado à PVC novamente.
storageClassName
Sim
O nome da classe de armazenamento para discos EVS é csi-disk.
- Execute o seguinte comando para criar um PV:
kubectl apply -f pv-evs.yaml
- Crie o arquivo pv-evs.yaml.
- Crie uma PVC.
- Crie o arquivo pvc-evs.yaml.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-evs namespace: default annotations: everest.io/disk-volume-type: SAS # EVS disk type. everest.io/crypt-key-id: <your_key_id> # (Optional) Encryption key ID. Mandatory for an encrypted disk. everest.io/enterprise-project-id: <your_project_id> # (Optional) Enterprise project ID. If an enterprise project is specified, use the same enterprise project when creating a PVC. Otherwise, the PVC cannot be bound to a PV. labels: failure-domain.beta.kubernetes.io/region: <your_region> # Region of the node where the application is to be deployed. failure-domain.beta.kubernetes.io/zone: <your_zone> # AZ of the node where the application is to be deployed. spec: accessModes: - ReadWriteOnce # The value must be ReadWriteOnce for EVS disks. resources: requests: storage: 10Gi # EVS disk capacity, ranging from 1 to 32768. The value must be the same as the storage size of the existing PV. storageClassName: csi-disk # Storage class type for EVS disks. volumeName: pv-evs # PV name.
Tabela 3 Parâmetros principais Parâmetro
Obrigatório
Descrição
failure-domain.beta.kubernetes.io/region
Sim
Região onde o cluster está localizado.
Para obter detalhes sobre o valor da region, consulte Regiões e pontos de extremidade.
failure-domain.beta.kubernetes.io/zone
Sim
AZ onde o volume do EVS é criado. Deve ser a mesma que a AZ planejada para a carga de trabalho.
Para obter detalhes sobre o valor da zone, consulte Regiões e pontos de extremidade.
storage
Sim
Capacidade solicitada na PVC, em Gi.
O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.
volumeName
Sim
Nome do PV, que deve ser o mesmo que o nome do PV em 1.
storageClassName
Sim
Nome da classe de armazenamento, que deve ser o mesmo que a classe de armazenamento do PV em 1.
O nome da classe de armazenamento dos volumes do EVS é csi-disk.
- Execute o seguinte comando para criar uma PVC:
kubectl apply -f pvc-evs.yaml
- Crie o arquivo pvc-evs.yaml.
- Crie uma aplicação.
- Crie um arquivo chamado web-evs.yaml. Neste exemplo, o volume do EVS é montado no caminho /data.
apiVersion: apps/v1 kind: StatefulSet metadata: name: web-evs namespace: default spec: replicas: 1 # The number of workload replicas that use the EVS volume must be 1. selector: matchLabels: app: web-evs serviceName: web-evs # Headless Service name. template: metadata: labels: app: web-evs spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-disk # Volume name, which must be the same as the volume name in the volumes field. mountPath: /data # Location where the storage volume is mounted. imagePullSecrets: - name: default-secret volumes: - name: pvc-disk # Volume name, which can be customized. persistentVolumeClaim: claimName: pvc-evs # Name of the created PVC. --- apiVersion: v1 kind: Service metadata: name: web-evs # Headless Service name. namespace: default labels: app: web-evs spec: selector: app: web-evs clusterIP: None ports: - name: web-evs targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: ClusterIP
- Execute o seguinte comando para criar uma carga de trabalho na qual o volume do EVS está montado:
kubectl apply -f web-evs.yaml
Depois que a carga de trabalho for criada, os dados no diretório de montagem do contêiner serão armazenados persistentemente. Verifique o armazenamento referindo-se a Verificar a persistência dos dados.
- Crie um arquivo chamado web-evs.yaml. Neste exemplo, o volume do EVS é montado no caminho /data.
Verificar a persistência dos dados
- Visualize a aplicação implementado e os arquivos de volume do EVS.
- Execute o seguinte comando para exibir o pod criado:
kubectl get pod | grep web-evs
Saída esperada:web-evs-0 1/1 Running 0 38s
- Execute o seguinte comando para verificar se o volume do EVS foi montado no caminho /data:
kubectl exec web-evs-0 -- df | grep data
Saída esperada:
/dev/sdc 10255636 36888 10202364 0% /data
- Execute o seguinte comando para exibir os arquivos no caminho /data:
kubectl exec web-evs-0 -- ls /data
Saída esperada:
lost+found
- Execute o seguinte comando para exibir o pod criado:
- Execute o seguinte comando para criar um arquivo chamado static no caminho /data:
kubectl exec web-evs-0 -- touch /data/static
- Execute o seguinte comando para exibir os arquivos no caminho /data:
kubectl exec web-evs-0 -- ls /data
Saída esperada:
lost+found static
- Execute o seguinte comando para excluir o pod chamado web-evs-0:
kubectl delete pod web-evs-0
Saída esperada:
pod "web-evs-0" deleted
- Após a exclusão, o controlador de StatefulSet cria automaticamente uma réplica com o mesmo nome. Execute o seguinte comando para verificar se os arquivos no caminho /data foram modificados:
kubectl exec web-evs-0 -- ls /data
Saída esperada:
lost+found static
Se o arquivo static ainda existir, os dados no volume de EVS podem ser armazenados persistentemente.
Operações relacionadas
Operação |
Descrição |
Procedimento |
---|---|---|
Criar um volume de armazenamento (PV) |
Crie um PV no console do CCE. |
|
Expandir a capacidade de um disco EVS |
Expanda rapidamente a capacidade de um disco EVS montado no console do CCE. Somente a capacidade de discos EVS de pagamento por uso pode ser expandida no console do CCE. Para expandir a capacidade de discos EVS anuais/mensais, clique no nome do volume para ir para o console do EVS. |
|
Visualizar eventos |
Você pode visualizar nomes de eventos, tipos de eventos, número de ocorrências, eventos do Kubernetes, horário da primeira ocorrência e horário da última ocorrência da PVC ou PV. |
|
Exibir um arquivo YAML |
Você pode visualizar, copiar e fazer download dos arquivos YAML de uma PVC ou um PV. |
|