Как мне смонтировать и отформатировать новый компьютерный диск Google, который будет смонтирован в модуле GKE? - PullRequest
2 голосов
/ 29 октября 2019

Я создал новый диск в Google Compute Engine.

gcloud compute disks create --size=10GB --zone=us-central1-a dane-disk

Он говорит, что мне нужно отформатировать его. Но я понятия не имею, как я могу смонтировать / получить доступ к диску?

gcloud compute disks list
NAME                                               LOCATION       LOCATION_SCOPE  SIZE_GB  TYPE         STATUS
notowania-disk                                     us-central1-a  zone            10       pd-standard  READY

Новые диски не отформатированы. Вы должны отформатировать и смонтировать диск, прежде чем его можно будет использовать. Инструкции о том, как это сделать, можно найти по адресу:

https://cloud.google.com/compute/docs/disks/add-persistent-disk#formatting

Я пробовал указанную выше инструкцию, но lsblk вообще не показывает диск

Нужно ли создавать виртуальную машину и как-то присоединять ее к ней, чтобы использовать ее? Моей целью было смонтировать диск как постоянный том GKE , независимый от виртуальной машины (в последний раз обновление GKE вызывало воссоздание виртуальной машины и потерю данных)

1 Ответ

3 голосов
/ 29 октября 2019

Спасибо за разъяснение того, что вы пытаетесь сделать в комментариях.

У меня есть 2 разных ответа.


Первое, что мое тестирование показывает, что Kubernetes GCE PD документация в точности соответствует действительности, и предупреждение о форматировании может быть проигнорировано.

Если вы просто выполните команду:

gcloud compute disks create --size=10GB --zone=us-central1-a my-test-data-disk

И затем используйте еев модуле:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: nginx-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    # This GCE PD must already exist.
    gcePersistentDisk:
      pdName: my-test-data-disk
      fsType: ext4

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

Итак, предупреждающее сообщение от gcloud сбивает с толку, но в этом случае его можно проигнорировать.


Теперь, чтобы динамически создать постоянный том на основе GCE PD, который не удаляется автоматически, вам нужно будет создать новый StorageClass, в котором для политики восстановления установлено значение Retain, а затем создатьPersistentVolumeClaim на основании этого StorageClass. Это также сохраняет в основном всю операцию внутри Kubernetes без необходимости что-либо делать с gcloud. Аналогично, подобный подход - то, что вы хотели бы использовать с StatefulSet в отличие от одного модуля, как описано здесь .

Описано большинство того, что вы хотите сделатьв этой документации GKE о динамическом распределении PVC , а также в документации Kubernetes StorageClass . Вот пример:

gce-pd-retain-storageclass.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gce-pd-retained
reclaimPolicy: Retain
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  replication-type: none

Приведенный выше класс хранения в основном совпадает со стандартным классом хранения GKE, за исключением *Для 1044 * установлено значение Сохранять.

pvc-demo.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-demo-disk
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: gce-pd-retained
  resources:
    requests:
      storage: 10Gi

При применении вышеизложенного будет динамически создан диск, который будет сохранен при удалении заявки.

И, наконец, demo-pod.yaml, который монтирует PVC как том (это на самом деле бессмысленный пример с использованием nginx, но демонстрирует синтаксис):

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: nginx-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    persistentVolumeClaim:
      claimName: pvc-demo-disk

Теперь, если вы примените эти три вВ этом случае вы получите контейнер, работающий с использованием PersistentVolumeClaim, который автоматически создал (и отформатировал) диск для вас. Когда вы удаляете модуль, иск сохраняет диск вокруг. Если вы удалите претензию , StorageClass по-прежнему удерживает диск от удаления.

Обратите внимание, что PV, оставшийся после этого, не будет автоматически повторно использован, так как данные все еще включены. диск. См. документацию Kubernetes о том, что вы можете сделать, чтобы вернуть его в этом случае. На самом деле это в основном говорит о том, что вам не следует удалять PVC, если вы не готовы выполнить работу по удалению данных со старого тома.

Обратите внимание, что эти диски будут продолжать существовать, даже когда весь кластер GKEтакже удаляется (и вы будете продолжать выставлять счета за них, пока не удалите их).

...