Delen via


Azure Container Storage Preview gebruiken met beheerde Azure-schijven

Azure Container Storage is een cloudgebaseerde volumebeheer-, implementatie- en indelingsservice die systeemeigen is gebouwd voor containers. In dit artikel leest u hoe u Azure Container Storage configureert voor het gebruik van beheerde Azure-schijven als back-endopslag voor uw Kubernetes-workloads. Aan het einde beschikt u over een pod die beheerde Azure-schijven als opslag gebruikt.

Vereisten

  • Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

  • Voor dit artikel is de nieuwste versie (2.35.0 of hoger) van de Azure CLI vereist. Zie Hoe u de Azure CLI installeert. Als u de Bash-omgeving in Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd. Als u van plan bent om de opdrachten lokaal uit te voeren in plaats van in Azure Cloud Shell, moet u deze uitvoeren met beheerdersbevoegdheden. Zie Aan de slag met Azure Cloud Shell voor meer informatie.

  • U hebt de Kubernetes-opdrachtregelclient nodig. kubectl Deze is al geïnstalleerd als u Azure Cloud Shell gebruikt of als u deze lokaal kunt installeren door de opdracht uit te az aks install-cli voeren.

  • Als u Azure Container Storage nog niet hebt geïnstalleerd, volgt u de instructies in Azure Container Storage gebruiken met Azure Kubernetes Service.

  • Controleer of uw doelregio wordt ondersteund in Azure Container Storage-regio's.

Notitie

