Uso de um sistema de arquivos do SFS Turbo existente por meio de um PV estático
O SFS Turbo é um sistema de arquivos compartilhado com alta disponibilidade e durabilidade. É adequado para aplicações que contêm grandes arquivos pequenos e exigem baixa latência e alto IOPS. Esta seção descreve como usar um sistema de arquivos do SFS Turbo existente para criar estaticamente PVs e PVCs e implementar a persistência e o compartilhamento de dados em cargas de trabalho.
Pré-requisitos
- Você criou um cluster e instalou o complemento Armazenamento do contêiner do CCE (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.
- Você criou um sistema de arquivos do SFS Turbo disponível, e o sistema de arquivos do SFS Turbo e o cluster estão na mesma VPC.
Restrições
- Vários PVs podem usar o mesmo sistema de arquivos do SFS ou SFS Turbo com as seguintes restrições:
- Não monte todos as PVCs/PVs que usam o mesmo sistema de arquivos do SFS ou SFS Turbo subjacente em um pod. Isso leva a uma falha de inicialização do pod porque nem todos as PVCs podem ser montados no pod devido aos mesmos valores de volumeHandle desses PVs.
- Sugere-se que o parâmetro persistentVolumeReclaimPolicy nos PVs seja definido como Retain. Caso contrário, quando um PV for excluído, o volume subjacente associado poderá ser excluído. Neste caso, outros PVs associados ao mau funcionamento do volume subjacente.
- Quando o volume subjacente é usado repetidamente, ative o isolamento e a proteção de ReadWriteMany na camada da aplicação para evitar a substituição e a perda de dados.
- Para o armazenamento do SFS Turbo, os recursos anuais/mensais do SFS Turbo não serão recuperados quando o cluster ou a PVC forem excluídos. Recupere os recursos no console do SFS Turbo.
Usar um sistema de arquivos do SFS Turbo existente no console
- Efetue logon no console do CCE e acesse 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 SFS Turbo.
PVC Name
Digite o nome da PVC, que deve ser exclusivo no mesmo namespace.
Creation Method
Você pode criar um volume de armazenamento ou usar um volume de armazenamento existente para criar estaticamente uma PVC com base em se um PV foi criado.
Neste exemplo, selecione Create new para criar um PV e uma PVC ao mesmo tempo no console.
PVa
Selecione um volume de 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.
SFS Turbob
Clique em Select SFS Turbo. Na página exibida, selecione o sistema de arquivos do SFS Turbo 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
Os volumes do SFS Turbo suportam apenas ReadWriteMany, indicando que um volume de armazenamento pode ser montado em vários nós no modo leitura/gravação. Para mais detalhes, consulte Modos de acesso a volume.
Reclaim Policyb
Somente Retain é suportada, indicando que o PV não é excluído quando a PVC é excluída. Para mais detalhes, consulte Política de recuperação da PV.
Mount Optionsb
Insira os pares chave-valor do parâmetro de montagem. Para mais detalhes, consulte Configuração de opções de montagem do SFS Turbo.
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 Deployments.
- 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 SFS Turbo existente.
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.
Neste exemplo, o disco é montado no caminho /data do contêiner. Os dados de contêiner gerados nesse caminho são armazenados no sistema de arquivos do SFS Turbo.
- 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 e o compartilhamento de dados.
(kubectl) Usar um sistema de arquivos do SFS existente
- Use o kubectl para se conectar ao cluster.
- Crie um PV.
- Crie o arquivo pv-sfsturbo.yaml.
apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: everest-csi-provisioner name: pv-sfsturbo # PV name. spec: accessModes: - ReadWriteMany # Access mode. The value must be ReadWriteMany for SFS Turbo. capacity: storage: 500Gi # SFS Turbo volume capacity. csi: driver: sfsturbo.csi.everest.io # Dependent storage driver for the mounting. fsType: nfs volumeHandle: <your_volume_id> # SFS Turbo volume ID. volumeAttributes: everest.io/share-export-location: <your_location> # Shared path of the SFS Turbo volume. everest.io/enterprise-project-id: <your_project_id> # Project ID of the SFS Turbo volume. storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner persistentVolumeReclaimPolicy: Retain # Reclaim policy. storageClassName: csi-sfsturbo # Storage class name of the SFS Turbo file system. mountOptions: [] # Mount options.
Tabela 2 Parâmetros principais Parâmetro
Obrigatório
Descrição
volumeHandle
Sim
ID do volume do SFS Turbo.
Como obter: faça logon no console, escolha Service List > Storage > Scalable File Service e selecione SFS Turbo. Na lista, clique no nome do volume do SFS Turbo de destino. Na página de detalhes, copie o conteúdo seguinte ID.
everest.io/share-export-location
Sim
Caminho compartilhado do volume do SFS Turbo.
Faça logon no console, escolha Service List > Storage > Scalable File Service e selecione SFS Turbo. Você pode obter o caminho compartilhado do sistema de arquivos na coluna Mount Address.
everest.io/enterprise-project-id
Não
ID do projeto do volume do SFS Turbo.
Como obter: no console do SFS, clique em SFS Turbo no painel de navegação esquerdo. Clique no nome do sistema de arquivos do SFS Turbo para interconectar. Na guia Basic Info, localize e clique no projeto empresarial para acessar o console e copiar o ID.
mountOptions
Não
Opções de montagem.
Se não for especificada, as seguintes configurações são usadas por padrão. Para mais detalhes, consulte Configuração de opções de montagem do SFS Turbo.
mountOptions: - vers=3 - timeo=600 - nolock - hard
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.
Apenas a política de recuperação Retain é suportada. Para mais detalhes, consulte Política de recuperação da PV.
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.
storage
Sim
Capacidade solicitada na PVC, em Gi.
storageClassName
Sim
O nome da classe de armazenamento dos volumes do SFS Turbo é csi-sfsturbo.
- Execute o seguinte comando para criar um PV:
kubectl apply -f pv-sfsturbo.yaml
- Crie o arquivo pv-sfsturbo.yaml.
- Crie uma PVC.
- Crie o arquivo pvc-sfsturbo.yaml.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-sfsturbo namespace: default annotations: volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner everest.io/enterprise-project-id: <your_project_id> # Project ID of the SFS Turbo volume. spec: accessModes: - ReadWriteMany # The value must be ReadWriteMany for SFS Turbo. resources: requests: storage: 500Gi # SFS Turbo volume capacity. storageClassName: csi-sfsturbo # Storage class of the SFS Turbo volume, which must be the same as that of the PV. volumeName: pv-sfsturbo # PV name.
Tabela 3 Parâmetros principais Parâmetro
Obrigatório
Descrição
everest.io/enterprise-project-id
Não
ID do projeto do volume do SFS Turbo.
Como obter: no console do SFS, clique em SFS Turbo no painel de navegação esquerdo. Clique no nome do sistema de arquivos do SFS Turbo para interconectar. Na guia Basic Info, localize e clique no projeto empresarial para acessar o console e copiar o ID.
Armazenamento
Sim
Capacidade solicitada na PVC, em Gi.
O valor deve ser o mesmo que o tamanho de armazenamento do PV existente.
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 SFS Turbo é csi-sfsturbo.
volumeName
Sim
Nome do PV, que deve ser o mesmo que o nome do PV em 1.
- Execute o seguinte comando para criar uma PVC:
kubectl apply -f pvc-sfsturbo.yaml
- Crie o arquivo pvc-sfsturbo.yaml.
- Crie uma aplicação.
- Crie um arquivo chamado web-demo.yaml. Neste exemplo, o volume do SFS Turbo é montado no caminho /data.
apiVersion: apps/v1 kind: Deployment metadata: name: web-demo namespace: default spec: replicas: 2 selector: matchLabels: app: web-demo template: metadata: labels: app: web-demo spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-sfsturbo-volume #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-sfsturbo-volume #Volume name, which can be customized. persistentVolumeClaim: claimName: pvc-sfsturbo #Name of the created PVC.
- Execute o seguinte comando para criar uma carga de trabalho para qual o volume do SFS Turbo está montado:
kubectl apply -f web-demo.yaml
Depois que a carga de trabalho é criada, você pode tentar Verificar a persistência e o compartilhamento de dados.
- Crie um arquivo chamado web-demo.yaml. Neste exemplo, o volume do SFS Turbo é montado no caminho /data.
Verificar a persistência e o compartilhamento de dados
- Exiba a aplicação implementada e os arquivos.
- Execute o seguinte comando para exibir o pod criado:
kubectl get pod | grep web-demo
Saída esperada:web-demo-846b489584-mjhm9 1/1 Running 0 46s web-demo-846b489584-wvv5s 1/1 Running 0 46s
- Execute os seguintes comandos em sequência para visualizar os arquivos no caminho /data dos pods:
kubectl exec web-demo-846b489584-mjhm9 -- ls /data kubectl exec web-demo-846b489584-wvv5s -- ls /data
Se nenhum resultado for retornado para ambos os pods, nenhum arquivo existirá no caminho /data.
- 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-demo-846b489584-mjhm9 -- touch /data/static
- Execute o seguinte comando para exibir os arquivos no caminho /data:
kubectl exec web-demo-846b489584-mjhm9 -- ls /data
Saída esperada:
static
- Verifique a persistência dos dados.
- Execute o seguinte comando para excluir o pod chamado web-demo-846b489584-mjhm9:
kubectl delete pod web-demo-846b489584-mjhm9
Saída esperada:
pod "web-demo-846b489584-mjhm9" deleted
Após a eliminação, o controlador de Implementação cria automaticamente uma réplica.
- Execute o seguinte comando para exibir o pod criado:
kubectl get pod | grep web-demo
A saída esperada é a seguinte, na qual web-demo-846b489584-d4d4j é o pod recém-criado:web-demo-846b489584-d4d4j 1/1 Running 0 110s web-demo-846b489584-wvv5s 1/1 Running 0 7m50s
- Execute o seguinte comando para verificar se os arquivos no caminho /data do pod novo foram modificados:
kubectl exec web-demo-846b489584-d4d4j -- ls /data
Saída esperada:
static
Se o arquivo static ainda existir, os dados podem ser armazenados persistentemente.
- Execute o seguinte comando para excluir o pod chamado web-demo-846b489584-mjhm9:
- Verifique o compartilhamento de dados.
- Execute o seguinte comando para exibir o pod criado:
kubectl get pod | grep web-demo
Saída esperada:web-demo-846b489584-d4d4j 1/1 Running 0 7m web-demo-846b489584-wvv5s 1/1 Running 0 13m
- Execute o seguinte comando para criar um arquivo chamado share no caminho /data de qualquer pod: Neste exemplo, selecione o pod chamado web-demo-846b489584-d4d4j.
kubectl exec web-demo-846b489584-d4d4j -- touch /data/share
Verifique os arquivos no caminho /data do pod.kubectl exec web-demo-846b489584-d4d4j -- ls /data
Saída esperada:
share static
- Verifique se o arquivo share existe no caminho /data de outro pod (web-demo-846b489584-wvv5s) também para verificar o compartilhamento de dados.
kubectl exec web-demo-846b489584-wvv5s -- ls /data
Saída esperada:
share static
Depois de criar um arquivo no caminho /data de um pod, se o arquivo também for criado no caminho /data do outro pod, os dois pods compartilharão o mesmo volume.
- Execute o seguinte comando para exibir o pod criado:
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 volume do SFS Turbo |
Expanda rapidamente a capacidade de um volume do SFS Turbo montado no console do CCE. |
|
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. |
|