Po skonfigurowaniu usługi Azure NetApp Files dla usługi Azure Kubernetes Service można aprowizować woluminy usługi Azure NetApp Files dla usługi Azure Kubernetes Service.
Usługa Azure NetApp Files obsługuje woluminy przy użyciu systemu plików NFS (NFSv3 lub NFSv4.1), protokołu SMB i podwójnego protokołu (NFSv3 i SMB lub NFSv4.1 i SMB).
W tym artykule pokazano, jak statycznie aprowizować woluminy na potrzeby dostępu do dwóch protokołów przy użyciu systemu plików NFS lub SMB.
Zanim rozpoczniesz
Aprowizuj wolumin z podwójnym protokołem w usłudze Azure Kubernetes Service
W tej sekcji opisano, jak statycznie uwidocznić wolumin z podwójnym protokołem usługi Azure NetApp Files na platformie Kubernetes. Instrukcje są dostępne zarówno dla protokołów SMB, jak i NFS. Ten sam wolumin można uwidocznić za pośrednictwem protokołu SMB do węzłów procesu roboczego systemu Windows i za pośrednictwem systemu plików NFS do węzłów roboczych systemu Linux.
Tworzenie woluminu trwałego dla systemu plików NFS
Zdefiniuj zmienne dla późniejszego użycia. Zastąp myresourcegroup, myaccountname, mypool1, myvolname odpowiednią wartością z woluminu z obsługą podwójnego protokołu.
RESOURCE_GROUP="myresourcegroup"
ANF_ACCOUNT_NAME="myaccountname"
POOL_NAME="mypool1"
VOLUME_NAME="myvolname"
Wyświetl szczegóły woluminu za pomocą polecenia az netappfiles volume show
.
az netappfiles volume show \
--resource-group $RESOURCE_GROUP \
--account-name $ANF_ACCOUNT_NAME \
--pool-name $POOL_NAME \
--volume-name $VOLUME_NAME -o JSON
Poniższe dane wyjściowe to przykład powyższego polecenia wykonanego z rzeczywistymi wartościami.
{
...
"creationToken": "myfilepath2",
...
"mountTargets": [
{
...
"ipAddress": "10.0.0.4",
...
}
],
...
}
Utwórz plik o nazwie pv-nfs.yaml
i skopiuj go w następującym języku YAML. Upewnij się, że serwer odpowiada wyjściowemu adresowi IP z poprzedniego kroku, a ścieżka odpowiada wynikowi z creationToken
. Pojemność musi być również zgodna z rozmiarem woluminu z kroku 2.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany
mountOptions:
- vers=3
nfs:
server: 10.0.0.4
path: /myfilepath2
Utwórz wolumin trwały przy użyciu kubectl apply
polecenia :
kubectl apply -f pv-nfs.yaml
Sprawdź, czy stan woluminu trwałego jest dostępny, używając polecenia kubectl describe
.
kubectl describe pv pv-nfs
Utwórz żądanie trwałego wolumenu dla NFS
Utwórz plik o nazwie pvc-nfs.yaml
i skopiuj go w następującym języku YAML. Ten manifest tworzy PVC o nazwie pvc-nfs
, dostosowany do utworzonego PV, dla magazynu o pojemności 100Gi i trybie dostępu ReadWriteMany
.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 100Gi
Utwórz żądanie trwałego woluminu przy użyciu polecenia kubectl apply
:
kubectl apply -f pvc-nfs.yaml
Sprawdź, czy Status żądania trwałego woluminu jest Powiązany przy użyciu polecenia kubectl describe
:
kubectl describe pvc pvc-nfs
Instalowanie w zasobniku przy użyciu systemu plików NFS
Utwórz plik o nazwie nginx-nfs.yaml
i skopiuj go w następującym języku YAML. Ten manifest definiuje nginx
zasobnik, który używa żądania woluminu trwałego.
kind: Pod
apiVersion: v1
metadata:
name: nginx-nfs
spec:
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
name: nginx-nfs
command:
- "/bin/sh"
- "-c"
- while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
volumeMounts:
- name: disk01
mountPath: /mnt/azure
volumes:
- name: disk01
persistentVolumeClaim:
claimName: pvc-nfs
Utwórz pod przy użyciu polecenia kubectl apply
kubectl-apply:
kubectl apply -f nginx-nfs.yaml
Sprawdź, czy zasobnik jest uruchomiony przy użyciu kubectl apply
polecenia :
kubectl describe pod nginx-nfs
Sprawdź, czy wolumin został zamontowany na zasobniku przy użyciu kubectl exec
do połączenia się z zasobnikiem, a następnie użyj df -h
, aby sprawdzić, czy wolumin jest zamontowany.
kubectl exec -it nginx-nfs -- sh
/ # df -h
Filesystem Size Used Avail Use% Mounted on
...
10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure
...
Utwórz sekret przy użyciu poświadczeń domeny
- Utwórz sekret w klastrze AKS, aby uzyskać dostęp do serwera AD przy użyciu polecenia
kubectl create secret
. Ten sekret będzie używany przez persistent volume Kubernetes do uzyskania dostępu do woluminu SMB w usłudze Azure NetApp Files. Użyj następującego polecenia, aby utworzyć wpis tajny, zastępując USERNAME
ciąg nazwą użytkownika, PASSWORD
hasłem i DOMAIN_NAME
nazwą domeny usługi Active Directory.
kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
- Aby sprawdzić, czy wpis tajny został utworzony, uruchom polecenie
kubectl get
.
kubectl get secret
NAME TYPE DATA AGE
smbcreds Opaque 2 20h
Instalowanie sterownika SMB CSI
Aby utworzyć protokół SMB PersistentVolume
kubernetes, należy zainstalować sterownik interfejsu magazynu kontenerów (CSI).
Zainstaluj sterownik SMB CSI w klastrze przy użyciu narzędzia Helm. Pamiętaj, aby ustawić windows.enabled
opcję na 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.10.0 –-set windows.enabled=true
Inne metody instalowania sterownika SMB CSI można znaleźć w temacie Install SMB CSI driver master version on a Kubernetes cluster (Instalowanie wersji master sterownika SMB CSI w klastrze Kubernetes).
Sprawdź, csi-smb
czy zasobnik kontrolera jest uruchomiony, a każdy węzeł roboczy ma uruchomiony zasobnik przy użyciu kubectl get pods
polecenia :
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
Tworzenie woluminu trwałego dla protokołu SMB
Zdefiniuj zmienne dla późniejszego użycia. Zastąp ciąg myresourcegroup, myaccountname, mypool1, myvolname odpowiednią wartością woluminu z podwójnym protokołem.
RESOURCE_GROUP="myresourcegroup"
ANF_ACCOUNT_NAME="myaccountname"
POOL_NAME="mypool1"
VOLUME_NAME="myvolname"
Wyświetl szczegóły swojego woluminu za pomocą polecenia az netappfiles volume show
.
az netappfiles volume show \
--resource-group $RESOURCE_GROUP \
--account-name $ANF_ACCOUNT_NAME \
--pool-name $POOL_NAME \
--volume-name "$VOLUME_NAME -o JSON
Poniższe dane wyjściowe to przykład powyższego polecenia wykonanego z rzeczywistymi wartościami.
{
...
"creationToken": "myvolname",
...
"mountTargets": [
{
...
"
"smbServerFqdn": "ANF-1be3.contoso.com",
...
}
],
...
}
Utwórz plik o nazwie pv-smb.yaml
i skopiuj go w następującym języku YAML. W razie potrzeby zastąp myvolname
przez creationToken
i ANF-1be3.contoso.com\myvolname
wartością smbServerFqdn
z poprzedniego kroku. Pamiętaj, aby uwzględnić tajne dane uwierzytelniające AD wraz z przestrzenią nazw, w której się znajdują, utworzoną w poprzednim 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
Utwórz wolumin trwały przy użyciu kubectl apply
polecenia :
kubectl apply -f pv-smb.yaml
Sprawdź, czy stan woluminu trwałego jest dostępny za pomocą polecenia kubectl describe
.
kubectl describe pv anf-pv-smb
Utwórz trwałą rezerwację woluminu dla protokołu SMB
Utwórz nazwę pvc-smb.yaml
pliku i skopiuj go w następującym pliku YAML.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: anf-pvc-smb
spec:
accessModes:
- ReadWriteMany
volumeName: anf-pv-smb
storageClassName: ""
resources:
requests:
storage: 100Gi
Utwórz żądanie trwałego zasobu za pomocą polecenia kubectl apply
.
kubectl apply -f pvc-smb.yaml
Sprawdź, czy stan żądania trwałego woluminu to Przypisany za pomocą polecenia kubectl describe
.
kubectl describe pvc anf-pvc-smb
Montowanie w kontenerze przy użyciu protokołu SMB
Utwórz plik o nazwie iis-smb.yaml
i skopiuj go w następującym języku YAML. Ten plik zostanie użyty do utworzenia zasobnika usług Internet Information Services w celu zainstalowania woluminu do ścieżki /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
Utwórz pod używając polecenia kubectl apply:
kubectl apply -f iis-smb.yaml
Sprawdź, czy pod jest uruchomiony i /inetpub/wwwroot
jest zamontowany z wykorzystaniem protokołu SMB, używając kubectl describe
polecenia:
kubectl describe pod iis-pod
Dane wyjściowe polecenia przypominają następujący przykład:
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)
...
Sprawdź, czy wolumin został zamontowany na podzie, używając polecenia kubectl exec w celu nawiązania połączenia z podem. Następnie użyj polecenia dir
w odpowiednim katalogu, aby zweryfikować, czy wolumin jest zamontowany, a jego rozmiar odpowiada rozmiarowi woluminu, który został przydzielony.
kubectl exec -it iis-pod –- cmd.exe
Dane wyjściowe polecenia przypominają następujący przykład:
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
Następne kroki
Aplikacja Trident obsługuje wiele funkcji w usłudze Azure NetApp Files. Aby uzyskać więcej informacji, zobacz: