OpenShift построен поверх Docker и Kubernetes. Все контейнеры построены поверх кластера Docker, который в основном представляет собой сервис Kubernetes поверх машин Linux, с использованием функции оркестровок Kubernetes.
В этом процессе мы создаем мастер Kubernetes, который контролирует все узлы и развертывает контейнеры на всех узлах. Основной функцией Kubernetes является управление кластером OpenShift и потоком развертывания с использованием файла конфигурации другого типа. Как и в Kubernetes, мы используем kubctl так же, как мы используем утилиту командной строки OC для создания и развертывания контейнеров на узлах кластера.
Ниже приведены различные типы конфигурационных файлов, используемых для создания различных типов объектов в кластере.
- Изображений
- POD
- обслуживание
- Контроллер репликации
- Набор реплик
- развертывание
Изображений
Изображения Kubernetes (Docker) являются ключевыми строительными блоками контейнерной инфраструктуры. На данный момент Kubernetes поддерживает только образы Docker . Внутри каждого контейнера в модуле находится изображение Docker.
apiVersion: v1 kind: pod metadata: name: Tesing_for_Image_pull -----------> 1 spec: containers: - name: neo4j-server ------------------------> 2 image: <Name of the Docker image>----------> 3 imagePullPolicy: Always ------------->4 command: [“echo”, “SUCCESS”] -------------------> 5
POD
Модуль — это набор контейнеров и его хранилище внутри узла кластера Kubernetes. Можно создать контейнер с несколькими контейнерами внутри. Ниже приведен пример хранения контейнера базы данных и контейнера веб-интерфейса в одном модуле.
apiVersion: v1
kind: Pod
metadata:
name: Tomcat
spec:
containers:
- name: Tomcat
image: tomcat: 8.0
ports:
- containerPort: 7500
imagePullPolicy: Always
обслуживание
Служба может быть определена как логический набор модулей. Его можно определить как абстракцию над модулем, которая предоставляет один IP-адрес и имя DNS, по которым можно получить доступ к модулям. С Service очень легко управлять конфигурацией балансировки нагрузки. Это помогает очень легко масштабировать POD.
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
ports:
- port: 8080
targetPort: 31999
Контроллер репликации
Контроллер репликации является одной из ключевых функций Kubernetes, которая отвечает за управление жизненным циклом модуля. Он отвечает за то, чтобы убедиться, что указанное количество реплик pod работает в любой момент времени.
apiVersion: v1
kind: ReplicationController
metadata:
name: Tomcat-ReplicationController
spec:
replicas: 3
template:
metadata:
name: Tomcat-ReplicationController
labels:
app: App
component: neo4j
spec:
containers:
- name: Tomcat
image: tomcat: 8.0
ports:
- containerPort: 7474
Набор реплик
Набор реплик гарантирует, сколько реплик модуля pod должно быть запущено. Это можно рассматривать как замену контроллера репликации.
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: Tomcat-ReplicaSet
spec:
replicas: 3
selector:
matchLables:
tier: Backend
matchExpression:
- { key: tier, operation: In, values: [Backend]}
app: App
component: neo4j
spec:
containers:
- name: Tomcat-
image: tomcat: 8.0
ports:
containerPort: 7474
развертывание
Развертывания — это обновленные и более поздние версии контроллера репликации. Они управляют развертыванием наборов реплик, которые также являются обновленной версией контроллера репликации. У них есть возможность обновить набор реплик, и они также могут откатиться к предыдущей версии.
apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
name: Tomcat-ReplicaSet
spec:
replicas: 3
template:
metadata:
lables:
app: Tomcat-ReplicaSet
tier: Backend
spec:
containers:
name: Tomcat-
image: tomcat: 8.0
ports:
- containerPort: 7474
Все файлы конфигурации могут быть использованы для создания соответствующих им объектов Kubernetes.
$ Kubectl create –f <file name>.yaml
Следующие команды могут быть использованы, чтобы узнать подробности и описание объектов Kubernetes.
Для POD
$ Kubectl get pod <pod name> $ kubectl delete pod <pod name> $ kubectl describe pod <pod name>
Для контроллера репликации
$ Kubectl get rc <rc name> $ kubectl delete rc <rc name> $ kubectl describe rc <rc name>
Для обслуживания
$ Kubectl get svc <svc name> $ kubectl delete svc <svc name> $ kubectl describe svc <svc name>
Для получения более подробной информации о том, как работать с Docker и Kubernetes, пожалуйста, посетите наш учебник Kubernetes, используя следующую ссылку kubernetes .