Pod монтирует неправильный каталог на узле, когда настроен гибкий файл с cifs

#kubernetes #cifs

#kubernetes #cifs

Вопрос:

Следующая проблема возникает в кластере Kubernetes с 1 ведущим и 3 узлами, а также на одной машине Kubernetes.

Я настроил Kubernetes с поддержкой smb flexvolume (https://github.com/Azure/kubernetes-volume-drivers/tree/master/flexvolume/smb ). Когда я применяю новый модуль с flexvolume, узел подключает общий ресурс smb, как и ожидалось. Но модуль указывает свой общий ресурс на какой-либо каталог docker на узле.

Моя установка:

Создайте модуль с

smb-secret.yaml

 apiVersion: v1
kind: Secret
metadata:
  name: smb-secret
type: microsoft.com/smb
data:
  username: YVVzZXI=
  password: YVBhc3N3b3Jk
  

nginx-flex-smb.yaml

 apiVersion: v1
kind: Pod
metadata:
  name: nginx-flex-smb
spec:
  containers:
  - name: nginx-flex-smb
    image: nginx
    volumeMounts:
    - name: test
      mountPath: /data
  volumes:
  - name: test
    flexVolume:
      driver: "microsoft.com/smb"
      secretRef:
        name: smb-secret
      options:
        source: "//<host.with.smb.share>/kubetest"
        mountoptions: "vers=3.0,dir_mode=0777,file_mode=0777"
  

Что происходит

  • Точка монтирования на узле создается на /var/lib/kubelet/pods/bef26895-5ac7-11e9-a668-00155db9c92e/volumes/microsoft.com~smb .
  • mount ВОЗВРАТ //<host.with.smb.share>/kubetest on /var/lib/kubelet/pods/bef26895-5ac7-11e9-a668-00155db9c92e/volumes/microsoft.com~smb/test type cifs (rw,relatime,vers=3.0,cache=strict,username=aUser,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=172.27.72.43,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
  • чтение и запись работают должным образом на хосте и на самом узле
  • в Pod
    • mount for /data указывает на tmpfs on /data type tmpfs (rw,nosuid,nodev,seclabel,size=898680k,nr_inodes=224670,mode=755)
    • но содержимое каталога / данные поступают из /run/docker/libcontainerd/8039742ae2a573292cd9f4ef7709bf7583efd0a262b9dc434deaf5e1e20b4002/ узла.

Я попытался установить Pod с помощью PersistedVolumeClaime и получил ту же проблему. Поиск этой проблемы не дал мне никаких решений.

Другие наши модули используют GlusterFS и heketi, которые отлично работают.

Возможно, произошел сбой конфигурации? Чего-то не хватает?

РЕДАКТИРОВАТЬ: решение
Я обновил Docker до последней проверенной версии 18.06, и теперь все работает хорошо.

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

1. Привет @Reto Stadler Не могли бы вы добавить свое решение в качестве ответа и пометить его как одобренное? Это сделает ваше решение более заметным, если кто-то будет искать похожие проблемы.

Ответ №1:

Я обновил Docker до последней проверенной версии 18.06, и теперь все работает хорошо.

Чтобы установить его, следуйте инструкциям на Get Docker CE для CentOS.