Kubernetes: используйте два тома в одном и том же постоянном объеме

#kubernetes #azure-aks #persistent-volumes #persistent-volume-claims

#kubernetes #azure-aks #постоянные тома #утверждения о постоянном объеме

Вопрос:

В AKS можно использовать один и тот же постоянный том / PVC для двух разных объемов, я это то, что я пытаюсь:

Развертывание модуля / Здесь я устанавливаю два тома в одном и том же PersistentVolumeClaim

 (...)
          volumeMounts:
            - name: data1
              mountPath: /opt/data/data1
              subPath: data1
            - name: data2
              mountPath: /opt/data/data2
              subPath: data2
      volumes:
        - name: data1
          persistentVolumeClaim:
            claimName: pv-data
        - name: data2
          persistentVolumeClaim:
            claimName: pv-data
(...)
  

Утверждение о постоянном объеме, используемое томами data1 и data2, определенными в Pod deploy

 apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-data
spec:
  accessModes:
  - ReadWriteMany # or ReadWriteOnce
  storageClassName: pv-storage
  resources:
    requests:
      storage: 40Gi
  

Постоянный том

 apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvdisk
spec:
  capacity:
    storage: 40Gi
  storageClassName: pv-storage
  azureDisk:
    kind: Managed
    diskName: disk1
    diskURI: /subscriptions/xxxxx/resourceGroups/xxxx/providers/Microsoft.Compute/disks/disk1
    fsType: ext4
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    name: pv-data
    namespace: default
  

При попытке применить эту «идею» я получаю следующую ошибку:

постоянный объем запроса «data1» не найден Предупреждение не выполнено Планирование 1 с (x2 более 5 с) модуль планировщика по умолчанию не привязан к немедленному постоянному объему запросов (повторяется 2 раза)

Спасибо Tiago

РЕДАКТИРОВАТЬ kubectlописание пвх pv-данных

 Name:          sonar-data
Namespace:     default
StorageClass:  sonar-storage
Status:        Bound
Volume:        pvdisk
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      40Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Mounted By:    pod-69d6c8d89c-8t5lb
               pod-69d6c8d89c-8t5lb
  

kubectl описывает pv pvdisk

 Name:            pvdisk
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    sonar-storage
Status:          Bound
Claim:           default/data
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        40Gi
Message:
Source:
    Type:         AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod)
    DiskName:     XXXXXX
    DiskURI:      XXXXXX
    Kind:         Managed
    FSType:       ext4
    CachingMode:  ReadWrite
    ReadOnly:     false
Events:           <none>
  

Модуль описания

 Volumes:
  data1:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  data1
    ReadOnly:   pv-data
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      data-config
    Optional:  false
  data2:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  pv-data
    ReadOnly:   false
    
(...)
    
Events:
  Type     Reason       Age                    From                                    Message
  ----     ------       ----                   ----                                    -------
Warning  FailedMount  2m21s (x63 over 142m)  kubelet, aks-pool1-19402761-vmss000002  Unable to mount volumes for pod "pod-69d6c8d89c-8t5lb_default(77795ef3-6c88-480a-b3ed-18b9453c742a)": timeout expired waiting for volumes to attach or mount for pod "default"/"pod-69d6c8d89c-8t5lb". list of unmounted volumes=[data1]. list of unattached volumes=[data1 config-volume data2 default-token-nhrrv]
  

Комментарии:

1. Каков статус для PVC? kubectl get pvc

2. добавлена информация о модуле описания

3. Похоже, что AKS не может найти диск, который вы использовали в качестве постоянного тома. Как создать том с помощью диска?

4. У меня есть эта информация в description -> PersistentVolume

5. Вы проверяете, правильно ли подключается диск с данными к узлу?

Ответ №1:

Чтобы это сработало, вам нужно объявить том только один раз.

 (...)
          volumeMounts:
            - name: data
              mountPath: /opt/data/data1
              subPath: data1
            - name: data
              mountPath: /opt/data/data2
              subPath: data2
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: pv-data
(...)