Tutoriales

Cree y administre 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, veremos brevemente 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 Kuberneteslos pods son las unidades informáticas implementables más pequeñas que puede crear 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 los pods en lugar de los contenedores directamente.
  • Múltiples contenedores POD: 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 KubernetesUn recurso de carga de trabajo y su controlador normalmente producen y administran pods replicados en un grupo.

El objetivo final de Kubernetes es desplegar la aplicación en forma de contenedores en un conjunto de máquinas que se denomina como 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.

Clúster de Kubernetes

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 escalar la aplicación, debe activar Pods nuevos adicionales en el nodo con la misma aplicación. Si la carga aumenta aún más y el nodo actual no tiene capacidad, entonces necesita tener un nodo adicional para activar Pods con la misma aplicación. contenedor de aplicaciones

Del mismo modo, para reducir la escala, debe eliminar los pods existentes.

Espero que tenga una idea básica sobre los pods de Kubernetes. Ahora veamos 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.

Una vez que se instala Kubernetes, puede comenzar a crear Pods.

Por lo general, no es necesario que cree pods directamente, ni siquiera pods únicos, sino que créelos con recursos de carga de trabajo, como Despliegue o TrabajoUna implementación proporciona actualizaciones declarativas para Pods y ReplicaSets.

Crear una implementación

Cree una implementación de muestra utilizando una imagen existente «servidor de eco».Es un servidor HTTP simple y podemos exponerlo en el puerto 8080 utilizando --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 nodo único.

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
Obtener detalles del nodo
Obtener detalles del nodo

Ahora, implemente una aplicación de muestra llamada «hola-ostechnix» usando el siguiente comando Puede nombrarlo de acuerdo a 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

Implementación 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
URL del servicio
URL del servicio

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

Ver detalles de la aplicación implementada en el navegador
Ver detalles de la aplicación implementada en el navegador

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á. La terminación tardará unos segundos en completarse.

# 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

Salida 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  --image=

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, usando el ‘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              

Puede obtener información completa sobre el POD utilizando el ‘kubectl describecomando.

# 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:  
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:           
    Host Port:      
    State:          Running
      Started:      Thu, 03 Feb 2022 01:40:54 -0800
    Ready:          True
    Restart Count:  0
    Environment:    
    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:       
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              
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] ~]#
Mostrar información completa de un pod
Mostrar información completa de un pod

Una vez que haya terminado, puede eliminar el Pod usando el ‘kubectl deletecomando.

# 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.
Eliminar un pod
Eliminar un pod

Conclusión

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

Recurso:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba