Поделиться через


Локальные тома общих пограничных вычислений

В этой статье описывается конфигурация локальных общих пограничных томов (высокодоступное, устойчивое локальное хранилище).

Что такое локальный общий пограничный том?

Функция локальных общих пограничных томов обеспечивает высокодоступное, отказоустойчивое хранилище, локальное в кластере Kubernetes. Этот общий тип хранилища остается независимым от облачной инфраструктуры, что делает его идеальным для места с нуля, временного хранилища и локальных постоянных данных, которые могут быть неподходящими для облачных назначений.

Создание утверждения сохраняемого тома локального общего пограничного сервера (PVC) и настройка модуля pod для ПВХ

  1. Создайте файл с именем localSharedPVC.yaml со следующим содержимым. Измените metadata.name значение с именем утверждения постоянного тома. Затем в строке 8 укажите пространство имен, соответствующее предполагаемому потреблению pod. Значение metadata.name ссылается на последнюю строку следующего deploymentExample.yaml шага. Параметр spec.resources.requests.storage определяет размер постоянного тома. В этом примере это 2 ГБ, но его можно изменить в соответствии с вашими потребностями:

    Примечание.

    Используйте только строчные буквы и дефисы. Дополнительные сведения см. в документации по именовании объектов 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. Создайте файл с именем deploymentExample.yaml со следующим содержимым. Добавление значений для containers.name и volumes.persistentVolumeClaim.claimName. Параметр spec.replicas определяет количество создаваемых модулей pod реплики. Это 2 в этом примере, но его можно изменить в соответствии с вашими потребностями:

    Примечание.

    Используйте только строчные буквы и дефисы. Дополнительные сведения см. в документации по именовании объектов 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. Чтобы применить эти файлы YAML, выполните следующую команду:

    kubectl apply -f "localSharedPVC.yaml"
    kubectl apply -f "deploymentExample.yaml"
    
  4. Выполните команду kubectl get pods , чтобы найти имя модуля pod. Скопируйте это имя, так как оно необходимо на следующем шаге.

    Примечание.

    Так как spec::replicas в deploymentExample.yaml качестве 2значения задано два модуля pod, используются kubectl get pods. Вы можете выбрать любое имя модуля pod, используемое для следующего шага.

  5. Выполните следующую команду и замените POD_NAME_HERE скопированное значение на предыдущем шаге:

    kubectl exec -it pod_name_here -- sh
    
  6. Измените /data каталоги на путь подключения, как указано в deploymentExample.yamlразделе .

  7. Например, создайте файл с именем file1.txt и напишите его с помощью echo "Hello World" > file1.txt.

После выполнения предыдущих действий начните мониторинг развертывания с помощью Azure Monitor и Мониторинга Kubernetes или мониторинга сторонних производителей с помощью Prometheus и Grafana.

Следующие шаги

Мониторинг развертывания