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 .