Учебники

Кубернетес — Тома

В Kubernetes том можно рассматривать как каталог, который доступен контейнерам в модуле. У нас есть разные типы томов в Kubernetes, и этот тип определяет, как создается том и его содержимое.

Концепция громкости присутствовала в докере, однако единственная проблема заключалась в том, что громкость была очень ограничена конкретной коробкой. Как только жизнь стручка закончилась, объем также был потерян.

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

Типы Кубернетес Объем

Вот список некоторых популярных томов Kubernetes —

  • emptyDir — это тип тома, который создается, когда Pod впервые назначается узлу. Он остается активным, пока Pod работает на этом узле. Том изначально пуст, и контейнеры в модуле могут читать и записывать файлы в томе emptyDir. После удаления Pod из узла данные в emptyDir удаляются.

  • hostPath — Этот тип тома монтирует файл или каталог из файловой системы узла узла в ваш модуль.

  • gcePersistentDisk — этот тип тома монтирует постоянный диск Google Compute Engine (GCE) в ваш модуль. Данные в gcePersistentDisk остаются нетронутыми, когда Pod удаляется из узла.

  • awsElasticBlockStore — этот тип тома монтирует хранилище эластичных блоков Amazon Web Services (AWS) в ваш модуль. Как и в случае с gcePersistentDisk , данные в хранилище awsElasticBlockStore остаются нетронутыми при удалении Pod из узла.

  • nfs — том nfs позволяет монтировать существующую NFS (сетевую файловую систему) в ваш модуль. Данные в томе NFS не удаляются при удалении Pod из узла. Объем только размонтирован.

  • iscsi — том iscsi позволяет монтировать существующий том iSCSI (SCSI через IP) в ваш модуль.

  • flocker — это диспетчер томов данных кластерного контейнера с открытым исходным кодом. Используется для управления объемами данных. Том Flocker позволяет монтировать набор данных Flocker в модуль. Если набор данных не существует во Flocker, то сначала необходимо создать его с помощью API Flocker.

  • glusterfs — Glusterfs — это сетевая файловая система с открытым исходным кодом. Том glusterfs позволяет монтировать том glusterfs в ваш модуль.

  • rbd — RBD означает блочное устройство Rados . Том rbd позволяет монтировать блочное устройство Rados в ваш модуль. Данные остаются сохраненными после того, как Pod удален из узла.

  • cephfs — том cephfs позволяет монтировать существующий том CephFS в ваш модуль. Данные остаются нетронутыми после удаления стручка из узла.

  • gitRepoТом gitRepo монтирует пустой каталог и клонирует в него репозиторий git для использования вашим модулем.

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

  • persistentVolumeClaim — том persistentVolumeClaim используется для монтирования PersistentVolume в модуль. PersistentVolumes — это способ для пользователей «требовать» надежного хранилища (такого как GCE PersistentDisk или том iSCSI), не зная деталей конкретной облачной среды.

  • downwardAPI — том downwardAPI используется для того, чтобы сделать нисходящие данные API доступными для приложений. Он монтирует каталог и записывает запрошенные данные в виде текстовых файлов.

  • azureDiskVolumeAzureDiskVolume используется для подключения диска данных Microsoft Azure к модулю .

emptyDir — это тип тома, который создается, когда Pod впервые назначается узлу. Он остается активным, пока Pod работает на этом узле. Том изначально пуст, и контейнеры в модуле могут читать и записывать файлы в томе emptyDir. После удаления Pod из узла данные в emptyDir удаляются.

hostPath — Этот тип тома монтирует файл или каталог из файловой системы узла узла в ваш модуль.

gcePersistentDisk — этот тип тома монтирует постоянный диск Google Compute Engine (GCE) в ваш модуль. Данные в gcePersistentDisk остаются нетронутыми, когда Pod удаляется из узла.

awsElasticBlockStore — этот тип тома монтирует хранилище эластичных блоков Amazon Web Services (AWS) в ваш модуль. Как и в случае с gcePersistentDisk , данные в хранилище awsElasticBlockStore остаются нетронутыми при удалении Pod из узла.

nfs — том nfs позволяет монтировать существующую NFS (сетевую файловую систему) в ваш модуль. Данные в томе NFS не удаляются при удалении Pod из узла. Объем только размонтирован.

iscsi — том iscsi позволяет монтировать существующий том iSCSI (SCSI через IP) в ваш модуль.

flocker — это диспетчер томов данных кластерного контейнера с открытым исходным кодом. Используется для управления объемами данных. Том Flocker позволяет монтировать набор данных Flocker в модуль. Если набор данных не существует во Flocker, то сначала необходимо создать его с помощью API Flocker.

glusterfs — Glusterfs — это сетевая файловая система с открытым исходным кодом. Том glusterfs позволяет монтировать том glusterfs в ваш модуль.

rbd — RBD означает блочное устройство Rados . Том rbd позволяет монтировать блочное устройство Rados в ваш модуль. Данные остаются сохраненными после того, как Pod удален из узла.

cephfs — том cephfs позволяет монтировать существующий том CephFS в ваш модуль. Данные остаются нетронутыми после удаления стручка из узла.

gitRepoТом gitRepo монтирует пустой каталог и клонирует в него репозиторий git для использования вашим модулем.

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

