Aracılığıyla paylaş


Azure Kubernetes Service için Azure NetApp Files NFS birimleri sağlama

Azure Kubernetes Service için Azure NetApp Files'ı yapılandırdıktan sonra, Azure Kubernetes Service için Azure NetApp Files birimleri sağlayabilirsiniz.

Azure NetApp Files, NFS (NFSv3 veya NFSv4.1), SMB veya çift protokollü (NFSv3 ve SMB ya da NFSv4.1 ve SMB) kullanan birimleri destekler.

NFS birimleri kullanan uygulamalar için statik olarak yapılandırma

Bu bölümde, Azure NetApp Files'da NFS birimi oluşturma ve birimi statik olarak Kubernetes'te kullanıma sunma açıklanmaktadır. Ayrıca kapsayıcılı bir uygulamayla birimin nasıl kullanılacağını da açıklar.

NFS birimi oluşturma

  1. Daha sonraki kullanımlar için değişkenleri tanımlayın. myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid ve anfSubnetID değerlerini hesabınızdan ve ortamınızdan uygun bir değerle değiştirin. Dosya yolu tüm ANF hesaplarında benzersiz olmalıdır.

    RESOURCE_GROUP="myresourcegroup"
    LOCATION="mylocation"
    ANF_ACCOUNT_NAME="myaccountname"
    POOL_NAME="mypool1"
    SERVICE_LEVEL="premium" # Valid values are Standard, Premium, and Ultra
    UNIQUE_FILE_PATH="myfilepath"
    VOLUME_SIZE_GIB="myvolsize"
    VOLUME_NAME="myvolname"
    VNET_ID="vnetId"
    SUBNET_ID="anfSubnetId"
    
  2. komutunu kullanarak az netappfiles volume create bir birim oluşturun. Daha fazla bilgi için bkz . Azure NetApp Files için NFS birimi oluşturma.

    az netappfiles volume create \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --name "$VOLUME_NAME" \
        --service-level $SERVICE_LEVEL \
        --vnet $VNET_ID \
        --subnet $SUBNET_ID \
        --usage-threshold $VOLUME_SIZE_GIB \
        --file-path $UNIQUE_FILE_PATH \
        --protocol-types NFSv3
    

Kalıcı birimi oluşturma

  1. komutunu kullanarak biriminizin ayrıntılarını listeleyin az netappfiles volume show . Önceki bir adımda tanımlanmamışsa değişkenleri Azure NetApp Files hesabınızdan ve ortamınızdan uygun değerlerle değiştirin.

    az netappfiles volume show \
        --resource-group $RESOURCE_GROUP \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --volume-name "$VOLUME_NAME -o JSON
    

    Aşağıdaki çıkış, gerçek değerlerle yürütülen yukarıdaki komutun bir örneğidir.

    {
      ...
      "creationToken": "myfilepath2",
      ...
      "mountTargets": [
        {
          ...
          "ipAddress": "10.0.0.4",
          ...
        }
      ],
      ...
    }
    
  2. adlı pv-nfs.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. Sunucunun 1. Adımdaki çıkış IP adresiyle eşleştiğinden ve yolun yukarıdaki çıkışla eşleştiğinden creationToken emin olun. Kapasitenin yukarıdaki adımdaki birim boyutuyla da eşleşmesi gerekir.

    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
    
  3. komutunu kullanarak kubectl apply kalıcı birimi oluşturun:

    kubectl apply -f pv-nfs.yaml
    
  4. Komutunu kullanarak kubectl describe kalıcı birimin durumunun Kullanılabilir olduğunu doğrulayın:

    kubectl describe pv pv-nfs
    

Kalıcı birim talebi oluşturma

  1. adlı pvc-nfs.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. Bu bildirim, oluşturduğunuz PV ile eşleşen 100Gi depolama ve ReadWriteMany erişim modu için adlı pvc-nfs bir PVC oluşturur.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. komutunu kullanarak kubectl apply kalıcı birim talebi oluşturun:

    kubectl apply -f pvc-nfs.yaml
    
  3. Komutunu kullanarak kalıcı birim talebi durumunun kubectl describe Bağlı olduğunu doğrulayın:

    kubectl describe pvc pvc-nfs
    

