GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear y administrar pods de Kubernetes en Linux

En este tutorial, vamos a aprender cómo crear y administrar Pods de Kubernetes. Primero, comenzaremos con qué es un Pod en Kubernetes y cómo funciona un Pod. A continuación, daremos un breve vistazo a los tipos de Pods. Y luego veremos cómo crear un nuevo Pod y cómo ver la información del Pod desde la línea de comandos. Finalmente, aprenderemos cómo eliminar el Pod cuando ya no sea necesario.

¿Qué es un pod en Kubernetes?

En Kubernetes , los pods son las unidades informáticas desplegables más pequeñas que puede construir y controlar. Un pod es una colección de uno o más contenedores con almacenamiento compartido y recursos de red, así como un conjunto de reglas sobre cómo se deben ejecutar los contenedores.

El contenido de un pod siempre se ubica, se programa y se ejecuta en el mismo entorno. Un pod representa un "host lógico" específico de la aplicación:incluye uno o más contenedores de aplicaciones estrechamente conectados.

En la perspectiva de Docker, un pod es equivalente a un conjunto de contenedores de Docker con espacios de nombres y volúmenes de sistemas de archivos comunes.

Tipos de pods de Kubernetes

En un clúster de Kubernetes, hay dos tipos de pods.

  • POD de un solo contenedor: El caso de uso más frecuente de Kubernetes es el enfoque de "un contenedor por pod"; en este escenario, considere un Pod como un envoltorio sobre un solo contenedor; Kubernetes mantiene pods en lugar de contenedores directamente.
  • POD de varios contenedores: Un pod puede encapsular una aplicación que se compone de numerosos contenedores estrechamente conectados que necesitan compartir recursos. Estos contenedores se agrupan para formar una sola unidad de servicio y estos contenedores se comunicarán entre sí.

¿Cómo funciona POD?

Cada Pod está diseñado para ejecutar una sola instancia de aplicación. Puede utilizar varios Pods, uno para cada instancia, si necesita extender su aplicación horizontalmente. Esto se conoce comúnmente como replicación en Kubernetes . Un recurso de carga de trabajo y su controlador normalmente producen y administran pods replicados en un grupo.

El objetivo final de Kubernetes es implementar la aplicación en forma de contenedores en un conjunto de máquinas que se denomina nodo trabajador. en el clúster de Kubernetes.

Kubernetes no lanza contenedores directamente en el nodo, sino que los contenedores se encapsulan como Pod, que es una instancia única de una aplicación.

En un clúster de Kubernetes, un nodo consta de pods y un pod consta de contenedores. Por ejemplo, tiene una sola instancia de una aplicación que se ejecuta en un solo contenedor encapsulado por un Pod.

Si aumenta el número de usuarios que acceden a la aplicación, debe escalar su aplicación. En ese caso, es posible que deba activar instancias adicionales para compartir la carga.

Para ampliar la aplicación, debe activar un nuevo Pod adicional en el nodo con la misma aplicación. Si la carga aumenta aún más y el nodo actual no tiene capacidad, debe tener un nodo adicional para hacer girar los pods con el mismo contenedor de aplicaciones.

Del mismo modo, para reducir la escala, debe eliminar el Pod existente.

Espero que tenga una idea básica sobre los pods de Kubernetes. Veamos ahora cómo crear y administrar Pods en Kubernetes.

Antes de comenzar, asegúrese de haber instalado Kubernetes en su sistema. Los siguientes enlaces tienen instrucciones sobre cómo configurar una implementación de clúster de Kubernetes de un solo nodo y de varios nodos en Linux.

  • Cómo instalar Kubernetes usando Minikube en CentOS Linux
  • Instalar clúster de Kubernetes mediante Kubeadm en RHEL, CentOS, AlmaLinux, Rocky Linux

Una vez instalado Kubernetes, puede comenzar a crear Pods.

Por lo general, no necesita crear pods directamente, ni siquiera pods únicos. En su lugar, créelos usando recursos de carga de trabajo como Implementación o Trabajo . Una implementación proporciona actualizaciones declarativas para Pods y ReplicaSets.

Crear una implementación

Cree una implementación de muestra utilizando una imagen existente "echoserver" . Es un servidor HTTP simple y podemos exponerlo en el puerto 8080 usando --port opción.

Una imagen de contenedor es un archivo que envuelve un programa y todas sus dependencias de software en datos binarios. Las imágenes de contenedor son paquetes de software ejecutables independientes que hacen suposiciones extremadamente específicas sobre su entorno de ejecución.

En este artículo, repasaremos todas las demostraciones en un clúster de un solo nodo .

Puede conocer los detalles del nodo ejecutando el siguiente comando como root usuario

# kubectl get nodes

Salida de muestra:

NAME        STATUS   ROLES    AGE   VERSION
ostechnix   Ready    Master   25h   v1.22.3

Ahora, implemente una aplicación de muestra llamada "hello-ostechnix" usando el siguiente comando. Puede nombrarlo según su conveniencia.

# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10

Salida de muestra:

deployment.apps/hello-ostechnix created
[[email protected] ~]#

Se crea la implementación, verifique la implementación con el siguiente comando.

# kubectl get deployments

Salida de muestra:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
hello-ostechnix   1/1     1            1           85s