Als u Azure Container Storage wilt gebruiken met beheerde Azure-schijven, moet uw AKS-cluster een knooppuntgroep hebben van ten minste drie vm's voor algemeen gebruik, zoals standard_d4s_v5 voor de clusterknooppunten, elk met minimaal vier virtuele CPU's (vCPU's).

Permanente volumes maken en koppelen

Volg deze stappen om een permanent volume te maken en te koppelen.

1. Een opslaggroep maken

Maak eerst een opslaggroep, een logische groepering van opslag voor uw Kubernetes-cluster, door deze te definiëren in een YAML-manifestbestand.

U hebt de volgende opties voor het maken van een opslaggroep:

Als u Azure Container Storage hebt ingeschakeld met behulp van az aks create of az aks update opdrachten, hebt u mogelijk al een opslaggroep. Gebruik kubectl get sp -n acstor dit om de lijst met opslaggroepen op te halen. Als u al een opslaggroep hebt die u wilt gebruiken, kunt u deze stap overslaan en doorgaan met het weergeven van de beschikbare opslagklassen.

Een dynamische opslaggroep maken

Volg deze stappen om een dynamische opslaggroep te maken voor Azure Disks.

  1. Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals code acstor-storagepool.yaml.

  2. Plak er de volgende code in. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Geef voor skuName het prestatie- en redundantieniveau op. Acceptabele waarden zijn Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS en StandardSSD_ZRS. Geef voor opslag de hoeveelheid opslagcapaciteit op voor de pool in Gi of Ti. Sla het bestand op.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
      resources:
        requests:
          storage: 1Ti
    
  3. Pas het YAML-manifestbestand toe om de opslaggroep te maken.

    kubectl apply -f acstor-storagepool.yaml 
    

    Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:

    storagepool.containerstorage.azure.com/azuredisk created
    

    U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door <storage-pool-name> de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde azuredisk.

    kubectl describe sp <storage-pool-name> -n acstor
    

Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>. U kunt nu de beschikbare opslagklassen weergeven en een permanente volumeclaim maken.

Een vooraf ingerichte opslaggroep maken

Als u azure managed disks hebt die al zijn ingericht, kunt u een vooraf ingerichte opslaggroep maken met behulp van deze schijven. Omdat de schijven al zijn ingericht, hoeft u de skuName of opslagcapaciteit niet op te geven bij het maken van de opslaggroep.

Volg deze stappen om een vooraf ingerichte opslaggroep te maken voor Azure Disks.

  1. Meld u aan bij het Azure-portaal.

  2. Voor elke schijf die u wilt gebruiken, gaat u naar de beheerde Azure-schijf en selecteert u Instellingeneigenschappen>. Kopieer de hele tekenreeks onder Resource-id en plaats deze in een tekstbestand.

  3. Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals code acstor-storagepool.yaml.

  4. Plak er de volgende code in. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Vervang door <resource-id> de resource-id van elke beheerde schijf. Sla het bestand op.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: sp-preprovisioned
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          disks:
            - reference <resource-id1>
            - reference <resource-id2>
    
  5. Pas het YAML-manifestbestand toe om de opslaggroep te maken.

    kubectl apply -f acstor-storagepool.yaml 
    

    Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:

    storagepool.containerstorage.azure.com/sp-preprovisioned created
    

    U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door <storage-pool-name> de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde sp-preprovisioned.

    kubectl describe sp <storage-pool-name> -n acstor
    

Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>. U kunt nu de beschikbare opslagklassen weergeven en een permanente volumeclaim maken.

Een dynamische opslaggroep maken met uw eigen versleutelingssleutel (optioneel)

Alle gegevens in een Azure-opslagaccount worden at-rest versleuteld. Standaard worden gegevens versleuteld met door Microsoft beheerde sleutels. Voor meer controle over versleutelingssleutels kunt u door de klant beheerde sleutels (CMK) opgeven wanneer u uw opslaggroep maakt om de permanente volumes te versleutelen die u gaat maken.

Als u uw eigen sleutel wilt gebruiken voor versleuteling aan de serverzijde, moet u een Azure Key Vault met een sleutel hebben. Key Vault moet beveiliging tegen opschonen hebben ingeschakeld en moet gebruikmaken van het Azure RBAC-machtigingsmodel. Meer informatie over door de klant beheerde sleutels in Linux.

Bij het maken van uw opslaggroep moet u de CMK-parameters definiëren. De vereiste CMK-versleutelingsparameters zijn:

  • keyVersion geeft de versie van de sleutel op die moet worden gebruikt
  • keyName is de naam van uw sleutel
  • keyVaultUri is de uniforme resource-id van de Azure Key Vault, bijvoorbeeld https://user.vault.azure.net
  • Identiteit geeft een beheerde identiteit op met toegang tot de kluis, bijvoorbeeld /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool

Volg deze stappen om een opslaggroep te maken met uw eigen versleutelingssleutel. Alle permanente volumes die zijn gemaakt op basis van deze opslaggroep, worden versleuteld met dezelfde sleutel.

  1. Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals code acstor-storagepool-cmk.yaml.

  2. Plak de volgende code, geef de vereiste parameters op en sla het bestand op. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Geef voor skuName het prestatie- en redundantieniveau op. Acceptabele waarden zijn Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS en StandardSSD_ZRS. Geef voor opslag de hoeveelheid opslagcapaciteit op voor de pool in Gi of Ti. Zorg ervoor dat u de CMK-versleutelingsparameters opgeeft.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
          encryption: {
            keyVersion: "<key-version>",
            keyName: "<key-name>",
            keyVaultUri: "<key-vault-uri>",
            identity: "<identity>"
          }
      resources:
        requests:
          storage: 1Ti
    
  3. Pas het YAML-manifestbestand toe om de opslaggroep te maken.

    kubectl apply -f acstor-storagepool-cmk.yaml 
    

    Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:

    storagepool.containerstorage.azure.com/azuredisk created
    

    U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door <storage-pool-name> de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde azuredisk.

    kubectl describe sp <storage-pool-name> -n acstor
    

Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>.

2. De beschikbare opslagklassen weergeven

Wanneer de opslaggroep gereed is voor gebruik, moet u een opslagklasse selecteren om te definiëren hoe opslag dynamisch wordt gemaakt bij het maken van permanente volumeclaims en het implementeren van permanente volumes.

Voer uit kubectl get sc om de beschikbare opslagklassen weer te geven. Als het goed is, ziet u een opslagklasse met de naam acstor-<storage-pool-name>.

Belangrijk

Gebruik niet de opslagklasse die is gemarkeerd als intern. Het is een interne opslagklasse die nodig is om Azure Container Storage te laten werken.

3. Een permanente volumeclaim maken

Een permanente volumeclaim (PVC) wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. Volg deze stappen om een PVC te maken met behulp van de nieuwe opslagklasse.

  1. Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals code acstor-pvc.yaml.

  2. Plak de volgende code en sla het bestand op. De PVC-waarde name kan zijn wat u wilt.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurediskpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-azuredisk # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. Pas het YAML-manifestbestand toe om het PVC te maken.

    kubectl apply -f acstor-pvc.yaml
    

    De uitvoer moet er ongeveer zo uitzien:

    persistentvolumeclaim/azurediskpvc created
    

    U kunt de status van het PVC controleren door de volgende opdracht uit te voeren:

    kubectl describe pvc azurediskpvc
    

Zodra het PVC is gemaakt, is het klaar voor gebruik door een pod.

4. Implementeer een pod en koppel een permanent volume

Maak een pod met Fio (Flexibele I/O-tester) voor benchmarking en workloadsimulatie en geef een koppelpad op voor het permanente volume. Gebruik voor claimName de naamwaarde die u hebt gebruikt bij het maken van de permanente volumeclaim.

  1. Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals code acstor-pod.yaml.

  2. Plak de volgende code en sla het bestand op.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: azurediskpv
          persistentVolumeClaim:
            claimName: azurediskpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: azurediskpv
    
  3. Pas het YAML-manifestbestand toe om de pod te implementeren.

    kubectl apply -f acstor-pod.yaml
    

    De uitvoer ziet er als volgt uit:

    pod/fiopod created
    
  4. Controleer of de pod wordt uitgevoerd en of de permanente volumeclaim is gebonden aan de pod:

    kubectl describe pod fiopod
    kubectl describe pvc azurediskpvc
    
  5. Controleer fio-tests om de huidige status ervan te zien:

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

U hebt nu een pod geïmplementeerd die Azure Disks als opslag gebruikt en u kunt deze gebruiken voor uw Kubernetes-workloads.

Permanente volumes en opslaggroepen beheren

Nu u een permanent volume hebt gemaakt, kunt u het indien nodig loskoppelen en opnieuw aankoppelen. U kunt ook een opslaggroep uitvouwen of verwijderen.

Een permanent volume loskoppelen en opnieuw aankoppelen

Als u een permanent volume wilt loskoppelen, verwijdert u de pod waaraan het permanente volume is gekoppeld. Vervang door <pod-name> de naam van de pod, bijvoorbeeld fiopod.

kubectl delete pods <pod-name>

Als u een permanent volume opnieuw wilt koppelen, verwijst u gewoon naar de naam van de permanente volumeclaim in het YAML-manifestbestand, zoals beschreven in Een pod implementeren en een permanent volume koppelen.

Als u wilt controleren aan welk permanent volume een permanente volumeclaim is gebonden, voert u uit kubectl get pvc <persistent-volume-claim-name>.

Een opslaggroep uitvouwen

U kunt opslaggroepen uitbreiden die worden ondersteund door Azure Disks om snel en zonder uitvaltijd omhoog te schalen. Het verkleinen van opslaggroepen wordt momenteel niet ondersteund.

Notitie

Als u een opslaggroep uitbreidt, kunt u uw kosten voor Azure Container Storage en Azure Disks verhogen. Zie de pagina met prijzen voor Azure Container Storage.

Volg deze instructies om een bestaande opslaggroep voor Azure Disks uit te vouwen.

  1. Open met behulp van een teksteditor het YAML-manifestbestand dat u hebt gebruikt om de opslaggroep te maken, bijvoorbeeld code acstor-storagepool.yaml.

  2. Vervang de opgegeven opslagvermelding in het YAML-manifestbestand door de gewenste waarde. Deze waarde moet groter zijn dan de huidige capaciteit van de opslaggroep. Als de specificatie bijvoorbeeld is ingesteld storage: 1Tiop , wijzigt u deze in storage: 2Ti. Als u een vooraf ingerichte opslaggroep hebt gemaakt, is er geen opslagvermelding omdat de opslaggroep de capaciteitsgrootte heeft overgenomen van de vooraf ingerichte Azure-schijven. Als u geen opslagvermelding in de YAML ziet, voegt u de volgende code toe die de gewenste opslagcapaciteit opgeeft en slaat u het manifestbestand op:

    spec:
      resources:
        requests:
          storage: 2Ti
    
  3. Pas het YAML-manifestbestand toe om de opslaggroep uit te vouwen.

    kubectl apply -f acstor-storagepool.yaml 
    
  4. Voer deze opdracht uit om de status van de opslaggroep te controleren. Vervang door <storage-pool-name> de naamwaarde van uw opslaggroep.

    kubectl describe sp <storage-pool-name> -n acstor
    

    Als het goed is, ziet u een bericht als 'de opslaggroep wordt uitgebreid'. Voer de opdracht na een paar minuten opnieuw uit en het bericht moet zijn verdwenen.

  5. Uitvoeren kubectl get sp -A en de opslaggroep moet de nieuwe grootte weerspiegelen.

Een opslaggroep verwijderen

Als u een opslaggroep wilt verwijderen, voert u de volgende opdracht uit. Vervang door <storage-pool-name> de naam van de opslaggroep.

kubectl delete sp -n acstor <storage-pool-name>

Zie ook