Pod ile bağlama

  1. adlı nginx-nfs.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. Bu bildirim, kalıcı birim talebi kullanan bir nginx pod tanımlar.

    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
    
  2. Komutunu kullanarak pod oluşturun kubectl apply :

    kubectl apply -f nginx-nfs.yaml
    
  3. komutunu kullanarak pod'un kubectl describe Çalışıyor olduğunu doğrulayın:

    kubectl describe pod nginx-nfs
    
  4. Pod'a bağlanmak için komutunu kullanarak kubectl exec biriminizin poda bağlandığını doğrulayın ve ardından birimin takılı olup olmadığını denetlemek için kullanın 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
    ...
    

NFS birimleri kullanan uygulamalar için dinamik olarak yapılandırma

Astra Trident, Azure NetApp Files'da NFS veya SMB dosyalarını dinamik olarak sağlamak için kullanılabilir. Dinamik olarak sağlanan SMB birimleri yalnızca Windows çalışan düğümleriyle desteklenir.

Bu bölümde, Azure NetApp Files'da dinamik olarak NFS birimi oluşturmak ve bunu kapsayıcılı bir uygulamaya otomatik olarak bağlamak için Astra Trident'in nasıl kullanılacağı açıklanmaktadır.

Astra Trident'i yükleme

NFS birimlerini dinamik olarak sağlamak için Astra Trident'i yüklemeniz gerekir. Astra Trident, NetApp'in Kubernetes için özel olarak oluşturulmuş dinamik depolama sağlama hizmetidir. Astra Trident'in endüstri standardı Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü kullanarak Kubernetes uygulamaları için depolama tüketimini basitleştirin. Astra Trident, Kubernetes kümelerine pod olarak dağıtır ve Kubernetes iş yükleriniz için dinamik depolama düzenleme hizmetleri sağlar.

Trident, Trident işleci (el ile veya Helm kullanılarak) veya tridentctlkullanılarak yüklenebilir. Bu yükleme yöntemleri ve bunların nasıl çalıştığı hakkında daha fazla bilgi edinmek için Astra Trident Yükleme Kılavuzu'na bakın.

Helm kullanarak Astra Trident'i yükleme

Bu yöntemi kullanarak Astra Trident'i yüklemek için iş istasyonunuza Helm yüklenmelidir. Astra Trident'i yüklemenin diğer yöntemleri için bkz . Astra Trident Yükleme Kılavuzu.

  1. Astra Trident'i yalnızca Linux çalışan düğümlerine sahip bir küme için Helm kullanarak yüklemek için aşağıdaki komutları çalıştırın:

    helm repo add netapp-trident https://netapp.github.io/trident-helm-chart   
    helm install trident netapp-trident/trident-operator --version 23.04.0  --create-namespace --namespace trident
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    NAME: trident
    LAST DEPLOYED: Fri May  5 13:55:36 2023
    NAMESPACE: trident
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes.
    
    Your release is named 'trident' and is installed into the 'trident' namespace.
    Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
    
    To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases.  You may find all Trident releases and source code online at https://github.com/NetApp/trident. 
    
    To learn more about the release, try:
    
        $ helm status trident
          $ helm get all trident
    
  2. Astra Trident'in başarıyla yüklendiğini onaylamak için aşağıdaki kubectl describe komutu çalıştırın:

    kubectl describe torc trident
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    Name:         trident
    Namespace:    
    Labels:       app.kubernetes.io/managed-by=Helm
    Annotations:  meta.helm.sh/release-name: trident
                  meta.helm.sh/release-namespace: trident
    API Version:  trident.netapp.io/v1
    Kind:         TridentOrchestrator
    Metadata:
        ...
    Spec:
      IPv6:                  false
      Autosupport Image:     docker.io/netapp/trident-autosupport:23.04
      Autosupport Proxy:     <nil>
      Disable Audit Log:     true
      Enable Force Detach:   false
      Http Request Timeout:  90s
      Image Pull Policy:     IfNotPresent
      k8sTimeout:            0
      Kubelet Dir:           <nil>
      Log Format:            text
      Log Layers:            <nil>
      Log Workflows:         <nil>
      Namespace:             trident
      Probe Port:            17546
      Silence Autosupport:   false
      Trident Image:         docker.io/netapp/trident:23.04.0
      Windows:               false
    Status:
      Current Installation Params:
        IPv6:                       false
        Autosupport Hostname:       
        Autosupport Image:          docker.io/netapp/trident-autosupport:23.04
        Autosupport Proxy:          
        Autosupport Serial Number:  
        Debug:                      false
        Disable Audit Log:          true
        Enable Force Detach:        false
        Http Request Timeout:       90s
        Image Pull Policy:          IfNotPresent
        Image Pull Secrets:
        Image Registry:       
        k8sTimeout:           30
        Kubelet Dir:          /var/lib/kubelet
        Log Format:           text
        Log Layers:           
        Log Level:            info
        Log Workflows:        
        Probe Port:           17546
        Silence Autosupport:  false
        Trident Image:        docker.io/netapp/trident:23.04.0
      Message:                Trident installed
      Namespace:              trident
      Status:                 Installed
      Version:                v23.04.0
    Events:
      Type    Reason      Age    From                        Message
      ----    ------      ----   ----                        -------
      Normal  Installing  2m59s  trident-operator.netapp.io  Installing Trident
      Normal  Installed   2m31s  trident-operator.netapp.io  Trident installed
    

