Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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:

  1. Inicie sesión como usuario raíz.
  2. Descargue e instale el software.
  3. Inicie 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:

  1. Ejecute el siguiente comando para comprobar la versión minikube:
  2. Ejecute el siguiente comando para iniciar el clúster:
  3. Ejecute el siguiente comando para comprobar si kubectl está instalado:
  4. Ejecute el siguiente comando para ver los detalles del clúster:
  5. Ejecute el siguiente comando para ver los nodos del clúster:

Descargar imagen de cRPD Docker

Requisitos previos
  • 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:

  1. Inicie sesión en el registro de Docker interno de Juniper con el nombre de inicio de sesión y la contraseña que recibió como parte del proceso de cumplimiento de ventas al pedir cRPD.
    1. Cree el archivo -passwd.txt y copie el token de acceso excluyendo las citas proporcionadas por el equipo de atención al cliente de Juniper.
    2. Inicie sesión en enterprise hub con el siguiente comando:
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin enterprise-hub.juniper.net:443

      Por ejemplo, root@ubuntu-vm18$ cat passwd.txt | docker login -u user@domain.com --password-stdin enterprise-hub.juniper.net:443

  2. Extraa la imagen de docker del sitio de descarga mediante el siguiente comando:

    root@dc-rpd-01# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:<release tag>

    Por ejemplo,

    root@ubuntu-vm18:~# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:22.3R1

  3. Verifique las imágenes en el repositorio de imágenes de docker.

    root@dc-rpd-01# docker images

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.

  1. Cree el archivo crpd.yaml en Kubernetes-master y agregue el siguiente contenido de texto:
  2. Guarde el archivo crpd.yaml para crear el cRPD Pod.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe pod crpd

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

  1. Cree el archivo crpd.yaml en Kubernetes-master agregue el siguiente contenido de texto:
  2. Guarde el archivo crpd.yaml para crear el pod de ricd.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe pod crpd

  5. Ejecute el siguiente comando para proporcionar una CLI interactiva dentro del contenedor en ejecución:

    root@kubernetes-master:~# kubectl exec -it crpd cliAquí se ejecuta un pod con el nombre pcrd y se conecta al modo de línea de comandos.

  6. Ejecute el siguiente comando para ver las rutas:

    root@crpd:/> show route

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.

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:

  1. Cree el archivo crpd_job.yaml en los nodos de trabajo y agregue el siguiente contenido de texto:
  2. Guarde el archivo crpd_job.yaml para crear el pod de ricd.

    root@kubernetes-master:~# kubectl create -f crpd_job.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe job/crpdjob

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

  1. Cree el archivo crpd_daemonset.yaml en los nodos de trabajo y agregue el siguiente contenido de texto:
  2. Guarde el archivo da1.yaml para crear el pod de ricd.

    root@kubernetes-master:~# kubectl create -f crpd_daemonset.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe pod crpd

    root@kubernetes-master:~# kubectl describe pod crpd-5fc4fd79df-xr8f5

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.

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:

  1. Cree el pod.

    root@kubernetes-master:~# kubectl create -f crpd_replicatset.yaml

  2. Cree el archivo crpd_replicaSet.yaml en Kubernetes-master agregue el siguiente contenido de texto:
  3. Ejecute el siguiente comando para ver los pods:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para escalar la implementación a cuatro réplicas:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=4

  5. Ejecute el siguiente comando para enumerar las implementaciones:

    root@kubernetes-master:~# kubectl get deployments

  6. Ejecute el siguiente comando para comprobar el número de pods cambiados:

    root@kubernetes-master:~# kubectl get pods -o wide

  7. Ejecute el siguiente comando para comprobar los detalles de los Pods:

    root@kubernetes-master:~# kubectl describe pods

Para escalar horizontalmente:

  1. Ejecute el siguiente comando para reducir la escalabilidad horizontal del servicio a 2 réplicas:

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2

  2. Ejecute el siguiente comando para enumerar las implementaciones:

    root@kubernetes-master:~# kubectl get deployments

  3. 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:

  1. Cree el pod de cRPD.

    root@crpd-01:~# kubectl kubectl create -f crpd_deploy.yaml

  2. Cree el archivo crpd_deploy.yaml en Kubernetes-master agregue el siguiente contenido de texto:
  3. Ejecute el siguiente comando para enumerar las implementaciones:

    root@kubernetes-master:~# kubectl get deployments

  4. Ejecute el siguiente comando para enumerar los pods en ejecución:

    root@kubernetes-master:~# kubectl get pods

    root@kubernetes-master:~# kubectl get pods -o wide

  5. Ejecute el siguiente comando para ver la versión actual de la imagen del cRPD:

    root@kubernetes-master:~# kubectl exec -it crpd-deploy4-674b4fcfb5-8xc5d -- cli

  6. Ejecute el siguiente comando para ver la versión actual de la imagen:

    root@crpd-deploy4-674b4fcfb5-8xc5d> show version

  7. Ejecute el siguiente comando para actualizar la imagen de la aplicación a la nueva versión:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl edit deployment/crpd-deploy4

  8. Ejecute el siguiente comando para confirmar si la imagen está actualizada:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl rollout status deployment/crpd-deploy4

  9. Ejecute el siguiente comando para ver los pods:

    root@crpd-deploy4-674b4fcfb5-8xc5d> kubectl get pods

  10. Ejecute el siguiente comando para ver la versión de imagen del cRPD:

    root@kubernetes-master:~$ sudo kubectl exec -it crpd-deploy4-6ff476994d-8z2kr -- bash

  11. Ejecute el siguiente comando para ver la versión actual de la imagen:

    root@crpd-deploy4-6ff476994d-8z2kr> show version

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 localhostel 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:

  1. Cree el archivo crpd_res.yaml en Kubernetes-master, agregue el siguiente contenido de texto:
  2. Guarde el archivo crpd_res.yaml para crear el pod de ricd.

    root@kubernetes-master:~# kubectl create -f crpd_res.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe pod crpres

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:

  1. Cree el archivo crpd_volume.yaml en Kubernetes-master, agregue el siguiente contenido de texto:
  2. Guarde el archivo crpd_volume.yaml para crear el pod de ricd.

    root@kubernetes-master:~# kubectl create -f crpd_volume.yaml

  3. Ejecute el siguiente comando para ver la lista de pods existentes:

    root@kubernetes-master:~# kubectl get pods

  4. Ejecute el siguiente comando para ver qué contenedores hay dentro de ese Pod y qué imágenes se utilizan para crear los contenedores:

    root@kubernetes-master:~# kubectl describe pod crpd-volume

  5. Ejecute el siguiente comando para ejecutar la instancia cRPD:

    root@kubernetes-master:~# kubectl exec -it crpd-volume bash

  6. Ejecute el siguiente comando para ver los archivos en la ruta:

    root@crpd-volume:/# ls

  7. Ejecute el siguiente comando para navegar a la ruta de almacenamiento:

    root@crpd-volume:/# cd var/log/crpd-storage/

    root@crpd-volume:/var/log/crpd-storage/#