В 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 доступными для приложений. Он монтирует каталог и записывает запрошенные данные в виде текстовых файлов.
-
azureDiskVolume — AzureDiskVolume используется для подключения диска данных 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 доступными для приложений. Он монтирует каталог и записывает запрошенные данные в виде текстовых файлов.
azureDiskVolume — AzureDiskVolume используется для подключения диска данных 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: → При этом мы определяем имя тома, которое будем использовать в определенном модуле.