Uso de um EV local
Os Volumes efêmeros locais (EVs) são armazenados em pools de armazenamento de EV. Os EVs locais oferecem um desempenho melhor do que o meio de armazenamento padrão do emptyDir nativo e suportam expansão.
Pré-requisitos
- Você criou um cluster e instalou o complemento de CSI (everest) no cluster.
- 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.
- Para usar um EV local, importe um disco de dados de um nó para o pool de armazenamento de EV local. Para mais detalhes, consulte Importação de um EV para um pool de armazenamento.
Restrições
- Os EVs locais são suportados apenas quando a versão do cluster é v1.21.2-r0 ou posterior e a versão do complemento everest é 2.1.23 ou posterior.
- Não exclua manualmente o pool de armazenamento correspondente nem desanexe discos de dados do nó. Caso contrário, exceções como perda de dados podem ocorrer.
- Certifique-se de que o diretório /var/lib/kubelet/pods/ não esteja montado no pod no nó. Caso contrário, o pod, montado com tais volumes, pode falhar em ser excluído.
Usar o console para montar um EV local
- Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
- No painel de navegação à esquerda, clique em Workloads. No painel direito, clique na guia Deployments.
- Clique em Create Workload no canto superior direito da página. Na área Container Settings, clique na guia Data Storage e clique em Add Volume > Local Ephemeral Volume (emptyDir).
- 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 EV local Parâmetro
Descrição
Capacity
Capacidade do volume de armazenamento solicitado.
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, arquivos de alto risco no 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.
- Após a configuração, clique em Create Workload.
Usar o kubectl para montar um EV local
- Use o kubectl para se conectar ao cluster. Para mais detalhes, consulte Conexão a um cluster usando o kubectl.
- Crie um arquivo chamado nginx-emptydir.yaml e edite-o.
vi nginx-emptydir.yaml
Conteúdo do arquivo YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-emptydir namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-emptydir template: metadata: labels: app: nginx-emptydir spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: vol-emptydir # Volume name, which must be the same as the volume name in the volumes field. mountPath: /tmp # Path to which an EV is mounted. imagePullSecrets: - name: default-secret volumes: - name: vol-emptydir # Volume name, which can be customized. emptyDir: medium: LocalVolume # If the disk medium of emptyDir is set to LocalVolume, the local EV is used. sizeLimit: 1Gi # Volume capacity.
- Crie uma carga de trabalho.
kubectl apply -f nginx-emptydir.yaml
Manipulação de exceções de EV local
Se um usuário desanexar manualmente um disco do ECS ou executar manualmente o comando vgremove, o pool de armazenamento do EV poderá funcionar mal. Para resolver esse problema, defina o nó como não agendado seguindo o procedimento descrito em Configurações de agendamento de nó e redefina o nó.