Zřízení svazků SMB služby Azure NetApp Files pro službu Azure Kubernetes Service
Po konfiguraci služby Azure NetApp Files pro službu Azure Kubernetes Service můžete zřídit svazky Azure NetApp Files pro službu Azure Kubernetes Service.
Azure NetApp Files podporuje svazky používající systém souborů NFS (NFSv3 nebo NFSv4.1), SMB a duální protokol (NFSv3 a SMB nebo NFSv4.1 a SMB).
- Tento článek popisuje podrobnosti o statickém nebo dynamickém zřizování svazků SMB.
- Informace o statickém nebo dynamickém zřizování svazků NFS najdete v tématu Zřízení svazků NFS služby Azure NetApp Files pro službu Azure Kubernetes Service.
- Informace o statickém zřizování svazků se dvěma protokoly najdete v tématu Zřízení svazků se dvěma protokoly služby Azure NetApp Files pro službu Azure Kubernetes Service.
Staticky konfigurujte pro aplikace, které používají svazky SMB.
Tato část popisuje, jak vytvořit svazek SMB ve službě Azure NetApp Files a vystavit svazek staticky pro Kubernetes pro kontejnerizovanou aplikaci, která se má využívat.
Vytvoření svazku SMB
Definujte proměnné pro pozdější použití. Nahraďte myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname a virtnetid odpovídající hodnotou pro vaše prostředí. Cesta k souboru musí být jedinečná ve všech účtech ANF.
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"
Vytvořte svazek pomocí
az netappfiles volume create
příkazu.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
Vytvoření tajného kódu s přihlašovacími údaji domény
Vytvořte v clusteru AKS tajný klíč pro přístup k serveru Active Directory (AD) pomocí
kubectl create secret
příkazu. Tento tajný klíč bude používat trvalý svazek Kubernetes pro přístup ke svazku SMB služby Azure NetApp Files. Pomocí následujícího příkazu vytvořte tajný kód, nahraďteUSERNAME
uživatelské jméno,PASSWORD
heslem aDOMAIN_NAME
názvem domény pro vaši SLUŽBU AD.kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
Zkontrolujte vytvoření tajného kódu.
kubectl get secret NAME TYPE DATA AGE smbcreds Opaque 2 20h
Instalace ovladače SMB CSI
K vytvoření protokolu SMB PersistentVolume
Kubernetes je nutné nainstalovat ovladač rozhraní CSI (Container Storage Interface).
Nainstalujte do clusteru ovladač SMB CSI pomocí nástroje Helm. Nezapomeňte nastavit možnost
windows.enabled
:true
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
Další metody instalace ovladače SMB CSI naleznete v tématu Instalace hlavní verze ovladače SMB CSI v clusteru Kubernetes.
Pomocí příkazu ověřte, že
csi-smb
je pod kontroleru spuštěný a že každý pracovní uzel má spuštěnýkubectl get pods
pod: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
Vytvoření trvalého svazku
Uveďte podrobnosti o svazku pomocí
az netappfiles volume show
. Nahraďte proměnné příslušnými hodnotami z vašeho účtu a prostředí Azure NetApp Files, pokud nejsou definovány v předchozím kroku.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Následující výstup je příkladem výše uvedeného příkazu spuštěného se skutečnými hodnotami.
{ ... "creationToken": "myvolname", ... "mountTargets": [ { ... " "smbServerFqdn": "ANF-1be3.contoso.com", ... } ], ... }
Vytvořte soubor s názvem
pv-smb.yaml
a zkopírujte ho v následujícím jazyce YAML. V případě potřeby nahraďtemyvolname
creationToken
hodnotou z předchozího kroku a nahraďteANF-1be3.contoso.com\myvolname
ji hodnotousmbServerFqdn
. Nezapomeňte zahrnout tajný klíč přihlašovacích údajů AD spolu s oborem názvů, ve kterém se nachází tajný klíč, který jste vytvořili v předchozím kroku.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
Pomocí příkazu vytvořte trvalý svazek
kubectl apply
:kubectl apply -f pv-smb.yaml
Pomocí příkazu ověřte, že je trvalý svazek dostupný
kubectl describe
:kubectl describe pv pv-smb
Vytvoření deklarace trvalého svazku
Vytvořte název
pvc-smb.yaml
souboru a zkopírujte ho v následujícím JAZYCE YAML.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany volumeName: anf-pv-smb storageClassName: "" resources: requests: storage: 100Gi
Pomocí příkazu vytvořte trvalou deklaraci identity svazku
kubectl apply
:kubectl apply -f pvc-smb.yaml
Pomocí příkazu kubectl describe ověřte stav deklarace trvalého svazku:
kubectl describe pvc pvc-smb
Připojení s podem
Vytvořte soubor s názvem
iis-smb.yaml
a zkopírujte ho v následujícím jazyce YAML. Tento soubor se použije k vytvoření podu Internetová informační služba pro připojení svazku k cestě/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
Vytvořte pod pomocí příkazu kubectl apply :
kubectl apply -f iis-smb.yaml
Pomocí příkazu kubectl describe ověřte, že je pod spuštěný a
/inetpub/wwwroot
je připojený z protokolu SMB:kubectl describe pod iis-pod
Výstup příkazu se podobá následujícímu příkladu:
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) ...
Pomocí příkazu kubectl exec pro připojení k podu ověřte, že se svazek připojil ke svazku, a pak pomocí
dir
příkazu ve správném adresáři zkontrolujte, jestli je svazek připojený a velikost odpovídá velikosti svazku, který jste zřídili.kubectl exec -it iis-pod –- cmd.exe
Výstup příkazu se podobá následujícímu příkladu:
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
Dynamická konfigurace pro aplikace, které používají svazky SMB
Tato část popisuje, jak pomocí Astra Trident dynamicky vytvořit svazek SMB ve službě Azure NetApp Files a automaticky ho připojit ke kontejnerizované aplikaci windows.
Instalace Astra Trident
Pokud chcete dynamicky zřizovat svazky SMB, musíte nainstalovat Astra Trident verze 22.10 nebo novější. Dynamické zřizování svazků SMB vyžaduje pracovní uzly Windows.
Astra Trident je dynamická zřizovací služba úložiště NetApp, která je pro Kubernetes vytvořená účelově. Zjednodušte spotřebu úložiště pro aplikace Kubernetes pomocí standardního ovladače rozhraní CSI (Container Storage Interface) Astra Trident. Astra Trident se nasazuje v clusterech Kubernetes jako pody a poskytuje dynamické služby orchestrace úložiště pro úlohy Kubernetes.
Trident lze nainstalovat pomocí operátoru Trident (ručně nebo pomocí Helmu) nebo tridentctl
. Další informace o těchto metodách instalace a jejich fungování najdete v průvodci instalací.
Instalace Astra Tridentu pomocí Nástroje Helm
Helm musí být nainstalován na pracovní stanici, aby bylo možné pomocí této metody nainstalovat Astra Trident. Další metody instalace Astra Trident naleznete v průvodci instalací Astra Trident. Pokud máte v clusteru pracovní uzly Windows, ujistěte se, že chcete povolit okna s libovolnou metodou instalace.
Pokud chcete nainstalovat Astra Trident pomocí Nástroje Helm pro cluster s pracovními uzly Windows, spusťte následující příkazy:
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
Výstup příkazu se podobá následujícímu příkladu:
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
Pokud chcete ověřit, že se Astra Trident úspěšně nainstaloval, spusťte následující
kubectl describe
příkaz:kubectl describe torc trident
Výstup příkazu se podobá následujícímu příkladu:
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
Vytvoření back-endu
Back-end musí být vytvořen, aby Astra Trident dal pokyn k předplatnému Azure NetApp Files a kde potřebuje vytvářet svazky. Další informace o back-endech najdete v tématu Možnosti a příklady konfigurace back-endu služby Azure NetApp Files.
Vytvořte soubor s názvem
backend-secret-smb.yaml
a zkopírujte ho v následujícím jazyce YAML.Client ID
Změňte hodnoty aclientSecret
správné hodnoty pro vaše prostředí.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Vytvořte soubor s názvem
backend-anf-smb.yaml
a zkopírujte ho v následujícím jazyce YAML. Změňte hodnotyClientID
, ,subscriptionID
clientSecret
,location
tenantID
aserviceLevel
na správné hodnoty pro vaše prostředí. ,tenantID
clientID
aclientSecret
lze najít z registrace aplikace v Microsoft Entra ID s dostatečnými oprávněními pro službu Azure NetApp Files. Registrace aplikace zahrnuje roli Vlastník nebo Přispěvatel předdefinovaná v Azure. Umístění Azure musí obsahovat aspoň jednu delegovanou podsíť. MusíserviceLevel
se shodovat sserviceLevel
nakonfigurovaným fondem kapacity v části Konfigurace služby Azure NetApp Files pro úlohy AKS.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
Pomocí příkazu vytvořte tajný klíč a back-end
kubectl apply
.Vytvořte tajný kód :
kubectl apply -f backend-secret.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
secret/backend-tbc-anf-secret created
Vytvořte back-end:
kubectl apply -f backend-anf.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Spuštěním následujícího příkazu ověřte, že byl back-end vytvořen:
kubectl get tridentbackends -n trident
Výstup příkazu se podobá následujícímu příkladu:
NAME BACKEND BACKEND UUID tbe-9shfq backend-tbc-anf-smb 09cc2d43-8197-475f-8356-da7707bae203
Vytvoření tajného kódu s přihlašovacími údaji domény pro PROTOKOL SMB
Vytvořte v clusteru AKS tajný klíč pro přístup k serveru AD pomocí
kubectl create secret
příkazu. Tyto informace bude používat trvalý svazek Kubernetes pro přístup ke svazku SMB služby Azure NetApp Files. Použijte následující příkaz a nahraďteDOMAIN_NAME\USERNAME
název domény a uživatelské jméno aPASSWORD
heslo.kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME –from-literal=password="PASSWORD"
Ověřte, že byl tajný kód vytvořen.
kubectl get secret
Výstup vypadá podobně jako v následujícím příkladu:
NAME TYPE DATA AGE smbcreds Opaque 2 2h
Vytvoření třídy úložiště
Třída úložiště slouží k definování dynamického vytvoření jednotky úložiště s trvalým svazkem. Aby bylo možné využívat svazky Azure NetApp Files, musí se vytvořit třída úložiště.
Vytvořte soubor s názvem
anf-storageclass-smb.yaml
a zkopírujte ho v následujícím jazyce 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"
Pomocí příkazu vytvořte třídu
kubectl apply
úložiště:kubectl apply -f anf-storageclass-smb.yaml
Výstup příkazu se podobá následujícímu příkladu:
storageclass/anf-sc-smb created
Spuštěním
kubectl get
příkazu zobrazte stav třídy úložiště:kubectl get sc anf-sc-smb NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE anf-sc-smb csi.trident.netapp.io Delete Immediate true 13s
Vytvoření PVC
Trvalá deklarace identity svazku (PVC) je žádost o úložiště uživatelem. Po vytvoření trvalé deklarace identity svazku vytvoří Astra Trident automaticky sdílenou složku SMB služby Azure NetApp Files a zpřístupní ji pro úlohy Kubernetes, které budou využívat.
Vytvořte soubor s názvem
anf-pvc-smb.yaml
a zkopírujte následující YAML. V tomto příkladu se vytvoří svazek 100-GiB sReadWriteMany
přístupem a použije třídu úložiště vytvořenou v části Vytvoření třídy úložiště.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: anf-sc-smb
Pomocí příkazu vytvořte trvalou deklaraci identity svazku
kubectl apply
:kubectl apply -f anf-pvc-smb.yaml
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/anf-pvc-smb created
Pokud chcete zobrazit informace o trvalé deklaraci identity svazku
kubectl get
, spusťte příkaz:kubectl get pvc
Výstup příkazu se podobá následujícímu příkladu:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc-smb Bound pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX anf-sc-smb 5m38s
Pokud chcete zobrazit trvalý svazek vytvořený službou Astra Trident, spusťte následující
kubectl get
příkaz: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
Použití trvalého svazku
Po vytvoření PVC je možné vytvořit pod pro přístup ke svazku Azure NetApp Files. Následující manifest se dá použít k definování podu Internetová informační služba (IIS), který připojí sdílenou složku SMB služby Azure NetApp Files vytvořenou v předchozím kroku. V tomto příkladu je svazek připojen na /inetpub/wwwroot
adrese .
Vytvořte soubor s názvem
anf-iis-pod.yaml
a zkopírujte ho v následujícím jazyce 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
Pomocí příkazu vytvořte nasazení
kubectl apply
:kubectl apply -f anf-iis-deploy-pod.yaml
Výstup příkazu se podobá následujícímu příkladu:
pod/iis-pod created
Pomocí příkazu ověřte, že je pod spuštěný a připojený přes protokol SMB
/inetpub/wwwroot
kubectl describe
:kubectl describe pod iis-pod
Výstup příkazu se podobá následujícímu příkladu:
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)
Pomocí kubectl exec pro připojení k podu ověřte, že je svazek připojený k podu. Potom pomocí
dir
příkazu ve správném adresáři zkontrolujte, jestli je svazek připojený a velikost odpovídá velikosti zřízeného svazku.kubectl exec -it iis-pod –- cmd.exe
Výstup příkazu se podobá následujícímu příkladu:
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
Další kroky
Astra Trident podporuje mnoho funkcí v Azure NetApp Files. Další informace naleznete v tématu:
Azure Kubernetes Service