Azure ACS: том файла Azure не работает

Я следовал инструкциям на github, чтобы настроить том лазурных файлов.

apiVersion: v1
kind: Secret
metadata:
name: azure-files-secret
type: Opaque
data:
  azurestorageaccountname: Yn...redacted...=
  azurestorageaccountkey: 3+w52/...redacted...MKeiiJyg==

Затем в моей конфигурации модуля есть:

...stuff
volumeMounts:
  - mountPath: /var/ccd
  name: openvpn-ccd
...more stuff
volumes:
    - name: openvpn-ccd
      azureFile:
        secretName: azure-files-secret
        shareName: az-files
        readOnly: false

Затем создание контейнеров завершается ошибкой:

 MountVolume.SetUp failed for volume "kubernetes.io/azure-file/007adb39-30df-11e7-b61e-000d3ab6ece2-openvpn-ccd" (spec.Name: "openvpn-ccd") pod "007adb39-30df-11e7-b61e-000d3ab6ece2" (UID: "007adb39-30df-11e7-b61e-000d3ab6ece2") with: mount failed: exit status 32 Mounting command: mount Mounting arguments: //xxx.file.core.windows.net/az-files /var/lib/kubelet/pods/007adb39-30df-11e7-b61e-000d3ab6ece2/volumes/kubernetes.io~azure-file/openvpn-ccd cifs [vers=3.0,username=xxx,password=xxx,dir_mode=0777,file_mode=0777] Output: mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Раньше у меня возникали ошибки пароля, так как я не кодировал ключ учетной записи base64, но теперь это разрешилось, и я получаю более общую ошибку отказа в доступе, которая, как я подозреваю, может быть связана с точкой монтирования, а не хранилище файлов. В любом случае, мне нужен совет по устранению неполадок, пожалуйста?


person Chris    schedule 04.05.2017    source источник
comment
Вам нужно использовать ранее созданную учетную запись хранения? Вы также можете указать файл .yaml, чтобы создать для вас хранилище Azure.   -  person radu-matei    schedule 05.05.2017
comment
@ radu-matei спасибо - не могли бы вы посоветовать, где найти документы, я изо всех сил пытаюсь увидеть? Я бы предпочел использовать существующую учетную запись хранения и поделиться ею, но это не обязательно...   -  person Chris    schedule 05.05.2017


Ответы (1)


Похоже, это ошибка авторизации вашей учетной записи хранения. Удалите пароль из base64, а затем подтвердите его с помощью образа Ubuntu в том же регионе, что и учетная запись хранения.

Вот пример скрипта для проверки правильности подключения общей папки Azure Files:

if [ $# -ne 3 ]
then
 echo "you must pass arguments STORAGEACCOUNT STORAGEACCOUNTKEY SHARE"
 exit 1
fi

ACCOUNT=$1
ACCOUNTKEY=$2
SHARE=$3
MOUNTSHARE=/mnt/${SHARE}

apt-get update && apt-get install -y cifs-utils

mkdir -p /mnt/$SHARE
mount -t cifs //${ACCOUNT}.file.core.windows.net/${SHARE} ${MOUNTSHARE} -o vers=2.1,username=${ACCOUNT},password=${ACCOUNTKEY}
person A Howe    schedule 08.05.2017
comment
Я не могу доказать, что это ошибка авторизации (или нет). Я уже пробовал образ Ubuntu, он работает, но не работает на узлах ACS, на которых запущен контейнер. (В том же регионе.) Я использовал -o vers=3.0 в качестве узла kubernetes... но он все еще работал на Ubuntu, а не на Kube. Я попробовал виртуальную машину в другом регионе и получил ту же ошибку «Отказано в доступе». Все в моем ACS и хранилище файлов находится в регионе Северной Европы. И это воспроизводимо в нескольких кластерах ACS (поскольку я перестраиваю его каждый день во время разработки). - person Chris; 09.05.2017
comment
Спасибо за подтверждение, попробую воспроизвести на своей стороне. А пока можете дважды подтвердить, что вы использовали значение пароля, которое вы сохранили в kubernetes (unbase64), а не пароль, скопированный с портала/cli. - person A Howe; 09.05.2017
comment
Да, я скопировал его из сообщения об ошибке, так как он там полностью... тот же пароль работал на ubuntu - person Chris; 09.05.2017
comment
Я также попробовал это на самом агенте вручную, и с sudo это работает... полное воспроизведение здесь: github.com/kubernetes/kubernetes/issues/45827 - person Chris; 15.05.2017