Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Instalar 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.

Gestione contenedores que ejecutan aplicaciones en entornos de producción. Asegúrese de que no haya tiempo de inactividad. Por ejemplo, si un contenedor se cae, otro contenedor debe iniciarse. Kubernetes le proporciona un marco para ejecutar sistemas distribuidos de forma resistente. Kubernetes proporciona una plataforma para la automatización del despliegue, el escalado y las operaciones de contenedores de aplicaciones en clústeres de contenedores de host.

Prerrequisito

Instale Kubernetes en un sistema Linux y 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 consiste en un conjunto de máquinas de trabajo, denominadas 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.

Instalar Kubernetes

Para instalar Kubernetes:

  1. Inicie sesión como usuario root.
  2. Descargue e instale el software.
  3. Inicie Kubernetes.

Clúster de Kubernetes

Kubernetes coordina un clúster de computadoras que están conectadas para funcionar 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:

  • La Primaria coordina el clúster

  • Los nodos son los trabajadores que ejecutan las aplicaciones

La empresa principal es responsable de administrar el clúster. La principal coordina todas las actividades del clúster, como la programación de aplicaciones, el mantenimiento del estado deseado de las aplicaciones, el escalado de aplicaciones y el despliegue de nuevas actualizaciones.

Un nodo es una máquina virtual o un equipo físico 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 operaciones de contenedor, como Docker o rkt. Un clúster de Kubernetes que gestione 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 aplicaciones. La 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. Cada nodo es administrado por el primario. Un nodo puede tener varios pods, y el Kubernetes primario maneja automáticamente la programación de los pods en los nodos del clúster.

Cada nodo de Kubernetes ejecuta al menos:

  • Kubelet, un proceso responsable de la comunicación entre el Kubernetes primario y el Nodo; gestiona 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 un clúster de minikube:

  1. Ejecute el siguiente comando para comprobar la versión de 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

Prerrequisitos
  • Antes de importar el software cRPD, asegúrese de que Docker esté instalado en el host Linux y de que Docker Engine se esté ejecutando.

  • Asegúrese de registrarse en el soporte de Juniper antes de descargar el software cRPD.

Para descargar la imagen de la ventana acoplable:

  1. Inicie sesión en el registro de Juniper Docker con las credenciales proporcionadas durante el proceso de preparación de ventas para cRPD.
    1. Cree el archivo -passwd.txt y copie el token de acceso, excluyendo las cotizaciones 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. Extraiga la imagen de la ventana acoplable 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

Crear un pod cRPD mediante la implementación

Un pod de Kubernetes es un grupo de uno o más contenedores, unidos entre sí con fines de administración y creación de 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 administrar la creación y el escalado de pods.

Cuando se describe un estado deseado en una implementación y el controlador de implementación cambia el estado real al estado deseado. Puede usar implementaciones para crear nuevos ReplicaSets. Como alternativa, puede quitar implementaciones existentes y adoptar sus recursos con implementaciones nuevas.

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

    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 los contenedores del Pod y las imágenes utilizadas para crearlos:

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

Crear un pod cRPD usando 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 implementación: una única instancia de una aplicación en Kubernetes, que puede consistir en un solo contenedor o en un pequeño número de contenedores que están estrechamente acoplados y que comparten recursos. Docker es el tiempo de ejecución de contenedor más común utilizado en un pod de Kubernetes.

Puede crear directamente un Pod o usar indirectamente un Controller en Kubernetes. Un controlador puede crear y administrar varios pods. Los controladores usan una plantilla de pod que usted proporciona 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 conjuntos de demonios.

Para crear el pod cRPD mediante el archivo YAML

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

    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 los contenedores del Pod y las imágenes utilizadas para crearlos:

    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 cli

    Aquí está ejecutando un pod con el nombre crpd y conectarse al modo de línea de comandos.

  6. Ejecute el siguiente comando para ver las rutas:

    root@crpd:/> show route

Cada Pod está diseñado para ejecutar una sola instancia de una aplicación determinada. Si desea escalar la aplicación horizontalmente (por ejemplo, ejecutar varias instancias), debe usar varios Pods, uno para cada instancia. En Kubernetes, esto generalmente se conoce como replicación.