Arka uç oluşturma

Astra Trident'e Azure NetApp Files aboneliği ve birimleri oluşturması gereken yer hakkında bilgi vermek için bir arka uç oluşturulur. Bu adım, önceki adımda oluşturulan hesap hakkında ayrıntılar gerektirir.

  1. adlı backend-secret.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. ve clientSecret değerini Client ID ortamınız için doğru değerlerle değiştirin.

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-anf-secret
    type: Opaque
    stringData:
      clientID: 00001111-aaaa-2222-bbbb-3333cccc4444
      clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
    
  2. adlı backend-anf.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. subscriptionID, , tenantIDlocationve serviceLevel değerlerini ortamınız için doğru değerlerle değiştirin. Azure NetApp Files'ın etkinleştirildiği Azure aboneliği için öğesini subscriptionID kullanın. tenantIDAzure NetApp Files hizmeti için yeterli izinlere sahip Microsoft Entra ID'deki bir uygulama kaydından , clientIDve clientSecret alın. Uygulama kaydı, Azure tarafından önceden tanımlanmış Sahip veya Katkıda Bulunan rolünü içerir. Konum, önceki adımda oluşturulan en az bir temsilci alt ağı içeren bir Azure konumu olmalıdır. , serviceLevel AKS iş yükleri serviceLevel için Azure NetApp Files'ı yapılandırma başlığındaki kapasite havuzu için yapılandırılan ile eşleşmelidir.

    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: backend-tbc-anf
    spec:
      version: 1
      storageDriverName: azure-netapp-files
      subscriptionID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
      tenantID: aaaabbbb-0000-cccc-1111-dddd2222eeee
      location: eastus
      serviceLevel: Premium
      credentials:
        name: backend-tbc-anf-secret
    

    Arka uçlar hakkında daha fazla bilgi için bkz . Azure NetApp Files arka uç yapılandırma seçenekleri ve örnekleri.

  3. komutunu kullanarak kubectl apply gizli diziyi ve arka ucu uygulayın. İlk olarak gizli diziyi uygulayın:

    kubectl apply -f backend-secret.yaml -n trident
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    secret/backend-tbc-anf-secret created
    

    Arka ucu uygulayın:

    kubectl apply -f backend-anf.yaml -n trident
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
    
  4. Komutunu kullanarak arka ucun oluşturulduğunu kubectl get onaylayın:

     kubectl get tridentbackends -n trident
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    NAME        BACKEND               BACKEND UUID
    tbe-kfrdh   backend-tbc-anf   8da4e926-9dd4-4a40-8d6a-375aab28c566
    

