Etablera Azure NetApp Files SMB-volymer för Azure Kubernetes Service
När du har konfigurerat Azure NetApp Files för Azure Kubernetes Service kan du etablera Azure NetApp Files-volymer för Azure Kubernetes Service.
Azure NetApp Files stöder volymer med NFS (NFSv3 eller NFSv4.1), SMB och dubbla protokoll (NFSv3 och SMB eller NFSv4.1 och SMB).
- I den här artikeln beskrivs information om hur du etablerar SMB-volymer statiskt eller dynamiskt.
- Information om hur du etablerar NFS-volymer statiskt eller dynamiskt finns i Etablera Azure NetApp Files NFS-volymer för Azure Kubernetes Service.
- Information om hur du etablerar volymer med dubbla protokoll statiskt finns i Etablera Azure NetApp Files-volymer med dubbla protokoll för Azure Kubernetes Service
Konfigurera statiskt för program som använder SMB-volymer
Det här avsnittet beskriver hur du skapar en SMB-volym på Azure NetApp Files och exponerar volymen statiskt för Kubernetes för ett containerbaserat program att använda.
Skapa en SMB-volym
Definiera variabler för senare användning. Ersätt myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname och virtnetid med ett lämpligt värde för din miljö. Filsökvägen måste vara unik inom alla ANF-konton.
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"
Skapa en volym med kommandot
az netappfiles volume create
.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
Skapa en hemlighet med domänautentiseringsuppgifterna
Skapa en hemlighet i AKS-klustret för att få åtkomst till Active Directory-servern (AD) med hjälp av
kubectl create secret
kommandot . Den här hemligheten används av Kubernetes beständiga volym för att få åtkomst till Azure NetApp Files SMB-volymen. Använd följande kommando för att skapa hemligheten, ersättaUSERNAME
med ditt användarnamn,PASSWORD
med ditt lösenord ochDOMAIN_NAME
med ditt domännamn för din AD.kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
Kontrollera att hemligheten har skapats.
kubectl get secret NAME TYPE DATA AGE smbcreds Opaque 2 20h
Installera en SMB CSI-drivrutin
Du måste installera en CSI-drivrutin (Container Storage Interface) för att skapa en Kubernetes SMB PersistentVolume
.
Installera SMB CSI-drivrutinen i klustret med helm. Se till att ange
windows.enabled
alternativet tilltrue
: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
Andra metoder för att installera SMB CSI-drivrutinen finns i Installera SMB CSI-drivrutinshuvudversion på ett Kubernetes-kluster.
Kontrollera att kontrollantpodden körs och att
csi-smb
varje arbetsnod har en podd som körs med kommandotkubectl get pods
: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
Skapa den beständiga volymen
Visa en lista med information om volymen med hjälp av
az netappfiles volume show
. Ersätt variablerna med lämpliga värden från ditt Azure NetApp Files-konto och din miljö om de inte har definierats i ett tidigare steg.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Följande utdata är ett exempel på kommandot ovan som körs med verkliga värden.
{ ... "creationToken": "myvolname", ... "mountTargets": [ { ... " "smbServerFqdn": "ANF-1be3.contoso.com", ... } ], ... }
Skapa en fil med namnet
pv-smb.yaml
och kopiera i följande YAML. Om det behövs ersättermyvolname
du medcreationToken
och ersätterANF-1be3.contoso.com\myvolname
med värdetsmbServerFqdn
för från föregående steg. Se till att inkludera din AD-autentiseringsuppgifter tillsammans med namnområdet där hemligheten finns som du skapade i ett tidigare steg.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
Skapa den beständiga volymen med kommandot
kubectl apply
:kubectl apply -f pv-smb.yaml
Kontrollera att statusen för den beständiga volymen är Tillgänglig med kommandot
kubectl describe
:kubectl describe pv pv-smb
Skapa ett beständigt volymanspråk
Skapa ett filnamn
pvc-smb.yaml
och kopiera i följande YAML.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany volumeName: anf-pv-smb storageClassName: "" resources: requests: storage: 100Gi
Skapa det beständiga volymanspråket
kubectl apply
med kommandot :kubectl apply -f pvc-smb.yaml
Kontrollera att statusen för det beständiga volymanspråket är Bound med hjälp av kommandot kubectl describe:
kubectl describe pvc pvc-smb
Montera med en podd
Skapa en fil med namnet
iis-smb.yaml
och kopiera i följande YAML. Den här filen används för att skapa en Internet Information Services-podd för att montera volymen till sökvägen/inetpub/wwwroot
.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
Skapa podden med kommandot kubectl apply :
kubectl apply -f iis-smb.yaml
Kontrollera att podden körs och
/inetpub/wwwroot
är monterad från SMB med hjälp av kommandot kubectl describe:kubectl describe pod iis-pod
Kommandots utdata liknar följande exempel:
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) ...
Kontrollera att volymen har monterats på podden med hjälp av kommandot kubectl exec för att ansluta till podden och använd
dir
sedan kommandot i rätt katalog för att kontrollera om volymen är monterad och storleken matchar storleken på den volym som du etablerade.kubectl exec -it iis-pod –- cmd.exe
Kommandots utdata liknar följande exempel:
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
Konfigurera dynamiskt för program som använder SMB-volymer
Det här avsnittet beskriver hur du använder Astra Trident för att dynamiskt skapa en SMB-volym på Azure NetApp Files och automatiskt montera den i ett containerbaserat Windows-program.
Installera Astra Trident
För att dynamiskt etablera SMB-volymer måste du installera Astra Trident version 22.10 eller senare. Dynamisk etablering av SMB-volymer kräver Windows-arbetsnoder.
Astra Trident är NetApps dynamiska lagringsetabler som är specialbyggd för Kubernetes. Förenkla förbrukningen av lagring för Kubernetes-program med hjälp av Astra Tridents CSI-drivrutin (Container Storage Interface) av branschstandard. Astra Trident distribuerar på Kubernetes-kluster som poddar och tillhandahåller dynamiska lagringsorkestreringstjänster för dina Kubernetes-arbetsbelastningar.
Trident kan installeras med Trident-operatorn (manuellt eller med Helm) eller tridentctl
. Mer information om dessa installationsmetoder och hur de fungerar finns i installationsguiden.
Installera Astra Trident med Helm
Helm måste installeras på din arbetsstation för att installera Astra Trident med den här metoden. För andra metoder för att installera Astra Trident, se Astra Trident Install Guide. Om du har Windows-arbetsnoder i klustret måste du aktivera windows med valfri installationsmetod.
Om du vill installera Astra Trident med Helm för ett kluster med Windows-arbetsnoder kör du följande kommandon:
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
Kommandots utdata liknar följande exempel:
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
Kontrollera att Astra Trident har installerats genom att köra följande
kubectl describe
kommando:kubectl describe torc trident
Kommandots utdata liknar följande exempel:
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
Skapa en serverdel
En serverdel måste skapas för att instruera Astra Trident om Azure NetApp Files-prenumerationen och var den behöver skapa volymer. Mer information om serverdelar finns i Konfigurationsalternativ och exempel för Serverdelen i Azure NetApp Files.
Skapa en fil med namnet
backend-secret-smb.yaml
och kopiera i följande YAML.Client ID
Ändra ochclientSecret
till rätt värden för din miljö.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Skapa en fil med namnet
backend-anf-smb.yaml
och kopiera i följande YAML.ClientID
Ändra värdena , ,subscriptionID
clientSecret
,tenantID
,location
ochserviceLevel
till rätt värden för din miljö. ,tenantID
clientID
ochclientSecret
kan hittas från en programregistrering i Microsoft Entra-ID med tillräcklig behörighet för Azure NetApp Files-tjänsten. Programregistreringen innehåller rollen Ägare eller Deltagare som fördefinierades av Azure. Azure-platsen måste innehålla minst ett delegerat undernät.serviceLevel
Måste matcha denserviceLevel
konfigurerade för kapacitetspoolen i Konfigurera Azure NetApp Files för AKS-arbetsbelastningar.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
Skapa hemligheten och serverdelen med kommandot
kubectl apply
.Skapa -hemligheten:
kubectl apply -f backend-secret.yaml -n trident
Kommandots utdata liknar följande exempel:
secret/backend-tbc-anf-secret created
Skapa serverdelen:
kubectl apply -f backend-anf.yaml -n trident
Kommandots utdata liknar följande exempel:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Kontrollera att serverdelen skapades genom att köra följande kommando:
kubectl get tridentbackends -n trident
Kommandots utdata liknar följande exempel:
NAME BACKEND BACKEND UUID tbe-9shfq backend-tbc-anf-smb 09cc2d43-8197-475f-8356-da7707bae203
Skapa en hemlighet med domänautentiseringsuppgifterna för SMB
Skapa en hemlighet i AKS-klustret för att få åtkomst till AD-servern med hjälp av
kubectl create secret
kommandot . Den här informationen används av Kubernetes beständiga volym för att få åtkomst till Azure NetApp Files SMB-volymen. Använd följande kommando och ersättDOMAIN_NAME\USERNAME
med ditt domännamn och användarnamn ochPASSWORD
med ditt lösenord.kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME –from-literal=password="PASSWORD"
Kontrollera att hemligheten har skapats.
kubectl get secret
Utdata liknar följande exempel:
NAME TYPE DATA AGE smbcreds Opaque 2 2h
Skapa en lagringsklass
En lagringsklass används för att definiera hur en lagringsenhet skapas dynamiskt med en beständig volym. Om du vill använda Azure NetApp Files-volymer måste en lagringsklass skapas.
Skapa en fil med namnet
anf-storageclass-smb.yaml
och kopiera i följande 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"
Skapa lagringsklassen
kubectl apply
med kommandot :kubectl apply -f anf-storageclass-smb.yaml
Kommandots utdata liknar följande exempel:
storageclass/anf-sc-smb created
kubectl get
Kör kommandot för att visa status för lagringsklassen:kubectl get sc anf-sc-smb NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE anf-sc-smb csi.trident.netapp.io Delete Immediate true 13s
Skapa en PVC
Ett beständiga volymanspråk (PVC) är en begäran om lagring av en användare. När ett beständiga volymanspråk skapas skapar Astra Trident automatiskt en Azure NetApp Files SMB-resurs och gör den tillgänglig för Kubernetes-arbetsbelastningar att använda.
Skapa en fil med namnet
anf-pvc-smb.yaml
och kopiera följande YAML. I det här exemplet skapas en 100-GiB-volym medReadWriteMany
åtkomst och använder lagringsklassen som skapats i Skapa en lagringsklass.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: anf-sc-smb
Skapa det beständiga volymanspråket
kubectl apply
med kommandot :kubectl apply -f anf-pvc-smb.yaml
Kommandots utdata liknar följande exempel:
persistentvolumeclaim/anf-pvc-smb created
Om du vill visa information om det beständiga volymanspråket kör du
kubectl get
kommandot:kubectl get pvc
Kommandots utdata liknar följande exempel:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc-smb Bound pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX anf-sc-smb 5m38s
Om du vill visa den beständiga volymen som skapats av Astra Trident kör du följande
kubectl get
kommando: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
Använd den beständiga volymen
När PVC har skapats kan en podd snurras upp för att få åtkomst till Azure NetApp Files-volymen. Följande manifest kan användas för att definiera en IIS-podd (Internet Information Services) som monterar Azure NetApp Files SMB-resursen som skapades i föregående steg. I det här exemplet monteras volymen på /inetpub/wwwroot
.
Skapa en fil med namnet
anf-iis-pod.yaml
och kopiera i följande 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
Skapa distributionen med
kubectl apply
kommandot :kubectl apply -f anf-iis-deploy-pod.yaml
Kommandots utdata liknar följande exempel:
pod/iis-pod created
Kontrollera att podden körs och monteras via SMB med
/inetpub/wwwroot
hjälpkubectl describe
av kommandot :kubectl describe pod iis-pod
Kommandots utdata liknar följande exempel:
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)
Kontrollera att volymen har monterats på podden med kubectl exec för att ansluta till podden. Och använd
dir
sedan kommandot i rätt katalog för att kontrollera om volymen är monterad och storleken matchar storleken på den volym som du etablerade.kubectl exec -it iis-pod –- cmd.exe
Kommandots utdata liknar följande exempel:
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
Nästa steg
Astra Trident har stöd för många funktioner med Azure NetApp Files. Mer information finns i:
Azure Kubernetes Service