Panel de control y línea de comandos
Objetivos del capítulo y requisitos previos
En primer lugar, este capítulo se ocupará de abordar brevemente la historia del origen del proyecto y las nociones relacionadas con los contenedores.
Posteriormente, se presentará una introducción al uso de Kubernetes y se descubrirán algunos elementos:
-
El panel de control (dashboard) de Kubernetes.
-
El comando kubectl.
-
El motor Docker de Minikube.
-
La consulta de algunos objetos básicos (pods y nodos).
Al final de este capítulo, dispondrá de los siguientes elementos:
-
Un clúster de Kubernetes en funcionamiento.
-
Un contexto kubectl coherente.
Para poder seguir todos los ejercicios, es imprescindible disponer de una conexión a Internet de banda ancha (ADSL o superior).
Preámbulo
1. Origen del nombre y del logo
Kubernetes es una palabra de origen griego (κυβερνήτης) que significa timonel (o piloto). En la navegación, es la persona que se encarga de sujetar el timón.
En Google, el nombre interno de este proyecto fue Project Seven, en referencia a un personaje del universo de Star Trek (Seven of Nine o su nombre real, Annika Hansen). Los siete radios del logotipo del timón son un guiño a este antiguo nombre.
2. ¿Por qué utilizar Kubernetes?
El lanzamiento de Docker en los últimos años ha supuesto un gran cambio en la forma de gestionar aplicaciones dentro de un sistema de información. De este modo, ahora es posible realizar operaciones que antes eran complicadas, de una manera más rápida y sencilla; tareas como:
-
iniciar entornos de prueba bajo demanda,
-
deshacerse de los problemas de dependencias de las librerías,
-
estandarizar los entregables de todos los entornos,
-
aislar los recursos en el mismo servidor.
Como cualquier herramienta nueva, algunas preguntas tenían forzosamente una solución sencilla y se introdujeron nuevos problemas. Entre estos problemas, se encuentran los siguientes:
-
Persistencia de datos.
-
Seguimiento de aplicaciones en los contenedores.
-
Actualizaciones automáticas de aplicaciones.
-
Escalabilidad del motor Docker.
-
Escalabilidad de la carga de trabajo de la aplicación....
El panel de control de Kubernetes (dashboard)
1. Presentación
El panel de control de Kubernetes es una forma de consultar el estado de los diferentes elementos de un clúster. Para un usuario que comienza en esta tecnología, se trata un buen punto de partida, ya que esta aplicación permite consultar gráficamente los diferentes componentes de un clúster de Kubernetes.
Sin embargo, aunque esto último es posible en una máquina Minikube, por razones de seguridad puede no ser necesariamente buena idea desplegarlo en plataformas de producción.
2. Panel de control Kubernetes en servicio gestionado
Si utiliza un servicio gestionado, es posible que sea necesario instalar el dashboard antes de continuar.
Para instalarlo, consulte la sección Desplegar el panel de control de Kubernetes, en los anexos.
3. Desplegar el dashboard en Minikube
En Minikube, la activación del panel de control se realiza con la instrucción minikube, seguida de estas opciones:
-
La opción addons, seguida de la palabra clave enable.
-
El nombre del plugin que se desea activar (aquí, dashboard).
A continuación, se muestra el comando que se debe ejecutar:
$ minikube addons enable dashboard
Seguidamente, se muestra el resultado de este comando:
Using image kubernetesui/dashboard:v2.3.1
Using image kubernetesui/metrics-scraper:v1.0.7
Some dashboard features require the metrics-server addon. To
enable all features please run:
minikube addons enable metrics-server
The 'dashboard' addon is enabled
Como indica el comando anterior, active el servidor de métricas (metrics-server) para poder utilizar todas las funcionalidades del panel de control:
$ minikube addons enable metrics-server
A continuación, se muestran los mensajes que devuelve esta operación:
Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
The 'metrics-server' addon is enabled
4. Acceder al dashboard en Minikube
El acceso al panel de control se puede realizar con el comando minikube, seguido de la opción dashboard.
A continuación, se muestra el comando correspondiente:
$ minikube dashboard
Página de bienvenida del panel de control de Kubernetes
El comando...
Presentación de la herramienta kubectl
1. Preámbulo
En la sección anterior descubrió algunos objetos necesarios para desplegar una aplicación. Antes de continuar y comenzar a crear estos elementos en línea de comandos, se va a familiarizar con el comando kubectl.
2. Consultar elementos
Consultar el estado de los objetos en Kubernetes es una operación que se realiza con mucha frecuencia. Para esto, el administrador puede utilizar la palabra clave dedicada: get. Esta instrucción espera necesariamente el tipo de objeto que se va a consultar.
En el capítulo sobre cómo implementar Minikube, recuperó la lista de espacios de nombres existentes (namespace).
A continuación, se muestra el comando ejecutado:
$ kubectl get namespace
Este comando devuelve el siguiente resultado:
NAME STATUS AGE
default Active 19h
kube-node-lease Active 19h
kube-public Active 19h
kube-system Active 19h
kubernetes-dashboard Active 19h
Hay cuatro espacios de nombres (al menos):
-
default: espacio de nombres predeterminado que se usará para crear objetos en Kubernetes.
-
kube-public: espacio de nombres público que contiene solo un objeto de configuración (objectmap).
-
kube-system: espacio de nombres que contiene los objetos necesarios para el ciclo de vida de un clúster de Kubernetes.
-
kube-node-lease: espacio de nombres que contiene objetos técnicos de comunicación (objet Lease) con los nodos...
El motor Containerd de Minikube
1. Inicialización del entorno
En el caso de Minikube, es posible consultar el motor Containerd que utiliza Kubernetes. Para hacer esto, conéctese al nodo usando la siguiente instrucción:
$ minikube ssh
El demonio containerd se puede consultar usando el comando ctr, precedido por la instrucción sudo. Para recuperar la lista de los espacios de nombres, utilice las palabras clave namespace ls:
$ sudo ctr namespace ls
A continuación, se muestra el resultado esperado:
NAME LABELS
k8s.io
Aquí, el espacio de nombres se corresponde con una actividad relacionada con Kubernetes. En caso de que Docker se haya usado como motor de contenedores, el espacio de nombres llevaría el valor moby.
Los espacios de nombres en Containerd son similares a los que se han mostrado anteriormente. Sin embargo, tenga cuidado porque los dos conceptos no tienen nada que ver: Kubernetes usa su propio mecanismo internamente.
2. Los contenedores asociados a los pods
Además de los espacios de nombres, es posible consultar la lista de contenedores en Containerd.
Para hacer esto, use el comando ctr con las siguientes opciones:
-
La instrucción sudo para tener los permisos suficientes.
-
El uso del espacio de nombres k8s.io (con la opción -n).
-
Las palabras clave container ls.
A continuación, se muestra la instrucción completa que se debe utilizar:
$ sudo ctr -n k8s.io container...