Monte um sistema de arquivos Apsara File Storage NAS (NAS) em um cluster Container Service for Kubernetes (ACK) usando o plug-in FlexVolume. Este tópico aborda os métodos via YAML e via console para criar um volume persistente (PV). Em seguida, orienta na criação de uma declaração de volume persistente (PVC) e na implantação de um pod que utiliza o armazenamento baseado em NAS.
Pré-requisitos
Antes de começar, verifique se você tem:
Um sistema de arquivos NAS com um destino de montagem adicionado. Crie-o no console do NAS. O destino de montagem e o cluster ACK devem estar na mesma virtual private cloud (VPC).console do NAS
FlexVolume atualizado para a versão mais recente no cluster.
kubectl configurado para conectar-se ao cluster. Para obter detalhes, consulte Obter o arquivo kubeconfig de um cluster e usar o kubectl para se conectar ao cluster.
Como funciona
A montagem de um sistema de arquivos NAS em um cluster ACK envolve três etapas:
Criar um PV — Como administrador do cluster, defina um PV respaldado pelo sistema de arquivos NAS. O PV ainda não está associado a nenhuma carga de trabalho.
Criar uma PVC — Reivindique o PV. O Kubernetes vincula a PVC a um PV correspondente com base na classe de armazenamento, no modo de acesso e na capacidade.
Implantar um pod — Referencie a PVC no Deployment. O sistema de arquivos NAS é montado no contêiner no caminho especificado.
Após a instalação do FlexVolume no cluster, ele gerencia as operações de montagem e desmontagem usando o protocolo NFS.
Etapa 1: Criar um PV
Crie um PV usando um arquivo YAML ou o console do ACK.
Opção 1: Arquivo YAML
Salve o conteúdo abaixo como nas-pv.yaml e execute kubectl apply -f nas-pv.yaml.
Substitua <mount-target-domain> pelo nome de domínio do destino de montagem NAS e <subdirectory> pelo caminho no sistema de arquivos NAS a ser montado (por exemplo, /k8s).
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nas
spec:
capacity:
storage: 5Gi
storageClassName: nas
accessModes:
- ReadWriteMany
flexVolume:
driver: "alicloud/nas"
options:
server: "<mount-target-domain>"
path: "<subdirectory>"
vers: "3"
options: "nolock,tcp,noresvport"
Verifique se o PV foi criado e está no estado Available:
kubectl get pv pv-nas
Saída esperada:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS AGE
pv-nas 5Gi RWX Retain Available nas 5s
Opção 2: Console do ACK
Faça login no console do ACK.
No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado ou em Details na coluna Actions.
No painel de navegação à esquerda, escolha Volumes > Persistent Volumes.
Clique em Create no canto superior direito.
Na caixa de diálogo Create PV, configure os parâmetros descritos na tabela a seguir.
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
PV type |
Selecione NAS. |
Sim |
— |
|
Volume name |
Nome exclusivo para o PV dentro do cluster. Exemplo: |
Sim |
— |
|
Volume plug-in |
Escolha Flexvolume. |
Sim |
— |
|
Capacity |
Capacidade do PV. Não pode exceder a capacidade do sistema de arquivos NAS. |
Sim |
— |
|
Access mode |
Modo de acesso. Sistemas de arquivos NAS suportam ReadWriteMany, permitindo que vários nós leiam e escrevam simultaneamente. |
Sim |
ReadWriteMany |
|
Mount target domain name |
Nome de domínio do destino de montagem NAS. Consulte Gerenciar destinos de montagem. |
Sim |
— |
|
Subdirectory |
Subdiretório no sistema de arquivos NAS, começando com |
Não |
Diretório raiz |
|
Permissions |
Permissões de acesso ao diretório montado, como |
Não |
Permissões originais |
|
chmod (Change Mode) |
Define como as alterações de permissão são aplicadas: Non-recursive (afeta apenas o diretório montado) ou Recursive (afeta o diretório montado e todos os subdiretórios e arquivos). Em versões do FlexVolume anteriores a V1.14.6.15-8d3b7e7-aliyun, as permissões são sempre aplicadas recursivamente. Na V1.14.6.15-8d3b7e7-aliyun e posteriores, use este parâmetro para controlar o escopo. |
Não |
— |
|
Version |
Versão do protocolo NFS. Recomenda-se NFSv3. Sistemas de arquivos Extreme NAS suportam apenas NFSv3. |
Não |
NFSv3 |
|
Labels |
Rótulos a serem adicionados ao PV. |
Não |
— |
Clique em Create.
Se você selecionar Recursive para um diretório montado com grande quantidade de arquivos, o comando chmod poderá ser executado por um longo período, causando falha na operação de montagem ou desmontagem.
Etapa 2: Criar uma PVC
Salve o conteúdo abaixo como nas-pvc.yaml e execute kubectl apply -f nas-pvc.yaml.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
storageClassName: nas
resources:
requests:
storage: 5Gi
O Kubernetes vincula a PVC ao PV pv-nas com base na correspondência de classe de armazenamento, modo de acesso e capacidade. Verifique o vínculo:
kubectl get pvc pvc-nas
Saída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-nas Bound pv-nas 5Gi RWX nas 5s
Um STATUS como Bound confirma que a PVC está vinculada ao PV.
Etapa 3: Implantar um pod
Salve o conteúdo abaixo como nas-pod.yaml e execute kubectl apply -f nas-pod.yaml.
O sistema de arquivos NAS é montado em /data dentro do contêiner.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nas-static
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: pvc-nas
mountPath: /data
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-nas
Verifique se o pod está em execução e se o volume está montado:
kubectl get pods -l app=nginx
Saída esperada:
NAME READY STATUS RESTARTS AGE
nas-static-xxxxxxxxx-xxxxx 1/1 Running 0 30s
Para confirmar que o sistema de arquivos NAS está montado dentro do contêiner, execute:
kubectl exec -it <pod-name> -- df -h | grep /data
A saída mostra o sistema de arquivos NAS montado em /data.