Crear un pod de cRPD usando el recurso de trabajo

Un trabajo crea uno o más pods y continuará reintentando la ejecución de los pods hasta que un número especificado de ellos finalice correctamente. Cuando se alcanza un número especificado de finalizaciones exitosas, la tarea se completa. También puede usar un trabajo para ejecutar varios Pods en paralelo. Al eliminar un trabajo, se limpiarán los pods que creó. La suspensión de un trabajo eliminará sus Pods activos hasta que se reanude el trabajo. Para crear el pod cRPD 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 crpd.

    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 los contenedores del Pod y las imágenes utilizadas para crearlos:

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

Crear un pod cRPD usando DaemonSet

DaemonSet garantiza que todos (o algunos) nodos ejecuten una copia de un Pod. A medida que se agregan nodos al clúster, se agregan pods a ellos. A medida que se eliminan los nodos del clúster, esos pods se recogen elementos no utilizados. Si se elimina el DaemonSet, se eliminan los Pods creados.

Creación del pod cRPD mediante 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 crpd.

    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 los contenedores en el pod y las imágenes utilizadas para crearlos:

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

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

Cada Pod está diseñado para ejecutar una sola instancia de una aplicación determinada. Si desea escalar la aplicación horizontalmente (por ejemplo, ejecutar varias instancias), debe usar varios Pods, uno para cada instancia. En Kubernetes, esto generalmente se conoce como replicación.

Escalar cRPD

Puede crear varias instancias de cRPD en función de la demanda mediante el –replicas parámetro del kubectl run comando. La implementación es un objeto que puede poseer y administrar sus ReplicaSets.

Deberíamos tener un pod antes de escalar.

Para escalar verticalmente:

  1. Crea el pod.

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

  2. Cree el archivo crpd_replicaSet.yaml en Kubernetes-primary y 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 reducir:

  1. Ejecute el siguiente comando para reducir la escala del servicio a dos 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. Puedes ver que los dos Pods fueron terminados:

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

Roll Update de la implementación de cRPD

Puede actualizar las instancias de Pod con nuevas versiones. Las actualizaciones continuas permiten que la actualización de las implementaciones se realice sin tiempo de inactividad al actualizar gradualmente las instancias de Pods con otras nuevas. Los nuevos Pods se programan en nodos con recursos disponibles. Las actualizaciones de reversión promueven una aplicación de un entorno a otro con integración continua y entrega continua de aplicaciones sin tiempo de inactividad. En Kubernetes, las actualizaciones se versionan y cualquier actualización de implementación se puede revertir a la 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 cRPD.

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

  2. Cree el archivo crpd_deploy.yaml en Kubernetes-primary y 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 de 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 se actualiza:

    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 de 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 pods de cRPD con recursos asignados

Los pods proporcionan dos tipos de recursos compartidos, a saber, redes y almacenamiento para los contenedores. Cuando los contenedores de un Pod se comunican con entidades fuera del Pod, deben coordinar cómo usan 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 igual que el configurado name para el Pod.

Cualquier contenedor en un Pod puede habilitar el modo privilegiado, usando la privileged bandera en la especificación del contenedor. Esto es útil para contenedores que necesitan capacidades administrativas del sistema operativo, como manipulación de pilas de red o acceso a dispositivos de hardware. Los procesos dentro de un contenedor privilegiado tienen casi los mismos privilegios que están disponibles para los procesos fuera de un contenedor.

Para ver la implementación de Pod con recursos:

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

    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 los contenedores del Pod y las imágenes utilizadas para crearlos:

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

Despliegue de pods cRPD mediante volumen montado

An emptyDir es un tipo de volumen admitido en Kubernetes. Se crea cuando se asigna un Pod a un nodo y existe mientras el Pod se ejecute en ese nodo. Como su nombre lo dice, 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 ruta o en rutas diferentes en cada contenedor. Cuando se elimina un Pod de un nodo por cualquier motivo, los datos del emptyDir se eliminan permanentemente.

Para ver la implementación de cRPD Pod montando la ruta de almacenamiento en Kubernetes:

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

    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 los contenedores del Pod y las imágenes utilizadas para crearlos:

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

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

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

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

    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/#