Kubernetes: desde el principio, Parte I, Conceptos básicos, Implementación y Minikube

Kubernetes es sobre orquestación de aplicaciones en contenedores. Docker es ideal para tus primeros contenedores. Tan pronto como necesites ejecutar en múltiples máquinas y necesites escalar / subir y distribuir la carga, etc., necesitarás un orquestador.

En esta publicación se cubre lo siguiente:

  • ¿Por qué Kubernetes y la acción de orquestar en general?
  • Hola mundo: conceptos básicos de Minikube, hablar a través de Minikube, ejemplo de implementación simple
  • Clúster y comandos básicos, nodos
  • Despliegues, qué es y despliegue de una aplicación.
  • Pods y nodos, explican conceptos y solución de problemas.

¿Por qué orquestar?
Bueno, todo comenzó con contenedores. Los contenedores nos brindaron la capacidad de crear entornos repetibles, por lo que el desarrollo, la puesta en escena y la estimulación se veían y funcionaban de la misma manera. Obtuvimos previsibilidad y también fueron ligeros, ya que obtuvieron recursos del sistema operativo host. Un gran avance para desarrolladores y operadores, pero la API del contenedor es realmente buena para administrar unos cuantos contenedores a la vez. Los sistemas más grandes pueden constar de 100 o más contenedores y también deben administrarse para que podamos hacer cosas como la programación, el equilibrio de carga, la distribución y más.

En este punto, necesitamos la capacidad de orquestación de un sistema para manejar todas estas instancias de contenedor. Aquí es donde entra Kubernetes.

Recursos:

Kubernetes 

Entonces, ¿Qué sabemos acerca de Kubernetes?

Es un sistema de código abierto para automatizar la implementación, escalado y administración de aplicaciones en contenedores.

Empecemos con el nombre. Es griego para Helmsman, la persona que dirige el barco. Es por eso que el logotipo se ve así, un volante en un barco:

También se llama K8, por lo que K ubernete s, se eliminan 8 caracteres en el medio. Ahora puedes impresionar a tus amigos y saber por qué se conoce como K8.

Aquí hay un poco más de conocimiento de riesgo sobre su origen. Kubernetes nació de sistemas llamados Borg y Omega. Fue donado a CNCF, Cloud Native Computing Foundation en 2014. Está escrito en Go / Golang.

Si vemos más allá de todo este conocimiento trivial, fue creado por Google como respuesta a su propia experiencia al manejar una tonelada de contenedores. También es de código abierto y probado en batalla para manejar sistemas realmente grandes, como sistemas grandes a escala planetaria.

Así que el argumento de venta es:

Ejecuta miles de millones de contenedores a la semana, Kubernetes puede escalar sin aumentar tu equipo de operaciones

Suena increíble, miles de millones de contenedores. Bueno, incluso si tienes algo como 10-100 contenedores, es para ti.

Minikube

Minikube es una herramienta que nos permite ejecutar Kubernetes localmente.¿Millones de contenedores en mi pequeña máquina? Bueno, no, comencemos con algunos y aprendamos los conceptos básicos de Kubernetes.

Instalación: Para instalar Minikube vamos a esta página de instalación.

Es solo unos pocos pasos que significa que instalamos

  • un hipervisor
  • Kubectl (herramienta de control de Kube)
  • Minikube

Run:

Ponlo en marcha escribiendo…

minikube start
kubectl version

Debería darte algo como esto en respuesta:

Ok, ahora estamos listos para aprender Kubernetes.

Aprendiendo kubectl y conceptos básicos.

Al aprender Kubernetes, podemos hacerlo aprendiendo más sobre kubectl, un programa de línea de comandos que nos permite interactuar con nuestro Cluster y nos permite implementar y administrar aplicaciones en dicho Cluster.

La palabra Cluster solo significa un grupo de cosas similares, pero en el contexto de Kubernetes, significa un Maestro y varias máquinas de trabajo llamadas Nodos. Los nodos fueron llamados históricamente Minions.

, pero ya no tanto.

