Egyéni tárosztályok használata az AKS-ben külső tároló (SAN) használatára az Azure Local-on

Áttekintés

Ez a dokumentum részletes útmutatást nyújt egy AKS-fürt konfigurálásához az Azure Local platformon, amely külső Storage Area Network (SAN) erőforrásokat használ fel egyéni Kubernetes tároló osztályok és állandó kötetek alkalmazásával. Az alapul szolgáló mechanizmus a Tárolótároló interfész (CSI), amely lehetővé teszi, hogy a Kubernetes szabványosított módon működjön együtt a tároló háttérrendszereinek széles skálájával. Egyéni StorageClass definiálásával, amely a SAN-kiosztóhoz kapcsolódik, a munkaterhelések dinamikusan igényelhetnek és köthetnek le állandó tárhelyet anélkül, hogy minden egyes kötet esetében manuális rendszergazdai beavatkozásra lenne szükség.

Előfeltételek

  • Az Azure-ban üzembe helyezett és regisztrált Azure Local-fürt.

  • Az Azure CLI az aksarc és connectedk8s bővítményekkel került telepítésre.

  • Az Azure Local fürthöz konfigurált egyéni hely.

  • Az AKS-fürthözött létrehozott logikai hálózat (VNet).

  • Microsoft Entra-csoport fürtadminisztrátori hozzáféréssel.

  • A külső SAN-tárolóhoz való hozzáférés ki van építve és elérhető a Azure Local fürtcsomópontokról.

  • kubectl helyileg telepítve.

1. lépés: AKS-fürt létrehozása

A lehetőség: Azure Portal

  • Lépjen az Azure Portalon az Azure helyi fürtre.
  • A bal oldali menüben kattintson az Erőforrások → a Kubernetes-fürtökre.
  • Kattintson a 'Kubernetes-fürt létrehozása' gombra.
  • Adja meg a fürt nevét, válassza ki az Azure Local fürt egyéni helyét, és töltse ki a fennmaradó mezőket.
  • Haladjon végig a varázsló lépésein, és kattintson a Létrehozás gombra.

Opció B: Azure CLI

Az alábbi parancs futtatása előtt telepítse a szükséges Azure CLI-bővítményeket. Jelentkezzen be az Azure-ba, és állítsa be a célelőfizetést, majd futtassa a következőt:

az aksarc create \
  -n $aksclustername \
  -g $resource_group \
  --custom-location $customlocationID \
  --vnet-ids $logicnetId \
  --aad-admin-group-object-ids $aadgroupID \
  --generate-ssh-keys

2. lépés: Csatlakozás a Kubernetes-fürthöz

Csatlakozzon az újonnan létrehozott fürthöz az az connectedk8s proxyparancs terminálablakban való futtatásával. Ez létrehoz egy helyi proxyt az Archoz csatlakoztatott fürthöz. Ezután nyisson meg egy új PowerShell-ablakot, amely ugyanarra a munkamappára mutat.

A fürtön működő összes további kubectl-parancs esetében előfordulhat, hogy explicit módon meg kell adnia a Kubernetes konfigurációs fájlját a következő jelölő hozzáfűzésével:

--kubeconfig .\aks-arc-kube-config

3. lépés: Egyéni tárolóosztály létrehozása lemezekhez

Az egyéni StorageClass az, ahogyan a Kubernetes leképez egy tárolási kérelmet egy, az Azure Localon elérhető, SAN-alapú lemeztípusra. A StorageClass definíciója meghatározza a CSI-kiépítést, a visszaigénylési szabályzatot, a kötési módot és a tárolószolgáltató CSI-illesztőprogramja által igényelt san-specifikus paramétereket.

A Microsoft Learn dokumentációját követve hozzon létre egy egyéni tárolóosztályt a lemezekhez: Container Storage Interface (CSI) lemezillesztők használata az Azure Arc által engedélyezett AKS-ben – Az Azure Arc által engedélyezett AKS | Microsoft Learn

Másik lehetőségként használja az Azure Portalt: lépjen az AKS-fürt lapjára, majd kattintson a Kubernetes-erőforrások → Storage-ra. Ezen a lapon tárosztályokat, állandó kötet jogcímeket és állandó köteteket hozhat létre és kezelhet.

4. lépés: Állandó mennyiségi jogcím létrehozása (PVC)

A StorageClass létrehozása után definiáljon egy állandó mennyiségi jogcímet (PVC) a SAN-tárolóerőforráshoz kötött állandó kötet kéréséhez. Az alábbi példa egy 1 GiB-kötetet kér le az egyéni tárosztály használatával:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: aks-hci-vhdx
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: <your custom storage class name>
  resources:
    requests:
      storage: 1Gi

5. lépés: Az állandó kötet használata egy Podban

Hivatkozzon a poddefinícióban lévő PVC-re egy volumeMount használatával. Az alábbi példa egy nginx-tárolót helyez üzembe, amely csatlakoztatja a SAN-alapú kötetet az /mnt/aks-hci címen, ahol az alkalmazás adatokat olvashat és írhat:

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
    - name: myfrontend
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      volumeMounts:
      - mountPath: "/mnt/aks-hci"
        name: volume
  volumes:
    - name: volume
      persistentVolumeClaim:
        claimName: aks-hci-vhdx

6. lépés: Mintaalkalmazás telepítése állandó kötetekkel

Az alábbi teljes jegyzék üzembe helyezi az Azure Vote alkalmazást, amely egy Redis háttérrendszerből és egy webes előtérből áll. Mindkét összetevő csatlakoztatja a SAN-alapú állandó köteteket, és a végpontok közötti integrációt mutatja be a külső tárolóval az Azure Local-on.

Note

A jegyzék alkalmazása előtt győződjön meg arról, hogy a PVC-k aks-hci-vhdx-1 és aks-hci-vhdx-2 már létre lettek hozva az egyéni tárolási osztály használatával (a 4. lépésben leírtak szerint).

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
        env:
        - name: ALLOW_EMPTY_PASSWORD
          value: "yes"
        ports:
        - containerPort: 6379
          name: redis
        volumeMounts:
        - mountPath: "/mnt/aks-hci"
          name: volume1
      volumes:
        - name: volume1
          persistentVolumeClaim:
            claimName: aks-hci-vhdx-1
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  minReadySeconds: 5
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
      - name: azure-vote-front
        image: lgmorand/azure-vote-front:v1
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 250m
          limits:
            cpu: 500m
        env:
        - name: REDIS
          value: "azure-vote-back"
        volumeMounts:
        - mountPath: "/mnt/aks-hci"
          name: volume2
      volumes:
        - name: volume2
          persistentVolumeClaim:
            claimName: aks-hci-vhdx-2
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front