Не удается смонтировать том glusterfs на GKE - PullRequest
0 голосов
/ 29 мая 2020

Я развернул кластер GlusterFS на GCE, три узла, один том и один кирпич. Мне нужно смонтировать его на модуле, развернутом на GKE. Я успешно создал конечную точку и PV, но не могу создать PV C. Если я введу имя тома, относящееся к моему PV, я получу следующую ошибку:

2s Warning VolumeMismatch persistentvolumeclaim/my-glusterfs-pvc Cannot bind to requested volume "my-glusterfs-pv": storageClassName does not match

Если я не введу селектор volumeName, я получу следующую ошибку:

3s Warning ProvisioningFailed persistentvolumeclaim/my-glusterfs-pvc Failed to provision volume with StorageClass "standard": invalid AccessModes [ReadWriteMany]: only AccessModes [ReadWriteOnce ReadOnlyMany] are supported

Я хотя у glusterfs есть встроенная поддержка GKE, однако я не могу найти на сайте GCP:

https://cloud.google.com/kubernetes-engine/docs/concepts/node-images#storage_driver_support

Связано ли это с ошибками, которые я получаю при развертывании PV C? Как я могу решить эту проблему?

Спасибо!

Я не определил никакого storageClass. Я могу найти только подготовленный Heketi GlusterFS storageClass в документации Kubernetes. Мои YAML:

kind: PersistentVolume
metadata:
  name: my-glusterfs-pv
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  glusterfs:
    path: mypath
    endpoints: my-glusterfs-cluster
    readOnly: false
  persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-glusterfs-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  volumeName: my-glusterfs-pv

Я развернул Heketi на своем кластере glusterfs, и он работает правильно. Однако я не могу развернуть pv c на GKE. Glusterfs-client работает нормально, секрет heketi доступен, класс хранилища gluster был создан без ошибок, но PV C остается в ожидании. Я обнаружил это событие:

17m         Warning   ProvisioningFailed       persistentvolumeclaim/liferay-glusterfs-pvc   Failed to provision volume with StorageClass "gluster-heketi-external": failed to create volume: failed to create volume: see kube-controller-manager.log for details

Storageclass:

kind: StorageClass
#apiVersion: storage.k8s.io/v1beta1
apiVersion: storage.k8s.io/v1
metadata:
  name: gluster-heketi-external
provisioner: kubernetes.io/glusterfs
parameters:
  restauthenabled: "true"
  resturl: "http://my-heketi-node-ip:8080"
  clusterid: "idididididididididid"
  restuser: "myadminuser"
  secretName: "heketi-secret"
  secretNamespace: "my-app"
  volumetype: "replicate:3"

PV C:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    volume.beta.kubernetes.io/storage-class: gluster-heketi-external
 # finalizers:
 # - kubernetes.io/pvc-protection
  name: my-app-pvc
  namespace: my-app
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Gi

Я также создал правило брандмауэра, необходимое для Heketi, чтобы узлы GKE могли получить доступ к рестурлу и порту Heketi. Я проверил, что он работает нормально, запустив порт te lnet на 8080, пока я обнюхивал трафик c на узле Heketi. Вроде все нормально, я вижу ответ и пакеты. Однако я не вижу никаких пакетов при развертывании pv c. В системном журнале ничего нет. Я могу создавать тома, когда команда heketi запускается локально.

Я попытался скрутить узел Heketi из модуля gluster-client, и он работает правильно:

kubectl exec -it gluster-client-6fqmb -- curl http://[myheketinodeip]:8080/hello
Hello from Heketi
...