Могу ли я объединить StorageClass с PersistentVolume в GKE? - PullRequest
0 голосов
/ 30 октября 2019

Я довольно новичок в Kubernetes, и мне трудно заставить его работать из документации. Документация Kubenetes говорит, что StorageClass contains the fields provisioner, parameters, and reclaimPolicy, which are used when a PersistentVolume belonging to the class needs to be dynamically provisioned однако можно ли использовать StorageClass с PV (не динамическое распределение), чтобы указать высокопроизводительное распределение дисков, такое как ssd?

без StorageClass это работало нормально для меня.

следующее - мой манифест

kind: PersistentVolume
metadata:
  name: gke-pv
  labels:
    app: test
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: gce-disk
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gke-pvc
  labels:
    app: test
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ssd-sc 
  resources:
    requests:
      storage: 2Gi
  selector:
    matchLabels:
      app: test

Ответы [ 2 ]

2 голосов
/ 30 октября 2019

Вам необходим класс хранилища, если хранилище необходимо подготовить динамически.

Если вы инициализируете постоянные тома, это называется статическим выделением памяти. Вам не нужен класс хранения в этом сценарии

1 голос
/ 30 октября 2019

Проблема, которая здесь происходит, заключается в том, что если вы хотите статически предоставить PersistentVolumes, у них нет StorageClass. Однако кластеры GKE создаются с standard StorageClass, который является значением по умолчанию, и поэтому PVC запутывается и пытается динамически распределить.

Решение состоит в том, чтобы запрос PVC пустым классом хранения,что заставляет его смотреть на статически подготовленные PV.

Таким образом, вы будете использовать последовательность, подобную этой, чтобы создать PV, а затем привязать его к PVC:

  • Предоставление вручнуюssd:

gcloud compute disks create --size=10Gi --zone=[YOUR ZONE] --type=pd-ssd already-created-ssd-disk

  • Затем примените объект PV, который использует статически подготовленный диск, например:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: ssd-for-k8s-volume
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: already-created-ssd-disk
    fsType: ext4
  • Затем вы можете заявить это с помощью PVC следующим образом:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-ssd-demo
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

Вы также можете использовать метки, чтобы уточнить, какие PV выбраны, конечно, например, если у вас есть некоторые, которыеSSD и другие, которые регулярно вращаются.

Обратите внимание, что идея использования StorageClass для статической инициализации не совсем правильная, поскольку StorageClass привязан к , как вы описываете. хранилище для динамического обеспечения .

...