OpenShift: Docker y Kubernetes

OpenShift se basa en Docker y Kubernetes. Todos los contenedores están construidos sobre el clúster de Docker, que es básicamente el servicio de Kubernetes sobre las máquinas Linux, utilizando la función de orquestaciones de Kubernetes.

En este proceso, construimos Kubernetes master que controla todos los nodos e implementa los contenedores en todos los nodos. La función principal de Kubernetes es controlar el flujo de implementación y el clúster de OpenShift mediante un tipo diferente de archivo de configuración. Como en Kubernetes, usamos kubctl de la misma manera que usamos la utilidad de línea de comando OC para construir e implementar contenedores en los nodos del clúster.

A continuación se muestran los diferentes tipos de archivos de configuración utilizados para la creación de diferentes tipos de objetos en el clúster.

  • Images
  • POD
  • Service
  • Controlador de replicación
  • Conjunto de réplicas
  • Deployment

Imagenes

Las imágenes de Kubernetes (Docker) son los componentes clave de la infraestructura en contenedores. A partir de ahora, Kubernetes solo admiteDockerimágenes. Cada contenedor de un pod tiene su imagen de Docker ejecutándose en su interior.

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

VAINA

Un pod es una colección de contenedores y su almacenamiento dentro de un nodo de un clúster de Kubernetes. Es posible crear una vaina con varios contenedores en su interior. A continuación, se muestra un ejemplo de cómo mantener un contenedor de base de datos y un contenedor de interfaz web en el mismo pod.

apiVersion: v1
kind: Pod
metadata:
   name: Tomcat
spec:
   containers:
   - name: Tomcat
      image: tomcat: 8.0
      ports:
- containerPort: 7500
imagePullPolicy: Always

Servicio

Un servicio se puede definir como un conjunto lógico de pods. Se puede definir como una abstracción en la parte superior del pod que proporciona una única dirección IP y un nombre DNS mediante el cual se puede acceder a los pods. Con Service, es muy fácil administrar la configuración del equilibrio de carga. Ayuda a los POD a escalar muy fácilmente.

apiVersion: v1
kind: Service
metadata:
   name: Tutorial_point_service
spec:
   ports:
   - port: 8080
      targetPort: 31999

Controlador de replicación

El controlador de replicación es una de las características clave de Kubernetes, que es responsable de administrar el ciclo de vida del pod. Es responsable de asegurarse de que se estén ejecutando números específicos de réplicas de pod en cualquier momento.

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

Juego de réplicas

El conjunto de réplicas asegura cuántas réplicas de pod se deben ejecutar. Puede considerarse como un reemplazo del controlador de replicación.

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

Despliegue

Las implementaciones se actualizan y las versiones superiores del controlador de replicación. Administran la implementación de conjuntos de réplicas, que también es una versión mejorada del controlador de réplica. Tienen la capacidad de actualizar el conjunto de réplicas y también pueden retroceder a la versión anterior.

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

Todos los archivos de configuración se pueden usar para crear sus respectivos objetos de Kubernetes.

$ Kubectl create –f <file name>.yaml

Los siguientes comandos se pueden utilizar para conocer los detalles y la descripción de los objetos de 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>

Para obtener más detalles sobre cómo trabajar con Docker y Kubernetes, visite nuestro tutorial de Kubernetes utilizando el siguiente enlace kubernetes .