Azure NetApp Files SMB-volumes inrichten voor Azure Kubernetes Service
Nadat u Azure NetApp Files voor Azure Kubernetes Service hebt geconfigureerd, kunt u Azure NetApp Files-volumes inrichten voor Azure Kubernetes Service.
Azure NetApp Files ondersteunt volumes met NFS (NFSv3 of NFSv4.1), SMB en dual-protocol (NFSv3 en SMB, of NFSv4.1 en SMB).
- In dit artikel worden details beschreven voor het statisch of dynamisch inrichten van SMB-volumes.
- Zie Azure NetApp Files NFS-volumes inrichten voor Azure Kubernetes Service voor informatie over het inrichten van NFS-volumes statisch of dynamisch.
- Zie Azure NetApp Files-volumes met twee protocollen inrichten voor Azure Kubernetes Service voor meer informatie over het statisch inrichten van volumes met twee protocollen
Statisch configureren voor toepassingen die gebruikmaken van SMB-volumes
In deze sectie wordt beschreven hoe u een SMB-volume maakt in Azure NetApp Files en het volume statisch beschikbaar maakt voor Kubernetes, zodat een containertoepassing deze kan gebruiken.
Een SMB-volume maken
Definieer variabelen voor later gebruik. Vervang myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname en virtnetid door een geschikte waarde voor uw omgeving. Het bestandspad moet uniek zijn binnen alle ANF-accounts.
RESOURCE_GROUP="myresourcegroup" LOCATION="mylocation" ANF_ACCOUNT_NAME="myaccountname" POOL_NAME="mypool1" SERVICE_LEVEL="premium" # Valid values are standard, premium, and ultra UNIQUE_FILE_PATH="myfilepath" VOLUME_SIZE_GIB="myvolsize" VOLUME_NAME="myvolname" VNET_ID="vnetId" SUBNET_ID="anfSubnetId"
Maak een volume met behulp van de
az netappfiles volume create
opdracht.az netappfiles volume create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --name "$VOLUME_NAME" \ --service-level $SERVICE_LEVEL \ --vnet $VNET_ID \ --subnet $SUBNET_ID \ --usage-threshold $VOLUME_SIZE_GIB \ --file-path $UNIQUE_FILE_PATH \ --protocol-types CIFS
Een geheim maken met de domeinreferenties
Maak een geheim op uw AKS-cluster voor toegang tot de Active Directory-server (AD) met behulp van de
kubectl create secret
opdracht. Dit geheim wordt gebruikt door het permanente Kubernetes-volume voor toegang tot het SMB-volume van Azure NetApp Files. Gebruik de volgende opdracht om het geheim te maken, waarbij uUSERNAME
uw gebruikersnaam vervangt doorPASSWORD
uw wachtwoord enDOMAIN_NAME
door uw domeinnaam voor uw AD.kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
Controleer of het geheim is gemaakt.
kubectl get secret NAME TYPE DATA AGE smbcreds Opaque 2 20h
Een SMB CSI-stuurprogramma installeren
U moet een CSI-stuurprogramma (Container Storage Interface) installeren om een Kubernetes SMB PersistentVolume
te maken.
Installeer het SMB CSI-stuurprogramma op uw cluster met behulp van Helm. Zorg ervoor dat u de
windows.enabled
optie instelt optrue
:helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.13.0 --set windows.enabled=true
Zie De hoofdversie van het SMB CSI-stuurprogramma installeren op een Kubernetes-cluster voor andere methoden voor het installeren van het SMB CSI-stuurprogramma.
Controleer of de
csi-smb
controllerpod wordt uitgevoerd en elk werkknooppunt een pod heeft die wordt uitgevoerd met behulp van dekubectl get pods
opdracht:kubectl get pods -n kube-system | grep csi-smb csi-smb-controller-68df7b4758-xf2m9 3/3 Running 0 3m46s csi-smb-node-s6clj 3/3 Running 0 3m47s csi-smb-node-win-tfxvk 3/3 Running 0 3m47s
Het permanente volume maken
Vermeld de details van uw volume met behulp van
az netappfiles volume show
. Vervang de variabelen door de juiste waarden uit uw Azure NetApp Files-account en -omgeving als deze niet zijn gedefinieerd in een vorige stap.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
De volgende uitvoer is een voorbeeld van de bovenstaande opdracht die wordt uitgevoerd met echte waarden.
{ ... "creationToken": "myvolname", ... "mountTargets": [ { ... " "smbServerFqdn": "ANF-1be3.contoso.com", ... } ], ... }
Maak een bestand met de naam
pv-smb.yaml
en kopieer dit in de volgende YAML. Vervang indien nodig doormyvolname
decreationToken
en vervang deze doorANF-1be3.contoso.com\myvolname
de waarde vansmbServerFqdn
de vorige stap. Zorg ervoor dat u uw AD-referentiesgeheim opneemt, samen met de naamruimte waar het geheim zich bevindt dat u in een vorige stap hebt gemaakt.apiVersion: v1 kind: PersistentVolume metadata: name: anf-pv-smb spec: storageClassName: "" capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain mountOptions: - dir_mode=0777 - file_mode=0777 - vers=3.0 csi: driver: smb.csi.k8s.io readOnly: false volumeHandle: myvolname # make sure it's a unique name in the cluster volumeAttributes: source: \\ANF-1be3.contoso.com\myvolname nodeStageSecretRef: name: smbcreds namespace: default
Maak het permanente volume met behulp van de
kubectl apply
opdracht:kubectl apply -f pv-smb.yaml
Controleer of de status van het permanente volume beschikbaar is met behulp van de
kubectl describe
opdracht:kubectl describe pv pv-smb
Een permanente volumeclaim maken
Maak een bestandsnaam
pvc-smb.yaml
en kopieer deze in de volgende YAML.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany volumeName: anf-pv-smb storageClassName: "" resources: requests: storage: 100Gi
Maak de permanente volumeclaim met behulp van de
kubectl apply
opdracht:kubectl apply -f pvc-smb.yaml
Controleer of de status van de permanente volumeclaim afhankelijk is met behulp van de kubectl describe-opdracht:
kubectl describe pvc pvc-smb
Koppelen met een pod
Maak een bestand met de naam
iis-smb.yaml
en kopieer dit in de volgende YAML. Dit bestand wordt gebruikt om een Internet Information Services-pod te maken om het volume aan pad te/inetpub/wwwroot
koppelen.apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: web spec: nodeSelector: "kubernetes.io/os": windows volumes: - name: smb persistentVolumeClaim: claimName: anf-pvc-smb containers: - name: web image: mcr.microsoft.com/windows/servercore/iis:windowsservercore resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 volumeMounts: - name: smb mountPath: "/inetpub/wwwroot" readOnly: false
Maak de pod met behulp van de opdracht kubectl apply :
kubectl apply -f iis-smb.yaml
Controleer of de pod wordt uitgevoerd en
/inetpub/wwwroot
is gekoppeld vanuit SMB met behulp van de opdracht kubectl describe :kubectl describe pod iis-pod
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
Name: iis-pod Namespace: default Priority: 0 Node: akswin000001/10.225.5.246 Start Time: Fri, 05 May 2023 09:34:41 -0400 Labels: app=web Annotations: <none> Status: Running IP: 10.225.5.248 IPs: IP: 10.225.5.248 Containers: web: Container ID: containerd://39a1659b6a2b6db298df630237b2b7d959d1b1722edc81ce9b1bc7f06237850c Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409 Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 05 May 2023 09:34:55 -0400 Ready: True Restart Count: 0 Limits: cpu: 1 memory: 800M Requests: cpu: 1 memory: 800M Environment: <none> Mounts: /inetpub/wwwroot from smb (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mbnv8 (ro) ...
Controleer of het volume is gekoppeld op de pod met behulp van de opdracht kubectl exec om verbinding te maken met de pod en gebruik
dir
vervolgens de opdracht in de juiste map om te controleren of het volume is gekoppeld en de grootte overeenkomt met de grootte van het volume dat u hebt ingericht.kubectl exec -it iis-pod –- cmd.exe
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
Microsoft Windows [Version 10.0.20348.1668] (c) Microsoft Corporation. All rights reserved. C:\>cd /inetpub/wwwroot C:\inetpub\wwwroot>dir Volume in drive C has no label. Volume Serial Number is 86BB-AA55 Directory of C:\inetpub\wwwroot 05/04/2023 08:15 PM <DIR> . 05/04/2023 08:15 PM <DIR> .. 0 File(s) 0 bytes 2 Dir(s) 107,373,838,336 bytes free
Dynamisch configureren voor toepassingen die gebruikmaken van SMB-volumes
In deze sectie wordt beschreven hoe u Astra Trident gebruikt om dynamisch een SMB-volume te maken in Azure NetApp Files en deze automatisch te koppelen aan een in een container geplaatste Windows-toepassing.
Astra Trident installeren
Als u SMB-volumes dynamisch wilt inrichten, moet u Astra Trident versie 22.10 of hoger installeren. Voor het dynamisch inrichten van SMB-volumes zijn Windows-werkknooppunten vereist.
Astra Trident is de dynamische opslaginrichting van NetApp die speciaal is gebouwd voor Kubernetes. Vereenvoudig het verbruik van opslag voor Kubernetes-toepassingen met behulp van het CSI-stuurprogramma (Industry Standard Container Storage Interface) van Astra Trident. Astra Trident implementeert op Kubernetes-clusters als pods en biedt dynamische opslagindelingsservices voor uw Kubernetes-workloads.
Trident kan worden geïnstalleerd met behulp van de Trident-operator (handmatig of met helm) of tridentctl
. Zie de installatiehandleiding voor meer informatie over deze installatiemethoden en hoe ze werken.
Astra Trident installeren met Helm
Helm moet op uw werkstation zijn geïnstalleerd om Astra Trident te installeren met behulp van deze methode. Zie de Astra Trident Install Guide voor andere methoden voor het installeren van Astra Trident. Als u Windows-werkknooppunten in het cluster hebt, moet u windows met een installatiemethode inschakelen.
Als u Astra Trident wilt installeren met behulp van Helm voor een cluster met Windows-werkknooppunten, voert u de volgende opdrachten uit:
helm repo add netapp-trident https://netapp.github.io/trident-helm-chart helm install trident netapp-trident/trident-operator --version 23.04.0 --create-namespace --namespace trident –-set windows=true
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
NAME: trident LAST DEPLOYED: Fri May 5 14:23:05 2023 NAMESPACE: trident STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes. Your release is named 'trident' and is installed into the 'trident' namespace. Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster. To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident. To learn more about the release, try: $ helm status trident $ helm get all trident
Voer de volgende
kubectl describe
opdracht uit om te bevestigen dat Astra Trident is geïnstalleerd:kubectl describe torc trident
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
Name: trident Namespace: Labels: app.kubernetes.io/managed-by=Helm Annotations: meta.helm.sh/release-name: trident meta.helm.sh/release-namespace: trident API Version: trident.netapp.io/v1 Kind: TridentOrchestrator Metadata: ... Spec: IPv6: false Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: <nil> Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent k8sTimeout: 0 Kubelet Dir: <nil> Log Format: text Log Layers: <nil> Log Workflows: <nil> Namespace: trident Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Windows: true Status: Current Installation Params: IPv6: false Autosupport Hostname: Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: Autosupport Serial Number: Debug: false Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent Image Pull Secrets: Image Registry: k8sTimeout: 30 Kubelet Dir: /var/lib/kubelet Log Format: text Log Layers: Log Level: info Log Workflows: Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Message: Trident installed Namespace: trident Status: Installed Version: v23.04.0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Installing 74s trident-operator.netapp.io Installing Trident Normal Installed 46s trident-operator.netapp.io Trident installed
Een back-end maken
Er moet een back-end worden gemaakt om Astra Trident te instrueren over het Azure NetApp Files-abonnement en waar het volumes moet maken. Zie de configuratieopties en voorbeelden voor back-end van Azure NetApp Files voor meer informatie over back-ends.
Maak een bestand met de naam
backend-secret-smb.yaml
en kopieer dit in de volgende YAML. Wijzig deClient ID
enclientSecret
de juiste waarden voor uw omgeving.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Maak een bestand met de naam
backend-anf-smb.yaml
en kopieer dit in de volgende YAML. Wijzig deClientID
,clientSecret
,subscriptionID
, , ,tenantID
enlocation
inserviceLevel
de juiste waarden voor uw omgeving. DetenantID
,clientID
enclientSecret
zijn te vinden vanuit een toepassingsregistratie in Microsoft Entra ID met voldoende machtigingen voor de Azure NetApp Files-service. De toepassingsregistratie bevat de rol Eigenaar of Inzender die vooraf is gedefinieerd door Azure. De Azure-locatie moet ten minste één gedelegeerd subnet bevatten. DeserviceLevel
moet overeenkomen met deserviceLevel
geconfigureerde voor de capaciteitspool in Azure NetApp Files configureren voor AKS-workloads.apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-anf-smb spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e tenantID: aaaabbbb-0000-cccc-1111-dddd2222eeee location: eastus serviceLevel: Premium credentials: name: backend-tbc-anf-secret nasType: smb
Maak het geheim en de back-end met behulp van de
kubectl apply
opdracht.Maak het geheim :
kubectl apply -f backend-secret.yaml -n trident
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
secret/backend-tbc-anf-secret created
Maak de back-end:
kubectl apply -f backend-anf.yaml -n trident
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Controleer of de back-end is gemaakt door de volgende opdracht uit te voeren:
kubectl get tridentbackends -n trident
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
NAME BACKEND BACKEND UUID tbe-9shfq backend-tbc-anf-smb 09cc2d43-8197-475f-8356-da7707bae203
Een geheim maken met de domeinreferenties voor SMB
Maak een geheim op uw AKS-cluster voor toegang tot de AD-server met behulp van de
kubectl create secret
opdracht. Deze informatie wordt gebruikt door het permanente Kubernetes-volume voor toegang tot het SMB-volume van Azure NetApp Files. Gebruik de volgende opdracht, waarbij uDOMAIN_NAME\USERNAME
uw domeinnaam en gebruikersnaam enPASSWORD
uw wachtwoord vervangt.kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME –from-literal=password="PASSWORD"
Controleer of het geheim is gemaakt.
kubectl get secret
De uitvoer lijkt op het volgende voorbeeld:
NAME TYPE DATA AGE smbcreds Opaque 2 2h
Een opslagklasse maken
Een opslagklasse wordt gebruikt om te definiëren hoe een opslageenheid dynamisch wordt gemaakt met een permanent volume. Als u Azure NetApp Files-volumes wilt gebruiken, moet er een opslagklasse worden gemaakt.
Maak een bestand met de naam
anf-storageclass-smb.yaml
en kopieer dit in de volgende YAML.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: anf-sc-smb provisioner: csi.trident.netapp.io allowVolumeExpansion: true parameters: backendType: "azure-netapp-files" trident.netapp.io/nasType: "smb" csi.storage.k8s.io/node-stage-secret-name: "smbcreds" csi.storage.k8s.io/node-stage-secret-namespace: "default"
Maak de opslagklasse met behulp van de
kubectl apply
opdracht:kubectl apply -f anf-storageclass-smb.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
storageclass/anf-sc-smb created
Voer de
kubectl get
opdracht uit om de status van de opslagklasse weer te geven:kubectl get sc anf-sc-smb NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE anf-sc-smb csi.trident.netapp.io Delete Immediate true 13s
Een PVC maken
Een permanente volumeclaim (PVC) is een aanvraag voor opslag door een gebruiker. Na het maken van een permanente volumeclaim maakt Astra Trident automatisch een Azure NetApp Files SMB-share en maakt deze beschikbaar voor Kubernetes-workloads die moeten worden gebruikt.
Maak een bestand met de naam
anf-pvc-smb.yaml
en kopieer de volgende YAML. In dit voorbeeld wordt een 100 GiB-volume gemaakt metReadWriteMany
toegang en wordt de opslagklasse gebruikt die is gemaakt in Een opslagklasse maken.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: anf-sc-smb
Maak de permanente volumeclaim met de
kubectl apply
opdracht:kubectl apply -f anf-pvc-smb.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
persistentvolumeclaim/anf-pvc-smb created
Als u informatie over de permanente volumeclaim wilt weergeven, voert u de
kubectl get
opdracht uit:kubectl get pvc
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc-smb Bound pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX anf-sc-smb 5m38s
Voer de volgende
kubectl get
opdracht uit om het permanente volume weer te geven dat is gemaakt door Astra Trident:kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX Delete Bound default/anf-pvc-smb anf-sc-smb 5m52s
Het permanente volume gebruiken
Nadat het PVC is gemaakt, kan een pod worden gesponnen tot toegang tot het Azure NetApp Files-volume. Het volgende manifest kan worden gebruikt om een IIS-pod (Internet Information Services) te definiëren die de Azure NetApp Files SMB-share koppelt die in de vorige stap is gemaakt. In dit voorbeeld wordt het volume gekoppeld aan /inetpub/wwwroot
.
Maak een bestand met de naam
anf-iis-pod.yaml
en kopieer in de volgende YAML:apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: web spec: nodeSelector: "kubernetes.io/os": windows volumes: - name: smb persistentVolumeClaim: claimName: anf-pvc-smb containers: - name: web image: mcr.microsoft.com/windows/servercore/iis:windowsservercore resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 volumeMounts: - name: smb mountPath: "/inetpub/wwwroot" readOnly: false
Maak de implementatie met behulp van de
kubectl apply
opdracht:kubectl apply -f anf-iis-deploy-pod.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
pod/iis-pod created
Controleer of de pod wordt uitgevoerd en is gekoppeld via SMB met
/inetpub/wwwroot
behulp van dekubectl describe
opdracht:kubectl describe pod iis-pod
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
Name: iis-pod Namespace: default Priority: 0 Node: akswin000001/10.225.5.246 Start Time: Fri, 05 May 2023 15:16:36 -0400 Labels: app=web Annotations: <none> Status: Running IP: 10.225.5.252 IPs: IP: 10.225.5.252 Containers: web: Container ID: containerd://1e4959f2b49e7ad842b0ec774488a6142ac9152ca380c7ba4d814ae739d5ed3e Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409 Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 05 May 2023 15:16:44 -0400 Ready: True Restart Count: 0 Limits: cpu: 1 memory: 800M Requests: cpu: 1 memory: 800M Environment: <none> Mounts: /inetpub/wwwroot from smb (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zznzs (ro)
Controleer of uw volume is gekoppeld op de pod met behulp van kubectl exec om verbinding te maken met de pod. Gebruik vervolgens de
dir
opdracht in de juiste map om te controleren of het volume is gekoppeld en de grootte overeenkomt met de grootte van het volume dat u hebt ingericht.kubectl exec -it iis-pod –- cmd.exe
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
Microsoft Windows [Version 10.0.20348.1668] (c) Microsoft Corporation. All rights reserved. C:\>cd /inetpub/wwwroot C:\inetpub\wwwroot>dir Volume in drive C has no label. Volume Serial Number is 86BB-AA55 Directory of C:\inetpub\wwwroot 05/05/2023 01:38 AM <DIR> . 05/05/2023 01:38 AM <DIR> .. 0 File(s) 0 bytes 2 Dir(s) 107,373,862,912 bytes free C:\inetpub\wwwroot>exit
Volgende stappen
Astra Trident ondersteunt veel functies met Azure NetApp Files. Zie voor meer informatie:
Azure Kubernetes Service