Despliegue de acceso

Para acceder a esta implementación como un servicio, debe exponerla como un servicio. Use el siguiente comando para exponer la implementación en el puerto 8080 .

# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080

Salida de muestra:

service/hello-ostechnix exposed

Use el siguiente comando para obtener la URL del servicio expuesto.

# minikube service hello-ostechnix --url

Salida de muestra:

http://192.168.181.131:30525

Copie la URL y péguela en su navegador, enumerará los detalles de la aplicación implementada.

Asegúrese de que el puerto 30525 está permitido en su enrutador o firewall. Si este puerto está bloqueado, es posible que no vea la información del Pod en el navegador.

Eliminar implementación

Primero, elimine el servicio "hello-ostechnix" usando el comando:

# kubectl delete services hello-ostechnix

Salida de muestra:

service "hello-ostechnix" deleted

A continuación, elimine la implementación "hello-ostechnix":

# kubectl delete deployment hello-ostechnix

Salida de muestra:

deployment.apps "hello-ostechnix" deleted

Una vez que eliminó la implementación, el Pod asociado con la aplicación se cancelará. Tardará unos segundos en completar la terminación.

# kubectl get pods

Salida de muestra:

NAME                               READY   STATUS        RESTARTS   AGE
hello-ostechnix-5d4cf4df75-jlwff   1/1     Terminating   0          57m

Después de finalizar la implementación, ya no se podrá acceder a la aplicación.

# kubectl get pods

Resultado de muestra:

No resources found in default namespace.

Ejecutar pods con imágenes

Podemos usar el 'kubectl run ' comando para crear y ejecutar una aplicación en un Pod.

$ kubectl run <POD name> --image=<image name>

Aquí, el nombre del pod puede ser cualquier cosa y el nombre de la imagen debe ser específico y estar disponible en Docker Hub o en cualquier repositorio local.

Vamos a crear un Pod con la imagen de Nginx.

# kubectl run ostechnix-nginx --image=nginx

Salida de muestra:

pod/ostechnix-nginx created

Se ha creado un Pod llamado 'ostechnix-nginx'. Puede verificar el estado del Pod con el siguiente comando.

# kubectl get pods

Salida de muestra:

NAME              READY   STATUS    RESTARTS   AGE
ostechnix-nginx   1/1     Running   0          4m20s

Puede obtener información adicional, como dónde se está ejecutando el Pod y la IP del Pod, mediante el uso de 'wide ' opción.

# kubectl get pods -o wide

Salida de muestra:

NAME              READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
ostechnix-nginx   1/1     Running   0          38m   172.17.0.6   ostechnix   <none>           <none>

Puede obtener información completa sobre el POD utilizando el 'kubectl describe ' comando.

# kubectl describe pod ostechnix-nginx

Este comando le proporcionará los detalles completos del POD, como los detalles del contenedor y sus estados, los detalles de los eventos que ocurrieron desde que se creó el Pod.

Name:         ostechnix-nginx
Namespace:    default
Priority:     0
Node:         ostechnix/192.168.181.131
Start Time:   Thu, 03 Feb 2022 01:40:48 -0800
Labels:       run=ostechnix-nginx
Annotations:  <none>
Status:       Running
IP:           172.17.0.6
IPs:
  IP:  172.17.0.6
Containers:
  ostechnix-nginx:
    Container ID:   docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989
    Image:          nginx
    Image ID:       docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Feb 2022 01:40:54 -0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-ggvk6:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  7m26s  default-scheduler  Successfully assigned default/ostechnix-nginx to ostechnix
  Normal  Pulling    7m24s  kubelet            Pulling image "nginx"
  Normal  Pulled     7m20s  kubelet            Successfully pulled image "nginx" in 4.114836826s
  Normal  Created    7m20s  kubelet            Created container ostechnix-nginx
  Normal  Started    7m20s  kubelet            Started container ostechnix-nginx
[[email protected] ~]#

Una vez que haya terminado, puede eliminar el Pod usando 'kubectl delete ' comando.

# kubectl delete pod ostechnix-nginx

Salida de muestra:

pod "ostechnix-nginx" deleted

Verifique si el Pod se eliminó enumerando los Pods disponibles:

# kubectl get pods
No resources found in default namespace.

Conclusión

En este tutorial, hemos repasado el concepto de Pod en Kubernetes, una implementación sencilla de aplicaciones y cómo ejecutar un Pod. Tendremos más detalles sobre la creación de Pod con YAML archivo de definición en nuestros próximos detalles.


Linux
  1. Cómo crear enlaces duros y simbólicos en Linux

  2. Cómo administrar la caducidad y el envejecimiento de la contraseña de usuario en Linux

  3. Cómo administrar y enumerar servicios en Linux

  4. Cómo implementar su primer pod en un clúster de Kubernetes

  5. Cómo establecer/crear variables de entorno y shell en Linux

Cómo crear y usar un archivo de intercambio en Linux

Cuenta FTP:cómo crearla y administrarla

Cómo crear y administrar máquinas virtuales en KVM

Cómo crear y administrar nuevos usuarios en Linux

Comando crontab de Linux para crear y administrar trabajos cron

Cómo detectar y administrar dispositivos en Linux