Compartir por


Volúmenes perimetrales locales compartidos

En este artículo, se describe la configuración de volúmenes perimetrales locales compartidos (almacenamiento local de alta disponibilidad y duradero).

¿Qué es un volumen perimetral local compartido?

La característica Volúmenes perimetrales locales compartidos proporciona almacenamiento con capacidad de conmutación por error de alta disponibilidad, local en el clúster de Kubernetes. Este tipo de almacenamiento compartido sigue siendo independiente de la infraestructura en la nube, lo que lo convierte en ideal para el espacio temporal, el almacenamiento temporal y los datos persistentes localmente, que podrían no ser adecuados para los destinos en la nube.

Crear una notificación de volumen persistente (PVC) de volúmenes perimetrales locales compartidos y configurar un pod en la PVC

  1. Cree un nuevo archivo denominado localSharedPVC.yaml con el contenido siguiente. Modifique el valor metadata.name con un nombre para la notificación de volumen persistente. A continuación, en la línea 8, especifique el espacio de nombres que coincida con el pod de consumo previsto. El valor metadata.name hace referencia al valor en la última línea de deploymentExample.yaml en el paso siguiente. El parámetro spec.resources.requests.storage determina el tamaño del volumen persistente. En este ejemplo es de 2 GB, pero se puede modificar para adaptarlo a las necesidades:

    Nota:

    Use solo letras minúsculas y guiones. Para más información, consulte la documentación de nomenclatura de objetos de Kubernetes.

    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. Cree un nuevo archivo denominado deploymentExample.yaml con el contenido siguiente. Agrega valores para containers.name y volumes.persistentVolumeClaim.claimName. El parámetro spec.replicas determina el número de pods de réplica que se van a crear. En este ejemplo son 2, pero se puede modificar para adaptarlo a las necesidades:

    Nota:

    Use solo letras minúsculas y guiones. Para más información, consulte la documentación de nomenclatura de objetos de Kubernetes.

    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. Para aplicar estos archivos YAML, ejecute:

    kubectl apply -f "localSharedPVC.yaml"
    kubectl apply -f "deploymentExample.yaml"
    
  4. Ejecute kubectl get pods para buscar el nombre del pod. Copie este nombre, ya que es necesario en el paso siguiente.

    Nota:

    Dado que spec::replicas de deploymentExample.yaml se especificó como 2, aparecen dos pods mediante kubectl get pods. Puede elegir cualquiera de los nombres de pod para usar en el paso siguiente.

  5. Ejecute el siguiente comando y reemplace POD_NAME_HERE por el valor copiado del paso anterior:

    kubectl exec -it pod_name_here -- sh
    
  6. Cambie los directorios a la ruta de acceso de montaje /data, tal como se especifica en deploymentExample.yaml.

  7. Por ejemplo, cree un archivo denominado file1.txt y escriba en él mediante echo "Hello World" > file1.txt.

Después de completar los pasos anteriores, comience a supervisar la implementación mediante Azure Monitor y Supervisión de Kubernetes o supervisión de terceros con Prometheus y Grafana.

Pasos siguientes

Supervisión de la implementación