Minikube / Kubernetes mountPath недоступен

Я использую minikube / Kubernetes, и мне трудно получить доступ к тому из volumeMount в развертывании.

Я могу подтвердить, что когда микросервис запускается, он не может получить доступ к каталогу / config (то есть к «mountPath» в «volumeMounts»). Я проверил, что hostPath / path действителен.

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

Обратите внимание, что я использую «hostPath» для простых целей тестирования, однако это тот сценарий, который мне, тем не менее, нужно рассмотреть.

Моя конфигурация minikube показана ниже:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T07:30:54Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}

Я запускаю minikube на MacOS / Sierra версии 10.12.3 (16D32).

Мой файл развертывания (deployment.yaml):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: atmp1000-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: atmp1000
    spec:
      containers:
      - name: atmp1000
        image: atmp1000
        ports:
        - containerPort: 7010
        volumeMounts:
          - name: atmp1000-volume
            mountPath: '/config'
      volumes:
      - name: atmp1000-volume
        hostPath:
          path: '/Users/<username>/<some-path>/config'

Любая помощь приветствуется.


person Eric Broda    schedule 22.02.2017    source источник


Ответы (2)


В интересах полноты, ниже представлено решение, которое я нашел ... Я получил hostPath и mounts, работающие на minikube (на Mac), для чего потребовалось несколько шагов, но потребовалось несколько команд "minikube delete", чтобы получить самую последнюю версию и сбросить окружение. Ниже приведены некоторые дополнительные примечания о том, как добиться этого:

  • Мне пришлось использовать драйвер xhyve, чтобы все это работало должным образом - он, вероятно, работает с другими драйверами, но я их не пробовал.

  • Я обнаружил, что minikube монтирует пути к хостам в «/ User», что означает, что «volume / hostPath / path» должен начинаться с «/ User».

  • Я нашел множество способов, которыми это сработало, включая использование утверждений, но файлы в исходном вопросе теперь отражают правильную и простую конфигурацию.

person Eric Broda    schedule 24.02.2017

Каталоги монтирования хоста пока не поддерживаются minikube. Пожалуйста, проверьте https://github.com/kubernetes/minikube/issues/2.

Внутри minikube использует виртуальную машину для размещения Kubernetes. Если вы укажете hostPath в спецификации POD, Kubernetes будет монтировать указанный каталог внутри виртуальной машины, а не каталог на вашем фактическом хосте.

Если вам действительно нужен доступ к чему-либо на вашем хост-компьютере, вы должны использовать NFS или любой другой сетевой тип тома.

person Alexander Block    schedule 22.02.2017
comment
OK. Я могу попробовать nfs, однако в документации minikube прямо указано, что hostPath можно использовать для minikube .. см. github.com/kubernetes / minikube) и см .: блог. kubernetes.io/2016/07/). Я не уверен, что это имеет значение, но я использую гипервизор xhyve на Mac вместо использования версии VirtualBox. - person Eric Broda; 22.02.2017
comment
Из первой упомянутой ссылки: Minikube поддерживает PersistentVolumes типа hostPath. Эти PersistentVolumes сопоставляются с каталогом внутри виртуальной машины minikube. Обратите внимание на последнее предложение. Он говорит, что монтирование хоста основано на каталоге ВНУТРИ ВМ. - person Alexander Block; 23.02.2017
comment
Быстрые вопросы относительно hostPath, поскольку я не могу найти его специально обсужденного в документации: если бы я хотел получить доступ к файлам хоста изнутри виртуальной машины minikube и в подах, где на хосте находится корневой каталог minikube, в который я должен помещать файлы, чтобы они могли быть видимым в mounthPath (я понимаю, что это не лучшая практика, но я пытаюсь решить конкретную проблему)? - person Eric Broda; 23.02.2017
comment
Ах, извините, я только что перечитал ридми по minikube. В подключенных-хост-папках я вижу, что / Users фактически разделяется между виртуальную машину и хост, поэтому ваше первоначальное развертывание должно работать должным образом. Какая у вас ошибка? Это также может быть проблема с разрешением. - person Alexander Block; 23.02.2017
comment
Я пытаюсь получить доступ к файлу конфигурации, который существует в определенном каталоге хоста, и при доступе к нему из модуля появляется сообщение об ошибке, указывающее, что файл не существует. Я считаю, что это происходит из-за того, что я неправильно монтирую каталог. Но если я понимаю ваш комментарий о том, что / Users уже смонтирован (я вижу общий ресурс в / etc / exports), то корневой каталог в модуле сопоставляется с общим ресурсом. Если это так, то, может быть, мне нужны относительные пути от точки монтирования (/ Users)? мысли? - person Eric Broda; 23.02.2017