Depolama sınıfı oluşturma

Depolama sınıfı, bir depolama biriminin kalıcı bir birimle dinamik olarak nasıl oluşturulduğunu tanımlamak için kullanılır. Azure NetApp Files birimlerini kullanmak için bir depolama sınıfı oluşturulmalıdır.

  1. Adlı anf-storageclass.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azure-netapp-files
    provisioner: csi.trident.netapp.io
    parameters:
      backendType: "azure-netapp-files"
      fsType: "nfs"
    
  2. komutunu kullanarak depolama sınıfını kubectl apply oluşturun:

    kubectl apply -f anf-storageclass.yaml
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    storageclass/azure-netapp-files created
    
  3. kubectl get Depolama sınıfının durumunu görüntülemek için komutunu çalıştırın:

    kubectl get sc
    NAME                 PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    azure-netapp-files   csi.trident.netapp.io   Delete          Immediate           false                  
    

PVC oluşturma

Kalıcı birim talebi (PVC), bir kullanıcı tarafından depolama isteğidir. Kalıcı bir birim talebi oluşturuldukten sonra Astra Trident otomatik olarak bir Azure NetApp Files birimi oluşturur ve Kubernetes iş yüklerinin kullanılabilmesini sağlar.

  1. adlı anf-pvc.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. Bu örnekte ReadWriteMany erişimiyle 1-TiB birim gereklidir.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: anf-pvc
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Ti
      storageClassName: azure-netapp-files
    
  2. komutuyla kubectl apply kalıcı birim talebi oluşturun:

    kubectl apply -f anf-pvc.yaml
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    persistentvolumeclaim/anf-pvc created
    
  3. Kalıcı birim talebi hakkındaki bilgileri görüntülemek için komutunu kubectl get çalıştırın:

    kubectl get pvc
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    kubectl get pvc -n trident
    NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
    anf-pvc   Bound    pvc-bffa315d-3f44-4770-86eb-c922f567a075   1Ti        RWO            azure-netapp-files   62s
    

Kalıcı birimi kullanma

PVC oluşturulduktan sonra Astra Trident kalıcı birimi oluşturur. Bir pod, Azure NetApp Files birimine bağlanmak ve bu birime erişmek için kullanılabilir.

Aşağıdaki bildirim, önceki adımda oluşturulan Azure NetApp Files birimini takan bir NGINX podunu tanımlamak için kullanılabilir. Bu örnekte, birim konumuna /mnt/databağlanır.

  1. Adlı anf-nginx-pod.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-pod
    spec:
      containers:
      - name: nginx
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/data"
          name: volume
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: anf-pvc
    
  2. Komutunu kullanarak pod oluşturun kubectl apply :

    kubectl apply -f anf-nginx-pod.yaml
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    pod/nginx-pod created
    

    Kubernetes, birimin bağlandığı ve kapsayıcı içinde nginx erişilebilir olduğu bir pod oluşturmuştur /mnt/data. Komutunu kullanarak kubectl describe pod için olay günlüklerini denetleyerek onaylayabilirsiniz:

    kubectl describe pod nginx-pod
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  anf-pvc
        ReadOnly:   false
      default-token-k7952:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-k7952
        Optional:    false
    [...]
    Events:
      Type    Reason                  Age   From                     Message
      ----    ------                  ----  ----                     -------
      Normal  Scheduled               15s   default-scheduler        Successfully assigned trident/nginx-pod to brameshb-non-root-test
      Normal  SuccessfulAttachVolume  15s   attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-bffa315d-3f44-4770-86eb-c922f567a075"
      Normal  Pulled                  12s   kubelet                  Container image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" already present on machine
      Normal  Created                 11s   kubelet                  Created container nginx
      Normal  Started                 10s   kubelet                  Started container nginx
    

Sonraki adımlar

Astra Trident, Azure NetApp Files ile birçok özelliği destekler. Daha fazla bilgi için bkz.