Naučíte sa:
- Vytvoriť a použiť statický trvalý zväzok v AKS
- Vytvoriť a použiť dynamický trvalý zväzok v AKS
Statické pridelenie úložného priestoru pomocou Azure File
Vytvorené podľa tutoriálu na Azure Docs.
Trvalý zväzok typu Azure File je adresár ku ktorému prisupujeme pomocou sieťového súborového systému SMB. Pomocou rovnakého protokolu z dielne Microsoftu viete zdieľať zložky cez sieť z Vášho Windows počítača alebo NAS zariadenia.
Pre uľahčenie použijeme premenné prostredia. Do premenných si uložíme:
- Názov skupiny zdrojov (ResorceGroup)
- Miesto dátového centra (Location)
- Názov zdieľanej zložky (ShareName)
- Názov prihlasovacieho účtu k úložisku (StorageAccount)
Príkaz export vytvorí premennú, dostupnú v ďalších príkazoch.
premenná $RANDOM
vráti vždy nové náhodné číslo.
# Change these four parameters as needed for your own environment
export STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
export RESOURCE_GROUP=myAKSShare
export LOCATION=eastus
export SHARE_NAME=aksshare
Vytvorte skupinu zdrojov (ResourceGroup) a do skupiny zdrojov vytvorte prihlasovací účet k úložisku:
# Create a resource group
az group create --name $RESOURCE_GROUP --location $LOCATION
# Create a storage account
az storage account create -n $STORAGE_ACCOUNT_NAME -g $RESOURCE_GROUP -l $LOCATION --sku Standard_LRS
Podľa prihlasovacieho účtu vytvorte trvalý zväzok typu Azure File. Trvalý zväzok sa vytvorí podľa zadaného reťazca na prihlásenie (ConnectionString). Reťazec na prihlásenie obsahuje meno zložky, meno a heslo na prihlásenie.
# Export the connection string as an environment variable, this is used when creating the Azure file share
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n $STORAGE_ACCOUNT_NAME -g $RESOURCE_GROUP -o tsv)
# Create the file share
az storage share create -n $SHARE_NAME --connection-string $AZURE_STORAGE_CONNECTION_STRING
Vložte údaje o pripojení na trvalý zväzok do Kuberntes. Údaje uložíte do objektu typu Secret:
# Get storage account key
STORAGE_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP --account-name $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv)
# Echo storage account name and key
echo Storage account name: $STORAGE_ACCOUNT_NAME
echo Storage account key: $STORAGE_KEY
# Create kubernetes secret
kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=$STORAGE_ACCOUNT_NAME --from-literal=azurestorageaccountkey=$STORAGE_KEY
# Existenciu objektu typu Secret si overte
kubectl get secrets
Vytvorte trvalý zväzok. V trvalom zväzku použijete prihlasovacie údaje uložené do Secret:
apiVersion: v1
kind: PersistentVolume
metadata:
name: azurefile
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
azureFile:
# Tu vytvoríte väzbu na prihlasovacie údaje do zväzku
# prihlasovacie údaje sú v objekte typy Secret
secretName: azure-secret
secretNamespace: default
shareName: aksshare
readOnly: false
mountOptions:
- dir_mode=0755
- file_mode=0755
- uid=1000
- gid=1000
- mfsymlinks
- nobrl
Vytvorte nárok na trvalý zväzok.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azurefile
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 5Gi
Teraz môžete vytvoriť objekt kotrý bude využívať trvalý zväzok. Pre jednoduchosť vytvorte priamo objekt typu Pod
. Objekt Pod obaľuje inštanciu kontajnera, ale bez ďalších vlastností ako je automatický reštart alebo škálovanie ako pri type Deployment. Ale ak chcete, môžete ho rovnakým spôsobom využiť v objekte Deployment alebo StatefulSet.
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: azure
mountPath: /mnt/azure
volumes:
- name: azure
persistentVolumeClaim:
claimName: azurefile
Dynamické pridelenie úložného priestoru Azure
https://docs.microsoft.com/en-us/azure/aks/azure-files-dynamic-pv
Vytvorte Storage Class.
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: kubernetes.io/azure-file
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
parameters:
skuName: Standard_LRS
Vytvorte nárok na trvalý zväzok. Pomocou nároku požiadate o dynamické pridelenie trvalého zväzku zo zvolenej triedy.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-azurefile
spec:
accessModes:
- ReadWriteMany
storageClassName: my-azurefile
resources:
requests:
storage: 5Gi
Tento trvalý zväzok viete využiť vo svojom nasadení (napr. StatefulSet).
apiVersion: v1
kind: Pod
metadata:
name: mypod2
spec:
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
name: mypod2
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: azure
mountPath: /mnt/azure
volumes:
- name: azure
persistentVolumeClaim:
claimName: my-azurefile
Na záver
Nezabudnite zrušiť všetky zdroje čo ste vytvorili.