persistentVolumeClaim — том persistentVolumeClaim используется для монтирования PersistentVolume в модуль. PersistentVolumes — это способ для пользователей «требовать» надежного хранилища (такого как GCE PersistentDisk или том iSCSI), не зная деталей конкретной облачной среды.

downwardAPI — том downwardAPI используется для того, чтобы сделать нисходящие данные API доступными для приложений. Он монтирует каталог и записывает запрошенные данные в виде текстовых файлов.

azureDiskVolumeAzureDiskVolume используется для подключения диска данных Microsoft Azure к модулю .

Постоянный объем и Постоянное требование объема

Постоянный том (PV) — это часть сетевого хранилища, предоставленная администратором. Это ресурс в кластере, который не зависит от любого отдельного модуля, который использует PV.

Заявка о постоянном объеме (PVC) — Запрошенное Kubernetes хранилище для своих контейнеров известно как PVC. Пользователю не нужно знать основную подготовку. Заявки должны быть созданы в том же пространстве имен, в котором создается модуль.

Создание постоянного тома

kind: PersistentVolume ---------> 1
apiVersion: v1
metadata:
   name: pv0001 ------------------> 2
   labels:
      type: local
spec:
   capacity: -----------------------> 3
      storage: 10Gi ----------------------> 4
   accessModes:
      - ReadWriteOnce -------------------> 5
      hostPath:
         path: "/tmp/data01" --------------------------> 6

В приведенном выше коде мы определили —

  • kind: PersistentVolume → Мы определили тип как PersistentVolume, который сообщает kubernetes, что используемый файл yaml предназначен для создания постоянного тома.

  • name: pv0001 → Имя создаваемого нами PersistentVolume.

  • Capacity: → Эта спецификация будет определять емкость PV, которую мы пытаемся создать.

  • storage: 10Gi → Это говорит базовой инфраструктуре, что мы пытаемся получить пространство 10Gi по указанному пути.

  • ReadWriteOnceУказывает права доступа к тому, который мы создаем.

  • путь: «/ tmp / data01» → Это определение говорит машине, что мы пытаемся создать том по этому пути в базовой инфраструктуре.

kind: PersistentVolume → Мы определили тип как PersistentVolume, который сообщает kubernetes, что используемый файл yaml предназначен для создания постоянного тома.

name: pv0001 → Имя создаваемого нами PersistentVolume.

Capacity: → Эта спецификация будет определять емкость PV, которую мы пытаемся создать.

storage: 10Gi → Это говорит базовой инфраструктуре, что мы пытаемся получить пространство 10Gi по указанному пути.

ReadWriteOnceУказывает права доступа к тому, который мы создаем.

путь: «/ tmp / data01» → Это определение говорит машине, что мы пытаемся создать том по этому пути в базовой инфраструктуре.

Создание PV

$ kubectl create –f local-01.yaml
persistentvolume "pv0001" created

Проверка PV

$ kubectl get pv
NAME        CAPACITY      ACCESSMODES       STATUS       CLAIM      REASON     AGE
pv0001        10Gi            RWO         Available                            14s

Описание PV

$ kubectl describe pv pv0001

Создание постоянного тома

kind: PersistentVolumeClaim --------------> 1
apiVersion: v1
metadata:
   name: myclaim-1 --------------------> 2
spec:
   accessModes:
      - ReadWriteOnce ------------------------> 3
   resources:
      requests:
         storage: 3Gi ---------------------> 4

В приведенном выше коде мы определили —

  • kind: PersistentVolumeClaim → Указывает базовой инфраструктуре, что мы пытаемся получить заданный объем пространства.

  • name: myclaim-1 → Название претензии, которую мы пытаемся создать.

  • ReadWriteOnce → Определяет режим заявки, которую мы пытаемся создать.

  • хранилище: 3Gi → Это скажет kubernetes о количестве места, которое мы пытаемся получить.

kind: PersistentVolumeClaim → Указывает базовой инфраструктуре, что мы пытаемся получить заданный объем пространства.

name: myclaim-1 → Название претензии, которую мы пытаемся создать.

ReadWriteOnce → Определяет режим заявки, которую мы пытаемся создать.

хранилище: 3Gi → Это скажет kubernetes о количестве места, которое мы пытаемся получить.

Создание ПВХ

$ kubectl create –f myclaim-1
persistentvolumeclaim "myclaim-1" created

Получение деталей о ПВХ

$ kubectl get pvc
NAME        STATUS   VOLUME   CAPACITY   ACCESSMODES   AGE
myclaim-1   Bound    pv0001     10Gi         RWO       7s

Опишите ПВХ

$ kubectl describe pv pv0001

Использование PV и PVC с POD

kind: Pod
apiVersion: v1
metadata:
   name: mypod
   labels:
      name: frontendhttp
spec:
   containers:
   - name: myfrontend
      image: nginx
      ports:
      - containerPort: 80
         name: "http-server"
      volumeMounts: ----------------------------> 1
      - mountPath: "/usr/share/tomcat/html"
         name: mypd
   volumes: -----------------------> 2
      - name: mypd
         persistentVolumeClaim: ------------------------->3
         claimName: myclaim-1

В приведенном выше коде мы определили —

volumeMounts: → Это путь в контейнере, на котором будет происходить монтаж.

Объем: → Это определение определяет определение объема, на которое мы будем претендовать.

persistentVolumeClaim: → При этом мы определяем имя тома, которое будем использовать в определенном модуле.