Kubernetes постоянный объем на собственной стойке

Я перемещаю kubernetes от Google GKE, чтобы владеть в домашней стойке. Какое постоянное хранилище я должен использовать?

Kubernetes Local Persistent стала бета-версией только 13 апреля 2018 года https://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/

Я видел много вариантов: - https://kubernetes.io/docs/concepts/storage/persistent-volumes/

Не уверен, что я должен выбрать. Будет ли что-то работать с файлами развертывания GKE?

1 ответ

В Deployment файлы из GKE, вам нужно изменить spec.volumes настройки в соответствии с вашими настройками постоянного уровня громкости.

Я рекомендую вам выбрать один из следующих вариантов:

  1. Самый простой способ - это использовать HostPath, Он монтирует файл или каталог из файловой системы узла узла в ваш Pod. Обратите внимание, что в этом случае данные на одном узле недоступны с другого узла без дополнительных настроек. Пример использования в Kubernetes:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pd
    spec:
      containers:
      - image: k8s.gcr.io/test-webserver
        name: test-container
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /data
          # this field is optional
          type: Directory
    
  2. Ты можешь использовать NFS, Вам необходимо настроить сервер NFS, после чего вы можете использовать его тома в развертываниях через утверждения постоянных томов. Пример использования в Kubernetes:

    apiVersion: v1
    kind: Deployment
    metadata:
      name: nfs-busybox
    spec:
      replicas: 2
      selector:
        name: nfs-busybox
      template:
        metadata:
          labels:
            name: nfs-busybox
        spec:
          containers:
         - image: busybox
            command:
              - sh
              - -c
              - 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
            imagePullPolicy: IfNotPresent
            name: busybox
            volumeMounts:
              # name must match the volume name below
              - name: nfs
                mountPath: "/mnt"
          volumes:
          - name: nfs
            persistentVolumeClaim:
              claimName: nfs
    

    Вы можете просмотреть ссылку для получения дополнительной информации об использовании NFS.

  3. Ты можешь использовать GlusterFS, Вам необходимо настроить собственную установку GlusterFS, после чего вы можете использовать ее тома в Deployments. Пример использования в Kubernetes:

    apiVersion: v1
    kind: Deployment
    metadata:
      name: nfs-busybox
    spec:
      replicas: 2
      selector:
        name: nfs-busybox
      template:
        metadata:
          labels:
            name: nfs-busybox
        spec:
          containers:
         - image: busybox
            command:
              - sh
              - -c
              - 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done'
            imagePullPolicy: IfNotPresent
            name: busybox
            volumeMounts:
              # name must match the volume name below
              - name: nfs
                mountPath: "/mnt"
          volumes:
          - name: glusterfsvol
            glusterfs:
              endpoints: glusterfs-cluster
                path: kube_vol
                readOnly: true
    

    Вы можете просмотреть ссылку для получения дополнительной информации об использовании GlusterFS.

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

Другие вопросы по тегам