Lokala delade gränsvolymer

I den här artikeln beskrivs konfigurationen för lokala delade edge-volymer (högtillgänglig, beständig lokal lagring).

Vad är en lokal delad edge-volym?

Funktionen Lokala delade edge-volymer ger hög tillgänglighet, redundanskompatibel lagring, lokalt för ditt Kubernetes-kluster. Den här delade lagringstypen är fortfarande oberoende av molninfrastrukturen, vilket gör den idealisk för ledigt utrymme, tillfällig lagring och lokalt beständiga data som kan vara olämpliga för molnmål.

Skapa ett beständigt volymanspråk för lokala delade gränsvolymer (PVC) och konfigurera en podd mot PVC

  1. Skapa en fil med namnet localSharedPVC.yaml med följande innehåll. Ändra värdet metadata.name med ett namn för ditt beständiga volymanspråk. På rad 8 anger du sedan det namnområde som matchar den avsedda podden. Värdet metadata.name refereras till på den sista raden deploymentExample.yaml i i nästa steg. Parametern spec.resources.requests.storage avgör storleken på den beständiga volymen. Det är 2 GB i det här exemplet, men kan ändras så att det passar dina behov:

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      ### Create a name for your PVC ###
      name: <create-a-pvc-name-here>
      ### Use a namespace that matches your intended consuming pod, or "default" ###
      namespace: <intended-consuming-pod-or-default-here>
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: unbacked-sc
    
  2. Skapa en fil med namnet deploymentExample.yaml med följande innehåll. Lägg till värden för containers.name och volumes.persistentVolumeClaim.claimName. Parametern spec.replicas avgör hur många replikpoddar som ska skapas. Det är 2 i det här exemplet, men kan ändras för att passa dina behov:

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: localsharededgevol-deployment ### This will need to be unique for every volume you choose to create
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: wyvern-testclientdeployment
      template:
        metadata:
          name: wyvern-testclientdeployment
          labels:
            name: wyvern-testclientdeployment
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                - labelSelector:
                    matchExpressions:
                      - key: app
                        operator: In
                        values:
                          - wyvern-testclientdeployment
                  topologyKey: kubernetes.io/hostname
          containers:
            ### Specify the container in which to launch the busy box. ###
            - name: <create-a-container-name-here>
              image: 'mcr.microsoft.com/mirror/docker/library/busybox:1.35'
              command:
                - "/bin/sh"
                - "-c"
                - "dd if=/dev/urandom of=/data/acsalocalsharedtestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
              volumeMounts:
                ### This name must match the following volumes::name attribute ###
                - name: wyvern-volume
                  ### This mountPath is where the PVC will be attached to the pod's filesystem ###
                  mountPath: /data
          volumes:
            ### User-defined name that is used to link the volumeMounts. This name must match volumeMounts::name as previously specified. ###
            - name: wyvern-volume
              persistentVolumeClaim:
                ### This claimName must refer to your PVC metadata::name from lsevPVC.yaml.
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    
  3. Om du vill tillämpa dessa YAML-filer kör du:

    kubectl apply -f "localSharedPVC.yaml"
    kubectl apply -f "deploymentExample.yaml"
    
  4. Kör kubectl get pods för att hitta namnet på din podd. Kopiera det här namnet eftersom det behövs i nästa steg.

    Kommentar

    Eftersom spec::replicas från deploymentExample.yaml har angetts som 2visas två poddar med .kubectl get pods Du kan välja vilket poddnamn som ska användas för nästa steg.

  5. Kör följande kommando och ersätt POD_NAME_HERE med det kopierade värdet från föregående steg:

    kubectl exec -it pod_name_here -- sh
    
  6. Ändra kataloger till monteringssökvägen enligt beskrivningen /data i deploymentExample.yaml.

  7. Skapa till exempel en fil med namnet file1.txt och skriv till den med hjälp av echo "Hello World" > file1.txt.

När du har slutfört föregående steg börjar du övervaka distributionen med Azure Monitor och Kubernetes Monitoring, eller övervakning från tredje part med Prometheus och Grafana.

Nästa steg

Övervaka distributionen