После того, как вы настроите Azure NetApp Files для Службы Azure Kubernetes, вы можете подготовить тома Azure NetApp Files для Службы Azure Kubernetes.
Azure NetApp Files поддерживает тома с помощью NFS (NFSv3 или NFSv4.1), SMB и двойного протокола (NFSv3 и SMB, или NFSv4.1 и SMB).
В этой статье показано, как статически подготавливать тома для доступа с двумя протоколами с помощью NFS или SMB.
Прежде чем начать
Создание тома с двойным протоколом в Службе Azure Kubernetes
В этом разделе описывается, как предоставлять том двойного протокола Azure NetApp Files статически для Kubernetes. Инструкции предоставляются для протоколов SMB и NFS. Один и тот же том можно предоставить для рабочих узлов Windows через SMB и для рабочих узлов Linux через NFS.
Создайте постоянный том для NFS
Определите переменные для последующего использования. Замените myresourcegroup, myaccountname, mypool1, myvolname соответствующим значением из тома двойного протокола.
RESOURCE_GROUP="myresourcegroup"
ANF_ACCOUNT_NAME="myaccountname"
POOL_NAME="mypool1"
VOLUME_NAME="myvolname"
Перечислите сведения о томе с помощью команды 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
Ниже приведен пример приведенной выше команды, выполняемой с реальными значениями.
{
...
"creationToken": "myfilepath2",
...
"mountTargets": [
{
...
"ipAddress": "10.0.0.4",
...
}
],
...
}
Создайте файл pv-nfs.yaml и скопируйте в него следующий код YAML. Убедитесь, что сервер соответствует выходному IP-адресу из предыдущего шага, а путь соответствует выходным данным из creationToken выше. Емкость также должна соответствовать размеру тома на шаге 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
Создайте постоянный том с помощью kubectl apply команды:
kubectl apply -f pv-nfs.yaml
Убедитесь, что состояние постоянного тома — Доступно, используя команду kubectl describe.
kubectl describe pv pv-nfs
Создайте запрос на постоянный том для NFS
Создайте файл pvc-nfs.yaml и скопируйте в него следующий код YAML. Этот манифест создает PVC с именем pvc-nfs для хранилища объёмом 100Gi и режимом доступа ReadWriteMany, соответствующим созданному вами PV.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 100Gi
Создайте запрос на персистентный том с помощью команды kubectl apply.
kubectl apply -f pvc-nfs.yaml
Убедитесь, что состояние утверждения постоянного тома привязано с помощью kubectl describe команды:
kubectl describe pvc pvc-nfs
Монтирование в pod с помощью NFS
Создайте файл nginx-nfs.yaml и скопируйте в него следующий код YAML. Этот манифест определяет nginx модуль pod, использующий утверждение постоянного тома.
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
Создайте pod с помощью kubectl applyкоманды kubectl-apply :
kubectl apply -f nginx-nfs.yaml
Убедитесь, что pod находится в состоянии Running с помощью команды kubectl apply.
kubectl describe pod nginx-nfs
Убедитесь, что том подключен к модулем pod с помощью kubectl exec подключения к модулем pod, а затем используйте df -h для проверки подключения тома.
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
...
Создание секрета с учетными данными домена
- Создайте секрет в кластере AKS для доступа к серверу AD с помощью
kubectl create secret команды. Этот секрет будет использоваться постоянным томом Kubernetes для доступа к Azure NetApp Files SMB тому. Используйте следующую команду, чтобы создать секрет, заменив USERNAME имя пользователя, PASSWORD пароль и DOMAIN_NAME доменное имя Active Directory.
kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
- Чтобы проверить, что секрет создан, выполните
kubectl get команду.
kubectl get secret
NAME TYPE DATA AGE
smbcreds Opaque 2 20h
Установка драйвера CSI SMB
Для создания Kubernetes SMB PersistentVolume необходимо установить драйвер интерфейса хранилища контейнеров (CSI).
Установите драйвер CSI SMB на кластере с помощью helm. Обязательно установите параметр 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.10.0 –-set windows.enabled=true
Другие методы установки драйвера CSI SMB см. в разделе "Установка главного драйвера SMB CSI" в кластере Kubernetes.
Убедитесь, csi-smb что модуль pod контроллера запущен, и каждый рабочий узел имеет модуль pod, работающий kubectl 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
Создание постоянного тома для SMB
Определите переменные для последующего использования. Замените myresourcegroup, myaccountname, mypool1, myvolname соответствующим значением из тома двойного протокола.
RESOURCE_GROUP="myresourcegroup"
ANF_ACCOUNT_NAME="myaccountname"
POOL_NAME="mypool1"
VOLUME_NAME="myvolname"
С помощью команды 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
Ниже приведен пример приведенной выше команды, выполняемой с реальными значениями.
{
...
"creationToken": "myvolname",
...
"mountTargets": [
{
...
"
"smbServerFqdn": "ANF-1be3.contoso.com",
...
}
],
...
}
Создайте файл pv-smb.yaml и скопируйте в него следующий код YAML. При необходимости замените myvolname на creationToken, а ANF-1be3.contoso.com\myvolname на значение smbServerFqdn из предыдущего шага. Не забудьте включить секрет учетных данных Active Directory вместе с пространством имен, которое вы создали на предыдущем шаге.
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
Создайте постоянный том с помощью kubectl apply команды:
kubectl apply -f pv-smb.yaml
Убедитесь, что состояние постоянного тома доступно с помощью команды kubectl describe.
kubectl describe pv anf-pv-smb
Создание запроса на выделение постоянного тома для SMB
Создайте файл pvc-smb.yaml и скопируйте в него следующий код YAML.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: anf-pvc-smb
spec:
accessModes:
- ReadWriteMany
volumeName: anf-pv-smb
storageClassName: ""
resources:
requests:
storage: 100Gi
Создайте запрос на персистентный том с помощью команды kubectl apply.
kubectl apply -f pvc-smb.yaml
Убедитесь, что состояние утверждения постоянного тома привязано как Bound с помощью команды kubectl describe.
kubectl describe pvc anf-pvc-smb
Установка в контейнере с использованием SMB
Создайте файл iis-smb.yaml и скопируйте в него следующий код YAML. Этот файл будет использоваться для создания pod службы IIS и подключения тома к пути /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
Создайте pod с помощью команды kubectl apply :
kubectl apply -f iis-smb.yaml
Убедитесь, что модуль pod запущен и /inetpub/wwwroot подключен из SMB с помощью kubectl describe команды:
kubectl describe pod iis-pod
Выходные данные команды будут выглядеть примерно так:
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)
...
Убедитесь, что ваш том подключен к pod с помощью команды kubectl exec для подключения к pod. Затем используйте команду dir в правильном каталоге, чтобы проверить, подключен ли том, и размер соответствует размеру подготовленного вами тома.
kubectl exec -it iis-pod –- cmd.exe
Выходные данные команды будут выглядеть примерно так:
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
Следующие шаги
Trident поддерживает множество функций в Azure NetApp Files. Дополнительные сведения см. в разделе: