OpenShift - Докер и Kubernetes
OpenShift построен на основе Docker и Kubernetes. Все контейнеры построены на основе кластера Docker, который, по сути, представляет собой службу Kubernetes поверх компьютеров Linux, с использованием функции оркестровки Kubernetes.
В этом процессе мы создаем мастер Kubernetes, который контролирует все узлы и развертывает контейнеры на всех узлах. Основная функция Kubernetes - управлять кластером OpenShift и процессом развертывания с использованием другого типа файла конфигурации. Как и в Kubernetes, мы используем kubctl так же, как используем утилиту командной строки OC для создания и развертывания контейнеров на узлах кластера.
Ниже приведены различные типы файлов конфигурации, используемые для создания объектов различного типа в кластере.
- Images
- POD
- Service
- Контроллер репликации
- Набор реплик
- Deployment
Картинки
Образы 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
Pod - это набор контейнеров и их хранилище внутри узла кластера Kubernetes. Можно создать контейнер с несколькими контейнерами внутри. Ниже приведен пример хранения контейнера базы данных и контейнера веб-интерфейса в одном модуле.
apiVersion: v1
kind: Pod
metadata:
name: Tomcat
spec:
containers:
- name: Tomcat
image: tomcat: 8.0
ports:
- containerPort: 7500
imagePullPolicy: Always
обслуживание
Сервис можно определить как логический набор модулей. Его можно определить как абстракцию над модулем, которая предоставляет единственный IP-адрес и DNS-имя, по которым можно получить доступ к модулям. С помощью службы очень легко управлять конфигурацией балансировки нагрузки. Это помогает POD очень легко масштабироваться.
apiVersion: v1
kind: Service
metadata:
name: Tutorial_point_service
spec:
ports:
- port: 8080
targetPort: 31999
Контроллер репликации
Контроллер репликации - одна из ключевых функций Kubernetes, которая отвечает за управление жизненным циклом пода. Он отвечает за то, чтобы в любой момент времени работало указанное количество реплик модуля.
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
Набор реплик
Набор реплик гарантирует, сколько реплик модуля должно быть запущено. Это можно рассматривать как замену контроллера репликации.
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.
For POD
$ Kubectl get pod <pod name>
$ kubectl delete pod <pod name>
$ kubectl describe pod <pod name>
For Replication Controller
$ Kubectl get rc <rc name>
$ kubectl delete rc <rc name>
$ kubectl describe rc <rc name>
For Service
$ Kubectl get svc <svc name>
$ kubectl delete svc <svc name>
$ kubectl describe svc <svc name>
Чтобы узнать больше о том, как работать с Docker и Kubernetes, посетите наш учебник по Kubernetes по следующей ссылке kubernetes .