El maestro decide qué se ejecutará en los Nodos, lo que incluye cosas como cargas de trabajo programadas o aplicaciones en contenedores. Lo que nos lleva a nuestro siguiente comando:

kubectl get nodes

Esto debería darnos un resultado como este:

Lo que esto nos dice es qué Nodos tenemos disponibles para trabajar.

A continuación, vamos a tratar de ejecutar nuestra primera aplicación en Kubernetes con el comando de ejecución así:

kubectl run kubernetes-first-app --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080

Esto debería darnos una respuesta así:

A continuación, verificamos que todo esté funcionando correctamente con el comando:

kubectl get deployments

Esto muestra lo siguiente en el terminal:

Al poner nuestra aplicación en el Kluster, al invocar el comando de ejecución, Kubernetes realizó algunas cosas detrás de escena, esto:

  • Busco un nodo adecuado donde pudiera ejecutarse una instancia de la aplicación, solo había un nodo por lo que se eligió
  • Programo la aplicación para que se ejecute en ese nodo
  • Configuro el clúster para reprogramar la instancia en un nuevo nodo cuando sea necesario

A continuación vamos a presentar el concepto Pod, ¿qué es un Pod?

Un Pod es la unidad desplegable más pequeña y consta de uno o varios contenedores, por ejemplo, contenedores Docker. Eso es todo lo que vamos a decir sobre Pods en este momento, pero si realmente desea saber más, lea aquí

La razón para mencionar Pods en este punto es que nuestro contenedor y nuestra aplicación se encuentran dentro de un Pod. Además, los Pods se ejecutan en una red privada aislada que, aunque es visible desde otros Pods y servicios, no se puede acceder a ellos fuera de la red. Lo que significa que no podemos llegar a nuestra aplicación con el comando say a curl.

Aunque podemos cambiar eso. Hay más de una forma de exponer nuestra aplicación al mundo exterior por ahora, sin embargo, usaremos un proxy.

Ahora abre una segunda ventana de terminal y escribe:

kubectl proxy

Esto expondrá el kubectl como una API que podemos consultar con la solicitud HTTP. El resultado debe verse como:

En lugar de escribir la versión de kubectl, ahora podemos escribir curl http: // localhost: 8001 / version y obtener los mismos resultados:

El servidor API dentro de Kubernetes ha creado un punto final para cada pod por su nombre de pod. Así que el siguiente paso es averiguar el nombre del pod:

kubectl get pods

Esto incluirá una lista de todos los pods que tiene, debería ser solo un pod en este punto y verse así:

Entonces puedes guardar eso en una variable como esta:

Por último, ahora podemos hacer una llamada HTTP para obtener más información sobre nuestro pod:

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME

Esto nos dará una respuesta JSON larga (lo recorté un poco pero sigue y sigue …)

Tal vez eso no sea muy interesante para nosotros como desarrolladores de aplicaciones. Queremos saber cómo está nuestra aplicación. La mejor manera de saber que es mirando los registros. Hagamos eso con este comando:

kubectl logs $POD_NAME

Como puede ver a continuación, sabemos que obtenemos registros de nuestra aplicación:

Ahora que sabemos el nombre de Pods, podemos hacer todo tipo de cosas como verificar sus variables de entorno o incluso entrar en el contenedor y ver el contenido.

kubectl exec $POD_NAME env

Esto produce el siguiente resultado:

Ahora vamos a entrar en el contenedor:

kubectl exec -ti $POD_NAME bash

¡Estamos dentro! Esto significa que podemos ver cómo se ve el código fuente incluso:

cat server.js

Dentro de nuestro contenedor, ahora podemos alcanzar la aplicación en ejecución escribiendo:

curl http://localhost:8080

Resumen

¿Qué aprendimos en este artículo?

  • Kubernetes, su origen, lo que es.
  • Orquestación.
  • Conceptos como Maestro, Nodos y Pods
  • Minikube, kubectl y cómo implementar una imagen en nuestro Clúster

Fuente: Chris Noring / Microsoft Azure

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Crea tu página web en WordPress.com
Empieza ahora
A %d blogueros les gusta esto:
search previous next tag category expand menu location phone mail time cart zoom edit close