Доступ к файловому ресурсу Azure из локального кластера Kubernetes

OS: Windows 10  
Kubernetes version: 1.14.8  
Helm version: 3  
Docker Desktop version: 2.1.0.5

Попытка развернуть кластер Kubernetes с помощью Helm-диаграммы, содержащей модуль, который подключается к статически подготовленному файловому ресурсу Azure. Развертывание в кластере Azure Kubernetes работает, но когда мы пытаемся развернуть кластер локально на рабочем столе докера, при попытке смонтировать общий ресурс появляется сообщение об ошибке:

Невозможно смонтировать тома для модуля "": истекло время ожидания подключения томов для модуля "". список размонтированных томов =[servicecatalog-persistent-storage]. список неприсоединенных томов =[интерактор-свойства servicecatalog-persistent-storage default-token-9fp7j]

Аргументы монтирования: -t cifs -o username=,password=,file_mode=0777,dir_mode=0777,vers=3.0 //.file.core.windows.net/spps /var/lib/kubelet/pods/44a70ebf-1b26-11ea-ab13-00155d0a4406/volume/kubernetes.io~azure-file/servicecatalog-spp-pv Вывод: ошибка монтирования (11): ресурс временно недоступен

Таблицы руля (удалена лишняя информация):

Развертывание:

apiVersion: apps/v1
kind: Deployment
spec:
    spec:
      containers:
        - name: {{ .Release.Name }}-{{ .Chart.Name }}
          volumeMounts:
            - name: servicecatalog-persistent-storage
              mountPath: /data/sppstore
      volumes:
        - name: servicecatalog-persistent-storage
          persistentVolumeClaim:
            claimName: servicecatalog-pv-claim

Постоянное хранилище / претензии:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: servicecatalog-spp-pv
  labels:
    usage: servicecatalog-spp-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  azureFile:
    secretName: azurefile-secret
    shareName: spps
    readOnly: false

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: servicecatalog-pv-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
  storageClass: 
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      usage: servicecatalog-spp-pv

Секрет:

apiVersion: v1
kind: Secret
metadata:
  name: azurefile-secret
type: Opaque
data:
  azurestorageaccountname: <acc name>
  azurestorageaccountkey:<acc key>

Мы пробовали:

  • Использование диагностики файлов Azure, чтобы убедиться, что порты открыты и мы можем подключиться с нашего компьютера. ссылка
  • Подключение с помощью обозревателя хранилищ Azure (работает)

Microsoft заявляет, что для локального подключения к файловому ресурсу Azure требуется SMB 3.0 из соображений безопасности, которые поддерживает Windows 10, но Kubernetes, похоже, использует CIFS (который является диалектом SMB?), Но мы не можем выяснить, поддерживается ли он для доступа к файлам Azure. Поделиться. Есть идеи?

1 ответ

Рекомендуемый способ подключения файлового ресурса Azure в Linux - использование SMB 3.0. По умолчанию для файлов Azure требуется шифрование при передаче, которое поддерживается только SMB 3.0. Файлы Azure также поддерживают SMB 2.1, который не поддерживает шифрование при передаче, но вы не можете подключать общие файловые ресурсы Azure с SMB 2.1 из другого региона Azure или локально по соображениям безопасности.

https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-linux

поэтому, если вы используете smb 2.1, вы можете монтировать общий файловый ресурс только из того же региона. не с локальной рабочей станции или из другого лазурного региона

так как ваш cifs mount упоминает vers=3.0- Я полагаю, это должно сработать в вашем случае. проверить ограничения доступа к сети учетной записи хранения? или ограничения вашей сети. скажем, порт 445 или другие проблемы, упомянутые в связанной статье

Другие вопросы по тегам