Монтирование томов грачей в Google Kubernetes Engine (GKE) - PullRequest
0 голосов
/ 06 июня 2019

Я копался в Rook + Ceph для Kubernetes, пытался заставить его работать под Google Kubernetes Engine и столкнулся с кирпичной стеной.

Следуя документации, я выполнил следующие команды и убедился, что каждая из них дала желаемый эффект:

kubectl create -f common.yaml
kubectl create -f operator.yaml
kubectl create -f cluster.yaml
kubectl create -f filesystem.yaml

Все файлы yaml по умолчанию имеют формат , предоставленный Rook , за исключением operator.yaml, в котором я добавил следующую переменную окружения в соответствии с документами GKE :

- name: FLEXVOLUME_DIR_PATH
  value: "/home/kubernetes/flexvolume"

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

По сути, я хочу иметь возможность монтировать общее хранилище файлов Ceph как том из обычного старого образа контейнера. Я пробовал следующий yaml безуспешно:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
  namespace: default
spec:
  containers:
  - name: ubuntu
    image: ubuntu:bionic
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: image-store
      mountPath: /mnt/shared
  volumes:
  - name: image-store
    flexVolume:
      driver: ceph.rook.io/rook
      fsType: ceph
      options:
        fsName: myfs
        clusterNamespace: rook-ceph
  restartPolicy: Always

Насколько я знаю, я не понимаю, почему это не сработает, но при выполнении kubectl describe pods ubuntu получаю следующий вывод:

Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/10ee80d1-8873-11e9-8f45-42010a8a01d8/volumes/ceph.rook.io~rook/image-store --scope -- mount -t ceph -o name=admin,secret=AQDAM/lcQFKHARAAh/O27Wl+iRKRzREsMML+4g==,mds_namespace=myfs 10.8.3.134:6789,10.8.13.226:6789,10.8.5.39:6789:/ /var/lib/kubelet/pods/10ee80d1-8873-11e9-8f45-42010a8a01d8/volumes/ceph.rook.io~rook/image-store
Output: Running scope as unit: run-reb61186d1ff64e6e846a200580aa5395.scope
mount: /var/lib/kubelet/pods/10ee80d1-8873-11e9-8f45-42010a8a01d8/volumes/ceph.rook.io~rook/image-store: special device 10.8.3.134:6789,10.8.13.226:6789,10.8.5.39:6789:/ does not exist.
  Warning  FailedMount  51s (x2 over 2m53s)  kubelet, gke-kubey-cluster-default-pool-6856b374-nb0c  (combined from similar events): MountVolume.SetUp failed for volume "image-store" : mount command failed, status: Failure, reason: failed to mount filesystem myfs to /var/lib/kubelet/pods/10ee80d1-8873-11e9-8f45-42010a8a01d8/volumes/ceph.rook.io~rook/image-store with monitor 10.8.3.134:6789,10.8.13.226:6789,10.8.5.39:6789:/ and options [name=admin secret=AQDAM/lcQFKHARAAh/O27Wl+iRKRzREsMML+4g== mds_namespace=myfs]: mount failed: exit status 32

Есть ли пример того, как чего-то добиться в дикой природе?

1 Ответ

1 голос
/ 24 июня 2019

Убедитесь, что вы выполнили все необходимые условия для установки Rook: rook_setup .

Затем попробуйте установить:

nfs-common

на всех ваших узлах.

...