EN ESTA PÁGINA
Instalación de cRPD en Kubernetes
Kubernetes es una plataforma de código abierto para administrar cargas de trabajo y servicios en contenedores. Los contenedores son una buena manera de agrupar y ejecutar las aplicaciones. En un entorno de producción, debe administrar los contenedores que ejecutan las aplicaciones y asegurarse de que no haya tiempo de inactividad. Por ejemplo, si un contenedor cae, otro contenedor debe comenzar. Kubernetes le proporciona un marco para ejecutar sistemas distribuidos con resistencia. Kubernetes ofrece una plataforma para la automatización, el escalado y las operaciones de implementación de contenedores de aplicaciones en clústeres de contenedores de host.
Requisito previo
Instalar Kubernetes en el sistema Linux y también para implementar Kubernetes en un clúster de Linux de dos nodos, consulte Instalación de Kubernetes.
Cuando implementa Kubernetes, obtiene un clúster. Un clúster de Kubernetes consta de un conjunto de máquinas de trabajo, llamadas nodos, que ejecutan aplicaciones en contenedores. Cada clúster tiene al menos un nodo de trabajo. Los nodos de trabajo alojan los pods que son los componentes de la aplicación.
En esta sección se describen los pasos para crear la imagen de Docker cRPD en Kubernetes.
Instalación de Kubernetes
Para instalar Kubernetes:
Clúster de Kubernetes
Kubernetes coordina un clúster de equipos que están conectados para trabajar como una sola unidad. Kubernetes automatiza el despliegue y la programación de cRPD en un clúster de una manera eficiente.
Un clúster de Kubernetes consta de dos tipos de recursos:
El principal coordina el clúster
Los nodos son los trabajadores que ejecutan aplicaciones
El principal es responsable de administrar el clúster. La principal coordina todas las actividades del clúster, como programar aplicaciones, mantener el estado deseado de las aplicaciones, escalar aplicaciones y desplegar nuevas actualizaciones.
Un nodo es una máquina virtual o una computadora física que sirve como máquina de trabajo en un clúster de Kubernetes. Cada nodo tiene un Kubelet, que es un agente para administrar el nodo y comunicarse con el maestro de Kubernetes. El nodo también debe tener herramientas para manejar las operaciones de contenedor, como Docker o rkt. Un clúster de Kubernetes que maneje el tráfico de producción debe tener un mínimo de tres nodos.
Cuando implementa cRPD en Kubernetes, el principal inicia los contenedores de la aplicación. El principal programa los contenedores para que se ejecuten en los nodos del clúster. Los nodos se comunican con el principal mediante la API de Kubernetes, que expone el principal. Los usuarios finales también pueden usar la API de Kubernetes directamente para interactuar con el clúster.
Un Pod siempre se ejecuta en un nodo. Un nodo es una máquina de trabajo en Kubernetes y puede ser una máquina virtual o física, dependiendo del clúster. El principal administra cada nodo. Un nodo puede tener varios pods, y el maestro de Kubernetes controla automáticamente la programación de los pods en los nodos del clúster.
Cada nodo de Kubernetes se ejecuta al menos:
Kubelet, un proceso responsable de la comunicación entre El Maestro de Kubernetes y el Nodo; administra los pods y los contenedores que se ejecutan en una máquina.
Un tiempo de ejecución de contenedor (como Docker, rkt) responsable de extraer la imagen del contenedor de un registro, desempaquetar el contenedor y ejecutar la aplicación.
Para crear clústeres de minikube:
Descargar imagen de cRPD Docker
-
Antes de importar el software cRPD, asegúrese de que Docker esté instalado en el host Linux y que el motor de Docker se esté ejecutando.
-
Asegúrese de registrarse en el soporte de Juniper antes de descargar el software cRPD.
Para descargar la imagen de docker:
Creación de un pod cRPD mediante la implementación
Un Pod de Kubernetes es un grupo de uno o más contenedores, vinculados entre sí para fines de administración y redes. Una implementación de Kubernetes comprueba el estado de su Pod y reinicia el contenedor del pod si termina. Las implementaciones son la forma recomendada de gestionar la creación y el escalamiento de pods.
Cuando se describe un estado deseado en una implementación, el Controlador de implementación cambia el estado real al estado deseado. Puede definir implementaciones para crear nuevos ReplicaSets o para eliminar implementaciones existentes y adoptar todos sus recursos con nuevas implementaciones.
Creación de un pod cRPD con YAML
Un Pod es la unidad de ejecución básica de una aplicación de Kubernetes, la unidad más pequeña y sencilla del modelo de objetos de Kubernetes que se crea o implementa. Un Pod representa una unidad de despliegue: una sola instancia de una aplicación en Kubernetes, que puede estar formada por un solo contenedor o un pequeño número de contenedores estrechamente acoplados y que comparten recursos. Docker es el tiempo de ejecución de contenedor más común utilizado en un Kubernetes Pod.
Puede crear directamente un Pod o indirectamente mediante un controlador en Kubernetes. Un controlador puede crear y administrar varios pods. Los controladores usan una plantilla Pod que proporcione para crear los pods. Las plantillas de pod son especificaciones de pod que se incluyen en otros objetos, como controladores de replicación, trabajos y DaemonSets.
Para crear el pod cRPD con el archivo YAML
Cada Pod está destinado a ejecutar una sola instancia de una aplicación determinada. Si desea escalar su aplicación horizontalmente (por ejemplo, ejecutar varias instancias), debe usar varios Pods, uno para cada instancia. En Kubernetes, esto se conoce generalmente como replicación.
Ver también
Creación de un pod de cRPD con recurso de trabajo
Un trabajo crea uno o varios Pods y seguirá intentando volver a intentar la ejecución de los Pods hasta que un número especificado de ellos finalice correctamente. Cuando se alcanza un número especificado de finalización correcta, la tarea se completa. También puede usar un trabajo para ejecutar varios pods en paralelo. Eliminar un trabajo limpiará los Pods que creó. Si se suspende un trabajo, se eliminarán sus Pods activos hasta que el trabajo se vuelva a reanudar. Para crear el cRPD Pod con el archivo crpd_job.yaml:
Creación de un pod cRPD con DaemonSet
DaemonSet garantiza que todos (o algunos) nodos ejecuten una copia de un Pod. A medida que se agregan nodos al clúster, los pods se agregan a ellos. A medida que se quitan los nodos del clúster, esos pods se recopilan como elementos no recopilados. Eliminar un DaemonSet limpiará los Pods que creó.
Creación del pod cRPD con el archivo crpd_daemonset.yaml
Cada Pod está destinado a ejecutar una sola instancia de una aplicación determinada. Si desea escalar su aplicación horizontalmente (por ejemplo, ejecutar varias instancias), debe usar varios Pods, uno para cada instancia. En Kubernetes, esto se conoce generalmente como replicación.
Ver también
Escalamiento del cRPD
Puede crear varias instancias de cRPD según la demanda mediante el uso del –replicas
parámetro para el kubectl run
comando. La implementación es un objeto que puede poseer y administrar sus ReplicaSets.
Deberíamos tener un pod existente antes de escalar.
Para escalar verticalmente:
Para escalar horizontalmente:
-
Ejecute el siguiente comando para reducir la escalabilidad horizontal del servicio a 2 réplicas:
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2
deployment.apps/crpdref scaled
-
Ejecute el siguiente comando para enumerar las implementaciones:
root@kubernetes-master:~# kubectl get deployments
-
Ejecute el siguiente comando para enumerar el número de Pods. Puede ver que se terminaron los 2 pods:
root@kubernetes-master:~# kubectl get pods -o wide
Actualización continua de la implementación de cRPD
Puede actualizar instancias de Pod con nuevas versiones. Las actualizaciones continuas permiten que la actualización de los despliegues se lleve a cabo sin tiempo de inactividad mediante la actualización incremental de las instancias de Pods con otras nuevas. Los nuevos Pods se programan en nodos con recursos disponibles. Las actualizaciones de retroceso promueven una aplicación de un entorno a otro con integración continua y entrega continua de aplicaciones sin tiempo de inactividad. En Kubernetes, se versionan las actualizaciones y cualquier actualización de implementación se puede revertir a una versión estable anterior.
Para actualizar la implementación de cRPD con una nueva imagen y conservar la configuración después de la actualización:
Despliegue de pod cRPD con recursos asignados
Los pods proporcionan dos tipos de recursos compartidos: redes y almacenamiento para los contenedores. Cuando los contenedores de un Pod se comunican con entidades fuera del Pod, deben coordinar cómo utilizan los recursos de red compartidos (como los puertos). Dentro de un Pod, los contenedores se comunican mediante localhost
el uso de una dirección IP y un puerto.
Los contenedores dentro del Pod ven el nombre de host del sistema como el configurado name
para el Pod.
Cualquier contenedor de un Pod puede habilitar el modo de privilegio mediante el privileged
indicador de la especificación del contenedor. Esto es útil para los contenedores que utilizan capacidades administrativas del sistema operativo, como manipular la pila de red o acceder a dispositivos de hardware. Los procesos dentro de un contenedor privilegiado obtienen casi los mismos privilegios que están disponibles para los procesos fuera de un contenedor.
Para ver la implementación del Pod con recursos:
Despliegue de pod cRPD con volumen montado
Un emptyDir
es uno de los varios tipos de volúmenes compatibles con K8 y se crea primero cuando se asigna un Pod a un nodo, y existe mientras ese Pod se ejecute en ese nodo. Como dice su nombre, el emptyDir
volumen está inicialmente vacío. Todos los contenedores del Pod pueden leer y escribir los mismos archivos en el emptyDir
volumen, aunque ese volumen se puede montar en la misma o diferentes rutas de cada contenedor. Cuando un Pod se elimina de un nodo por cualquier motivo, los datos en el emptyDir
se eliminan de forma permanente.
Para ver la implementación de cRPD Pod montando la ruta de almacenamiento en Kubernetes: