Criar e usar um volume com os Arquivos do Azure no AKS (Serviço de Kubernetes do Azure)
Um volume persistente representa uma parte do armazenamento que foi provisionada para uso com pods do Kubernetes. Você pode usar um volume persistente com um ou muitos pods e ele pode ser provisionado dinamicamente ou estaticamente. Se vários pods precisarem de acesso simultâneo ao mesmo volume de armazenamento, use o serviço Arquivos do Azure para se conectar por meio do protocolo SMB. Este artigo mostra como criar dinamicamente um compartilhamento de Arquivos do Azure para uso por vários pods em um cluster do Serviço de Kubernetes do Azure (AKS).
Este artigo mostra como:
- Trabalhe com um PV (volume persistente) dinâmico instalando o driver da CSI (Interface de Armazenamento de Contêiner) e criando dinamicamente um ou mais compartilhamentos de arquivo do Azure para anexar a um pod.
- Trabalhe com um PV estático criando um ou mais compartilhamentos de arquivo do Azure ou use um existente e anexe-o a um pod.
Para obter mais informações sobre o Kubernetes, veja Opções de armazenamento para aplicativos no AKS.
Antes de começar
- Você precisa de uma conta de armazenamento.
- Certifique-se de possuir a CLI do Azure versão 2.0.59 ou posterior instalada e configurada. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - Ao escolher entre compartilhamentos de arquivos Standard e Premium, é importante que você entenda o modelo de provisionamento e os requisitos do padrão de uso esperado que você pretende executar nos Arquivos do Azure. Para obter mais informações, consulte Escolhendo uma camada de desempenho dos Arquivos do Azure com base em padrões de uso.
Provisionar um volume dinamicamente
Esta seção fornece diretrizes para administradores de cluster que desejam provisionar um ou mais volumes persistentes que incluem detalhes de um ou mais compartilhamentos nos Arquivos do Azure. Uma PVC (declaração de volume persistente) usa o objeto de classe de armazenamento para provisionar dinamicamente um compartilhamento dos Arquivos do Azure.
Parâmetros de classe de armazenamento para PersistentVolumes dinâmicos
A tabela a seguir inclui parâmetros que você pode usar para definir uma classe de armazenamento customizada para seu PersistentVolumeClaim.
Nome | Significado | Valor disponível | Obrigatório | Valor padrão |
---|---|---|---|---|
accountAccessTier | Camada de acesso da conta de armazenamento | A conta Standard pode escolher Hot ou Cool e a conta Premium pode escolher somente Premium . |
Não | Vazio. Use a configuração padrão para diferentes tipos de conta de armazenamento. |
accountQuota | Limita a cota de uma conta. Você pode especificar uma cota máxima em GB (102400 GB por padrão). Se a conta exceder a cota especificada, o driver ignorará a seleção da conta. | Não | 102400 |
|
allowBlobPublicAccess | Permitir ou não permitir o acesso público a todos os blobs ou contêineres para a conta de armazenamento criada pelo driver. | true ou false |
Não | false |
disableDeleteRetentionPolicy | Especifique se deve desabilitar DeleteRetentionPolicy para a conta de armazenamento criada pelo driver. | true ou false |
Não | false |
enableLargeFileShares | Especifique se deseja usar uma conta de armazenamento com compartilhamentos de arquivos grandes habilitados ou não. Se esse sinalizador estiver definido como true e uma conta de armazenamento com compartilhamentos de arquivos grandes habilitados não existir, uma nova conta de armazenamento com compartilhamento de arquivos grandes é criada. Esse sinalizador deve ser usado com o SKU Standard, pois as contas de armazenamento criadas com SKU Premium têm a opção largeFileShares habilitada por padrão. |
true ou false |
Não | falso |
folderName | Especifique o nome da pasta no compartilhamento de arquivo do Azure. | Nome da pasta existente no compartilhamento de arquivo do Azure. | Não | Se o nome da pasta não existir no compartilhamento de arquivo, a montagem falha. |
getLatestAccount | Determina se é necessário obter a chave de conta mais recente com base no tempo de criação. Esse driver obtém a primeira chave por padrão. | true ou false |
Não | false |
local | Especifique a região do Azure da conta de armazenamento do Azure. | Por exemplo, eastus . |
Não | Se estiver vazio, o driver usa o mesmo nome de local que o cluster do AKS atual está usando. |
matchTags | Corresponder tags quando o driver tentar encontrar uma conta de armazenamento adequada. | true ou false |
Não | false |
networkEndpointType | Especifique o tipo de ponto de extremidade de rede para a conta de armazenamento criada pelo driver. Se privateEndpoint for especificado, um ponto de extremidade privado é criado para a conta de armazenamento. Para outros casos, um ponto de extremidade de serviço é criado por padrão. |
"",privateEndpoint |
Não | "" |
protocolo | Especifique o protocolo de compartilhamento de arquivo. | smb , nfs |
Não | smb |
requireInfraEncryption | Especifique se o serviço aplica ou não uma camada secundária de criptografia com chaves gerenciadas pela plataforma para dados inativos na conta de armazenamento criada pelo driver. | true ou false |
Não | false |
resourceGroup | Especifique o grupo de recursos para os Discos do Azure. | Nome do grupo de recursos existente | Não | Se estiver vazio, o driver usa o mesmo nome de grupo de recursos que o cluster do AKS atual está usando. |
selectRandomMatchingAccount | Determina se uma conta correspondente deve ser selecionada aleatoriamente. Por padrão, o driver sempre seleciona a primeira conta correspondente em ordem alfabética (observação: esse driver usa o cache de pesquisa de conta, o que resulta na distribuição desigual da criação de arquivos em várias contas). | true ou false |
Não | false |
servidor | Especificar o endereço do servidor da conta de armazenamento do Azure. | Endereço do servidor existente, por exemplo accountname.privatelink.file.core.windows.net . |
Não | Se estiver vazio, o driver usa o accountname.file.core.windows.net padrão ou outro endereço de conta de nuvem soberana. |
shareAccessTier | Camada de acesso do compartilhamento de arquivo | A conta de uso geral v2 pode escolher entre TransactionOptimized (padrão), Hot e Cool . Tipo de conta de armazenamento Premium somente para compartilhamentos de arquivos. |
Não | Vazio. Use a configuração padrão para diferentes tipos de conta de armazenamento. |
shareName | Especificar o nome do compartilhamento de arquivo do Azure. | Nome de compartilhamento de arquivo do Azure existente ou novo. | Não | Se estiver vazio, o driver gera um nome de compartilhamento de arquivo do Azure. |
shareNamePrefix | Especifique o prefixo de nome do compartilhamento de arquivo do Azure criado pelo driver. | O nome do compartilhamento pode conter somente letras minúsculas, números, hifens e o comprimento que deve ser inferior a 21 caracteres. | Não | |
skuName | Tipo de conta de armazenamento para Arquivos do Azure (alias: storageAccountType ) |
Standard_LRS , Standard_ZRS , Standard_GRS , Standard_RAGRS , Standard_RAGZRS ,Premium_LRS , Premium_ZRS |
Não | StandardSSD_LRS O tamanho mínimo do compartilhamento de arquivo para o tipo de conta Premium é de 100 GB. Há suporte para o tipo de conta ZRS em regiões limitadas. O compartilhamento de arquivos NFS dá suporte apenas ao tipo de conta Premium. |
storageAccount | Especifique um nome de armazenamento em disco do Azure. | storageAccountName | Não | Quando um nome de conta de armazenamento específico não for fornecido, o driver procurará uma conta de armazenamento adequada que corresponda às configurações da conta no mesmo grupo de recursos. Se ele não encontrar uma conta de armazenamento correspondente, criará uma nova. No entanto, se um nome de conta de armazenamento for especificado, a conta de armazenamento já deve existir. |
storageEndpointSuffix | Especifique o sufixo do ponto de extremidade de armazenamento do Azure. | core.windows.net , core.chinacloudapi.cn etc. |
Não | Se estiver vazio, o driver usa o sufixo de ponto de extremidade de armazenamento padrão de acordo com o ambiente de nuvem. Por exemplo, core.windows.net . |
marcas | As marcas são criadas em uma nova conta de armazenamento. | Formato da tag: 'foo=aaa,bar=bbb' | Não | "" |
--- | Os parâmetros a seguir servem apenas para o protocolo SMB | --- | --- | |
subscriptionID | Especificar a ID da assinatura do Azure em que o compartilhamento de arquivo do Azure é criado. | ID de assinatura do Azure | Não | Se não estiver vazio, resourceGroup deverá ser fornecido. |
storeAccountKey | Especifique se deseja armazenar a chave de conta para o segredo do Kubernetes. | true ou false false significa que o driver usa a identidade kubelet para obter a chave da conta. |
Não | true |
secretName | Especifique o nome do segredo para armazenar a chave da conta. | No | ||
secretNamespace | Especifique o namespace do segredo para armazenar a chave da conta. Observação: Se secretNamespace não for especificado, o segredo é criado no mesmo namespace que o pod. |
default ,kube-system , etc. |
No | Namespace PVC, por exemplo csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Especifique se deve usar a API do plano de dados para criação/exclusão/redimensionamento do compartilhamento de arquivos, o que pode resolver o problema de limitação da API SRP porque a API do plano de dados não tem quase nenhum limite, enquanto falha quando há configurações de firewall ou Vnet na conta de armazenamento. | true ou false |
Não | false |
--- | Os parâmetros a seguir são apenas para o protocolo NFS | --- | --- | |
mountPermissions | Permissões de pasta montadas. O padrão é 0777 . Se definido como 0 , o driver não executa chmod após a montagem |
0777 |
Não | |
rootSquashType | Especifique o comportamento de squashing raiz no compartilhamento. O padrão é NoRootSquash |
AllSquash , NoRootSquash , RootSquash |
Não | |
--- | Os parâmetros a seguir são apenas para a configuração de VNet. Por exemplo, NFS, ponto de extremidade privado | --- | --- | |
fsGroupChangePolicy | Indica como o driver altera a propriedade do volume. O pod securityContext.fsGroupChangePolicy é ignorado. |
OnRootMismatch (padrão), Always , None |
Não | OnRootMismatch |
subnetName | Nome da sub-rede | Nome da sub-rede existente do nó do agente. | No | Se estiver vazio, o driver usará o valor subnetName no arquivo de configuração de nuvem do Azure. |
vnetName | Nome da rede virtual | Nome da rede virtual existente. | No | Se estiver vazio, o driver usará o valor vnetName no arquivo de configuração de nuvem do Azure. |
vnetResourceGroup | Especifique o grupo de recursos da VNet em que a rede virtual está definida. | Nome do grupo de recursos existente. | No | Se estiver vazio, o driver usará o valor vnetResourceGroup no arquivo de configuração de nuvem do Azure. |
Criar uma classe de armazenamento
As classes de armazenamento definem como criar um compartilhamento de arquivos do Azure. Uma conta de armazenamento é criada automaticamente no grupo de recursos do nó para uso com a classe de armazenamento para reter os compartilhamentos dos Arquivos do Azure. Escolha das seguintes SKUs de redundância de armazenamento do Azure para skuName
:
Standard_LRS
: Armazenamento com redundância local (LRS) padrãoStandard_GRS
: Armazenamento com redundância geográfica (GRS) padrãoStandard_ZRS
: Armazenamento com redundância de zona (ZRS) padrãoStandard_RAGRS
: Armazenamento com redundância geográfica com acesso de leitura (RA-GRS) padrãoPremium_LRS
: Armazenamento com redundância local (LRS) premiumPremium_ZRS
: Armazenamento com redundância de zona (ZRS) premium
Observação
O compartilhamento de arquivos Premium mínimo é de 100 GB.
Para obter mais informações sobre classes de armazenamento do Kubernetes para o serviço Arquivos do Azure, veja Classes de armazenamento do Kubernetes.
Crie um arquivo chamado
azure-file-sc.yaml
e copie-o manifesto de exemplo a seguir. Para obter mais informações sobremountOptions
, veja a seção Opções de montagem.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: my-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks parameters: skuName: Premium_LRS
Crie a classe de armazenamento usando o comando
kubectl apply
.kubectl apply -f azure-file-sc.yaml
Criar uma declaração de volume persistente
Uma PVC (declaração de volume persistente) usa o objeto de classe de armazenamento para provisionar dinamicamente um compartilhamento de arquivos do Azure. Você pode usar o YAML a seguir para criar uma declaração de volume persistente de 100 GB de tamanho com acesso do tipo ReadWriteMany. Para obter mais informações sobre os modos de acesso, confira Volume persistente de Kubernetes.
Crie um arquivo chamado
azure-file-pvc.yaml
e copie no YAML a seguir. Certifique-se questorageClassName
corresponde à classe de armazenamento que você criou na etapa anterior.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Observação
Se estiver usando a SKU
Premium_LRS
para sua classe de armazenamento, o valor mínimo parastorage
deve ser100Gi
.Crie a declaração do volume persistente usando o comando
kubectl apply
.kubectl apply -f azure-file-pvc.yaml
Depois de concluído, o compartilhamento de arquivos é criado. Um segredo do Kubernetes que contém informações de conexão e credenciais também é criado. Use o comando
kubectl get
para exibir o status do PVC:kubectl get pvc my-azurefile
A saída do comando é semelhante ao seguinte exemplo:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Usar o volume persistente
O YAML a seguir cria um pod que usa a declaração de volume persistente my-azurefile para montar o compartilhamento dos Arquivos do Azure no caminho /mnt/azure. Para contêineres do Windows Server, especifique um mountPath
usando a convenção de caminho do Windows, como “D:” .
Crie um arquivo chamado
azure-pvc-files.yaml
e copie no YAML a seguir. Certifique-se queclaimName
corresponda ao PVC que você criou na última etapa.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: /mnt/azure name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: my-azurefile
Crie o pod usando o comando
kubectl apply
.kubectl apply -f azure-pvc-files.yaml
Agora você tem um pod em execução com seu compartilhamento dos Arquivos do Azure montado no diretório /mnt/azure. Essa configuração pode ser vista ao inspecionar o pod usando o comando
kubectl describe
. A seguinte saída de exemplo condensada mostra o volume montado no contêiner.Containers: mypod: Container ID: docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e Image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine Image ID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 State: Running Started: Fri, 01 Mar 2019 23:56:16 +0000 Ready: True Mounts: /mnt/azure from volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro) [...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: my-azurefile ReadOnly: false [...]
Opções de montagem
O valor padrão para fileMode
e dirMode
é 0777 para o Kubernetes versões 1.13.0 e superior. Se você estiver criando dinamicamente o volume persistente com uma classe de armazenamento, você pode especificar as opções de montagem no objeto da classe de armazenamento. Para obter mais informações, confira Opções de montagem. O exemplo a seguir define 0777:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
skuName: Premium_LRS
Uso de marcas do Azure
Para mais informações como usar as marcas do Azure, confira Usar as marcas do Azure no AKS (Serviço de Kubernetes do Azure).
Provisionar um volume estaticamente
Esta seção fornece diretrizes para administradores de cluster que desejam criar um ou mais volumes persistentes que incluem detalhes de um compartilhamento dos Arquivos do Azure existente a ser usado com uma carga de trabalho.
Parâmetros de provisionamento estático para PersistentVolume
A tabela a seguir inclui parâmetros que você pode usar para definir um PersistentVolume.
Nome | Significado | Valor disponível | Obrigatório | Valor padrão |
---|---|---|---|---|
volumeAttributes.resourceGroup | Especifique o nome do grupo de recursos do Azure. | myResourceGroup | No | Se estiver vazio, o driver usa o mesmo nome de grupo de recursos que o cluster atual está usando. |
volumeAttributes.storageAccount | Especifique o nome de uma conta de armazenamento do Azure existente. | storageAccountName | Yes | |
volumeAttributes.shareName | Especifique o nome do compartilhamento de arquivo do Azure. | fileShareName | Sim | |
volumeAttributes.folderName | Especifique o nome de uma pasta no compartilhamento de arquivo do Azure. | folderName | No | Se o nome da pasta não existir no compartilhamento de arquivo, a montagem falhará. |
volumeAttributes.protocol | Especifique o protocolo de compartilhamento de arquivo. | smb , nfs |
Não | smb |
volumeAttributes.server | Especificar o endereço do servidor da conta de armazenamento do Azure | Endereço do servidor existente, por exemplo accountname.privatelink.file.core.windows.net . |
Não | Se estiver vazio, o driver usa o accountname.file.core.windows.net padrão ou outro endereço de conta de nuvem soberana. |
--- | Os parâmetros a seguir servem apenas para o protocolo SMB | --- | --- | --- |
volumeAttributes.secretName | Especifique o nome de um segredo que armazena o nome e a chave da conta. | No | ||
volumeAttributes.secretNamespace | Especifique o namespace de um segredo. | default ,kube-system , etc. |
No | Namespace PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Especifique o nome de um segredo que armazena o nome e a chave da conta. | Nome de segredo existente. | Não | Se estiver vazio, o driver usará a identidade do kubelet para obter a chave da conta. |
nodeStageSecretRef.namespace | Especifique o namespace de um segredo. | Namespace do Kubernetes | Não | |
--- | Os parâmetros a seguir são apenas para o protocolo NFS | --- | --- | --- |
volumeAttributes.fsGroupChangePolicy | Indica como o driver altera a propriedade de um volume. O pod securityContext.fsGroupChangePolicy é ignorado. |
OnRootMismatch (padrão), Always , None |
Não | OnRootMismatch |
volumeAttributes.mountPermissions | Especifique permissões de pasta montadas. O padrão é 0777 |
No |
Criar um compartilhamento de arquivo do Azure
Antes de usar um compartilhamento dos Arquivos do Azure como um volume Kubernetes, você deve criar uma conta de Armazenamento do Azure e o compartilhamento de arquivos.
Obtenha o nome do grupo de recursos usando o comando
az aks show
com o parâmetro--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
A saída do comando é semelhante ao seguinte exemplo:
MC_myResourceGroup_myAKSCluster_eastus
Crie uma conta de armazenamento usando o comando
az storage account create
com o parâmetro--sku
. O comando a seguir cria uma conta de armazenamento usando a SKUStandard_LRS
. Substitua os seguintes espaços reservados:myAKSStorageAccount
pelo nome da conta de armazenamentonodeResourceGroupName
pelo nome do grupo de recursos no qual os nós de cluster do AKS estão hospedadoslocation
pelo nome da região na qual o recurso deve ser criado. Deve ser a mesma região que os nós de cluster do AKS.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
Exporte a cadeia de conexão como uma variável de ambiente usando o comando a seguir, que você usa para criar o compartilhamento de arquivos.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Crie o compartilhamento de arquivo usando o comando
az storage share create
. Certifique-se de substituirshareName
com seu nome do compartilhamento.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Exporte a chave da conta de armazenamento como uma variável de ambiente usando o comando a seguir.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Ecoe o nome e a chave da conta de armazenamento usando o comando a seguir. Copie essas informações, pois você precisa desses valores ao criar o volume do Kubernetes.
echo Storage account key: $STORAGE_KEY
Criar um segredo do Kubernetes
O Kubernetes precisa de credenciais para acessar o compartilhamento de arquivos criado na etapa anterior. Essas credenciais são armazenadas em um segredo Kubernetes, que é referenciado quando você cria um pod Kubernetes.
Crie o segredo usando o comando
kubectl create secret
. O exemplo a seguir cria um segredo chamado azure-secret e preenche os campos azurestorageaccountname e assszurestorageaccountkey da etapa anterior. Para usar uma conta de armazenamento existente do Azure, forneça o nome da conta e a chave.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Montar o compartilhamento de arquivo como um volume persistente
Crie um novo arquivo chamado
azurefiles-pv.yaml
e copie o conteúdo a seguir. Emcsi
, atualizarresourceGroup
,volumeHandle
eshareName
. O valor padrão defileMode
edirMode
é 0777.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: file.csi.azure.com name: azurefile spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: azurefile-csi csi: driver: file.csi.azure.com volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}" # make sure this volumeid is unique for every identical share in the cluster volumeAttributes: resourceGroup: resourceGroupName # optional, only set this when storage account is not in the same resource group as node shareName: aksshare nodeStageSecretRef: name: azure-secret namespace: default mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - nosharesock - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Crie o volume persistente usando o comando
kubectl create
.kubectl create -f azurefiles-pv.yaml
Crie um novo arquivo chamado azurefiles-mount-options-pvc.yaml e copie o conteúdo a seguir.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Crie o PersistentVolumeClaim usando o comando
kubectl apply
.kubectl apply -f azurefiles-mount-options-pvc.yaml
Verifique se o PersistentVolumeClaim foi criado e associado ao PersistentVolume usando o comando
kubectl get
.kubectl get pvc azurefile
A saída do comando é semelhante ao seguinte exemplo:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Atualize sua especificação de contêiner para fazer referência ao PersistentVolumeClaim e ao pod no arquivo YAML. Por exemplo:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Uma especificação de pod não pode ser atualizada no local, portanto, exclua o pod usando o comando e recrie-o
kubectl delete
usando o comandokubectl apply
.kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Montar o compartilhamento de arquivo como um volume embutido
Observação
Para evitar problemas de desempenho, recomendamos que você use um volume persistente em vez de um volume embutido quando vários pods estiverem acessando o mesmo compartilhamento de arquivos. O volume embutido só pode acessar segredos no mesmo namespace que o pod. Para especificar um namespace de segredo diferente, use um volume persistente.
Para montar o compartilhamento de arquivos dos Arquivos do Azure em seu pod, você configura o volume na especificação do contêiner.
- Crie um novo arquivo chamado
azure-files-pod.yaml
e copie o conteúdo a seguir. Se você tiver alterado o nome do compartilhamento de arquivo ou o nome do segredo, atualize oshareName
e osecretName
. Você também pode atualizar omountPath
, que é o caminho em que os o compartilhamento de arquivos é montado no pod. Para contêineres do Windows Server, especifique ummountPath
usando a convenção de caminho do Windows, como “D:” .
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine'
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: azure
mountPath: /mnt/azure
readOnly: false
volumes:
- name: azure
csi:
driver: file.csi.azure.com
volumeAttributes:
secretName: azure-secret # required
shareName: aksshare # required
mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl' # optional
Crie o pod usando o comando
kubectl apply
.kubectl apply -f azure-files-pod.yaml
Agora você tem um pod em execução com um compartilhamento dos Arquivos do Azure montado em /mnt/azure. Você pode verificar se o compartilhamento foi montado com êxito usando o comando
kubectl describe
.kubectl describe pod mypod
Próximas etapas
Para parâmetros de driver CSI dos Arquivos do Azure, confira Parâmetros de driver CSI.
Para obter as práticas recomendadas associadas, veja Práticas recomendadas para armazenamento e backups no AKS.
Azure Kubernetes Service