Este tópico explica como montar um volume do Alibaba Cloud Network Attached Storage (NAS) em pods de um cluster do Container Service for Kubernetes (ACK) usando provisionamento estático. O provisionamento estático permite conectar pods a um sistema de arquivos NAS existente e oferece armazenamento persistente e compartilhado para vários pods ao mesmo tempo.
Pré-requisitos
ACK Serverless cluster criado. Para mais informações, consulte Create an ACK Serverless cluster.
-
Um sistema de arquivos NAS criado. Para mais informações, consulte Create a file system.
Se precisar criptografar dados no PersistentVolume (PV) do NAS, configure o tipo de criptografia ao criar o sistema de arquivos NAS.
-
Um ponto de montagem do NAS criado. Para mais informações, consulte gerencie os pontos de montagem.
O ponto de montagem do NAS deve estar na mesma VPC que os nós do cluster.
kubectl conectado ao cluster. Para mais informações, consulte Obtain a kubeconfig file and connect to a cluster by using kubectl
Casos de uso
Aplicações com altos requisitos de E/S de disco.
Suporta compartilhamento de arquivos entre hosts, por exemplo, como servidor de arquivos.
Observações
Ao usar um sistema de arquivos Extreme NAS, o
pathconfigurado para o PersistentVolume (PV) deve usar /share como diretório pai. Por exemplo, o subdiretório do sistema de arquivos NAS montado pelo Pod pode ser definido como /share/path1.-
O NAS permite que vários Pods o montem simultaneamente. Nesse caso, como vários Pods podem modifique os mesmos dados ao mesmo tempo, a aplicação deve implementar a sincronização de dados por conta própria.
NotaO diretório / no armazenamento NAS não permite modifique permissões, proprietário ou grupo.
-
Ao configurar o parâmetro securityContext.fsgroup no modelo da aplicação, o Kubelet executa operações
chmodouchownapós a montagem do PersistentVolume (PV). Isso aumenta o tempo de montagem.NotaSe o parâmetro securityContext.fsgroup já estiver configurado e você precisar reduzir o tempo de montagem, consulte NAS volume FAQ.
Montar um volume NAS pelo console
Passo 1: Criar um PV
acesse o ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Cluster List, clique em o nome do cluster de destino ou clique em Details na coluna Actions.
No painel de navegação à esquerda da página onde você gerencie o cluster, escolha .
Na página Persistent Volumes, clique em Create no canto superior direito.
-
Na caixa de diálogo Create PV, configure os parâmetros.
Parâmetro
Observação
PV Type
Neste exemplo, NAS está selecionado.
Name
O nome do PersistentVolume (PV) a ser criado. O nome do PV deve ser exclusivo no cluster. Neste exemplo, o nome é pv-nas.
Capacity
A capacidade do PersistentVolume (PV) a ser criado. O sistema de arquivos NAS em si não impõe limites de uso. Isso não é uma cota no sistema de arquivos NAS, mas uma declaração de capacidade do PV em criação.
Access Mode
Selecione ReadWriteMany e ReadWriteOnce. O valor padrão é ReadWriteMany.
Mount Target Domain Name:
defina o endereço de montagem do cluster no ponto de montagem do NAS usando Select Mount Target ou Custom.
Advanced Options (Optional)
Mount Path
O subdiretório do NAS a ser montado. Se este parâmetro não for especificado, o diretório raiz é montado por padrão.
Se o diretório não existir no sistema de arquivos NAS, ele é criado e montado automaticamente.
NAS de uso geral: O diretório raiz é
/.Extreme NAS: O diretório raiz é
/share. Ao montar um subdiretório, opathdeve começar com/share, como/share/data.
Reclaim Policy
Retain (padrão): ao exclua o PVC, o PV e os arquivos do NAS não são excluídos. Exclua-os manualmente.
Mount Options
As opções de montagem para o NAS, incluindo a versão do protocolo NFS. Por padrão, a montagem usa NFSv3. Especifique uma versão diferente com uma opção como
vers=4.0. Para obter informações sobre os protocolos NFS suportados por diferentes tipos de NAS, consulte protocolos NFS.Labels
Adicione rótulos a este PersistentVolume (PV).
Após configurar os parâmetros, clique em Create.
Passo 2: Criar um PVC
No painel de navegação à esquerda da página onde você gerencie o cluster, escolha .
Na página Persistent Volume Claims, clique em Create no canto superior direito.
-
Na caixa de diálogo Create PVC, configure os parâmetros.
Parâmetro
Observação
PVC Type
Neste exemplo, NAS está selecionado.
Name
O nome do PersistentVolumeClaim (PVC) a ser criado deve ser exclusivo no cluster.
Allocation Mode
Selecione um PersistentVolume (PV) existente.
NotaSe nenhum PV tiver sido criado, defina Allocation Mode como Create PV para configurar os parâmetros de criação de um PV. Para mais informações, consulte Criar um PV.
Existing Volumes
Clique em Select PV e, na coluna Actions à direita do PV de destino, clique em Select Node para selecionar o PV.
Capacity
A capacidade do PersistentVolume (PV) a ser criado.
NotaA capacidade do PersistentVolumeClaim (PVC) a ser criado não pode exceder a capacidade do PersistentVolume (PV) a ser montado.
-
Clique em Create.
Depois de criar o PersistentVolumeClaim (PVC), ele aparecerá na lista já vinculado ao PersistentVolume (PV) correspondente.
Passo 3: Criar uma aplicação
<!--@ol {"id":"28b5fbd4f473m","data-node="1605442"}-->
Na página Clusters, clique em o nome do cluster. No painel de navegação à esquerda, clique em .
Na página Deployments, clique em Create from Image e configure os parâmetros da aplicação.
A tabela a seguir descreve os principais parâmetros. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Create a stateless workload (Deployment).
Categoria | Parâmetro | Descrição |
Basic Information | Application Name | O nome do Deployment. |
Replicas: | O número de réplicas para o Deployment. Essa configuração permite verifique o recurso de armazenamento compartilhado do NAS. | |
Container | Image Name | O endereço da imagem da aplicação. |
Required Resources | Os recursos de vCPU e memória necessários. | |
Volume | Clique em Add PVC e configure os parâmetros.
|
Quando a implantação terminar, acesse a página Deployments e clique em o nome da aplicação. Na aba Pods, verifique se os Pods estão no estado Running.
Montar um volume NAS usando o kubectl
-
execute o comando a seguir para criar um PV estático.
kubectl create -f pv-nas.yamlVeja a seguir um exemplo de arquivo YAML para a criação de um PV estático.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parâmetro
Observação
name
O nome do PV.
labels
defina rótulos para o PV.
storage
A capacidade disponível do NAS.
accessModes
Configure o modo de acesso.
driver
O tipo de driver. Neste exemplo, o valor é
nasplugin.csi.alibabacloud.com, que indica o uso do plugin CSI do Alibaba Cloud NAS.volumeHandle
defina um identificador exclusivo para o PV. Se vários PVs forem usados simultaneamente, esse valor deve ser diferente para cada PV.
server
Ponto de montagem do NAS.
path
Subdiretório de montagem. Para o Extreme NAS, use /share como diretório pai.
vers
A versão do protocolo NFS para montar o PersistentVolume (PV) do NAS. Recomenda-se a versão v3. O Extreme NAS suporta apenas a v3.
-
Use o comando abaixo para criar um PVC estático.
Crie um PersistentVolumeClaim (PVC) do NAS e use
selectorpara filtrar PVs. Isso configura com precisão o vínculo entre o PVC e o PV.kubectl create -f pvc-nas.yamlVeja a seguir um exemplo de arquivo YAML para criar um PVC estático.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasParâmetro
Observação
name
O nome do PVC.
accessModes
Configure o modo de acesso.
storage
Declare o uso da aplicação, que não pode exceder a capacidade total do PersistentVolume (PV).
matchLabels
Insira o rótulo do PV para associá-lo ao PV.
-
execute o seguinte comando para criar uma aplicação chamada nas-static e montar o PVC.
kubectl create -f nas.yamlVeja a seguir um exemplo do arquivo nas.yaml para criar a aplicação nas-static.
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nasParâmetro
Observação
mountPath
O caminho de montagem do NAS no contêiner.
claimName
O nome do PVC, usado para vinculá-lo.
-
Para visualize as informações do Pod, execute o comando:
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
verifique o armazenamento persistente do NAS
-
visualize a aplicação implantada e os arquivos do NAS.
-
execute o comando a seguir para visualize o nome da aplicação implantada.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Para listar os arquivos no caminho /data de qualquer aplicação, execute o comando abaixo. Neste exemplo, use o Pod chamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataO comando não retorna saída, indicando que não há arquivos no caminho /data.
-
-
execute o seguinte comando para criar um arquivo nas no caminho /data do Pod chamado
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
Para verifique os arquivos no caminho /data do Pod chamado
nas-static-5b5cdb85f6-n****, execute:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nas -
execute o comando a seguir para exclua o Pod.
kubectl delete pod nas-static-5b5cdb85f6-n**** -
Ao mesmo tempo, em outra janela, execute o comando abaixo para acompanhar o processo de exclua o Pod e a recriação dele pelo Kubernetes.
kubectl get pod -w -l app=nginx -
Verifique se os arquivos criados no NAS ainda existem após a exclusão do Pod.
-
execute o seguinte comando para visualize o nome do Pod recriado pelo Kubernetes.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Para listar os arquivos no caminho /data do Pod chamado
nas-static-5b5cdb85f6-n****, execute:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nasO arquivo nas ainda existe, o que indica a persistência dos dados no NAS.
-
verifique o armazenamento compartilhado
-
visualize os Pods que executam a aplicação implantada e os arquivos do NAS.
-
execute o comando a seguir para visualize os nomes dos Pods que executam a aplicação.
kubectl get podSaída esperada:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s -
Para listar os arquivos no caminho /data dos dois Pods, execute:
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
-
-
execute o comando abaixo para criar um arquivo nas no caminho /data de qualquer Pod.
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas -
execute o comando a seguir para visualize os arquivos no caminho /data dos dois Pods.
-
Para verifique os arquivos no caminho /data do Pod chamado
nas-static-5b5cdb85f6-n****, execute:kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataSaída esperada:
nas -
Para listar os arquivos no caminho /data do Pod chamado
nas-static-c5bb4746c-4****, execute:kubectl exec nas-static-c5bb4746c-4**** -- ls /dataSaída esperada:
nasSe o arquivo criado no caminho /data de um Pod estiver presente no caminho /data de ambos, isso indica que os dois Pods compartilham o mesmo NAS.
-