From ab11d514e37b2a569e5072ebf23b4611814d1fdc Mon Sep 17 00:00:00 2001 From: Manuel Vergara Date: Thu, 27 Oct 2022 12:00:24 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ado=20documentaci=C3=B3n=20y=20corrijo?= =?UTF-8?q?=20estructura=20del=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 296 +++++++++++++++++++++++++++--------------------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index 60db9b7..083d81a 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ - [Componentes](#componentes) - [Recursos Kubernetes](#recursos-kubernetes) - [Instalación kubctl y primeros pasos](#instalación-kubctl-y-primeros-pasos) + - [Ayuda de kubeclt](#ayuda-de-kubeclt) + - [Resultados de kubectl con colores: kubecolors](#resultados-de-kubectl-con-colores-kubecolors) - [kind](#kind) - [minikube](#minikube) - [MicroK8s](#microk8s) @@ -15,9 +17,7 @@ - [Utilizar complementos](#utilizar-complementos) - [Iniciando y deteniendo MicroK8s](#iniciando-y-deteniendo-microk8s) - [Digital Ocean](#digital-ocean) - - [Resultados de kubectl con cololes: kubecolors](#resultados-de-kubectl-con-cololes-kubecolors) - - [Resumen conexión de cluster Digital Ocean](#resumen-conexión-de-cluster-digital-ocean) - - [Ayuda de kubeclt](#ayuda-de-kubeclt) + - [Resumen conexión de cluster Digital Ocean](#resumen-conexión-de-cluster-digital-ocean) - [Ejemplo de un YAML para un pod básico de busybox](#ejemplo-de-un-yaml-para-un-pod-básico-de-busybox) - [Manifiestos de Pelado Nerd](#manifiestos-de-pelado-nerd) - [Manifiesto de POD](#manifiesto-de-pod) @@ -164,6 +164,150 @@ kubectl version --client=true --output=yaml ``` Ponemos `--cliente=true` porque si no se intentaría conectar a un clúster kubernetes y trataría de descargar la versión kubernetes del clúster. Para un formato más legible controlamos la salida con `--output=yaml|json]` +### Ayuda de kubeclt + +Podemos encontrar muy buena [documentación oficial](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands), pero también se puede ver la ayuda del cliente con +``` +kubectl --help +``` +![](img/ayuda.png) + +> *Trascripción traducida de la ayuda de kubectl* +``` +kubectl controla el gestor de clústeres de Kubernetes. + +Encontrará más información en: https://kubernetes.io/docs/reference/kubectl/ + +Comandos básicos (principiante): + create Crear un recurso desde un archivo o desde stdin + expose Tomar un controlador de replicación, servicio, despliegue o pod y exponerlo como un nuevo servicio Kubernetes + run Ejecutar una imagen particular en el cluster + set Establecer características específicas en los objetos + +Comandos básicos (Intermedio): + explain Obtener la documentación de un recurso + get Mostrar uno o varios recursos + edit Editar un recurso en el servidor + delete Eliminar recursos por nombres de archivo, stdin, recursos y nombres, o por recursos y selector de etiqueta + +Comandos de despliegue: + rollout Gestionar el despliegue de un recurso + scale Establecer un nuevo tamaño para un despliegue, conjunto de réplicas o controlador de replicación + autoscale Escala automáticamente un despliegue, un conjunto de réplicas, un conjunto con estado o un controlador de replicación + +Comandos de gestión del clúster: + certificate Modificar los recursos del certificado. + cluster-info Mostrar información del cluster + top Mostrar el uso de recursos (CPU/memoria) + cordon Marcar un nodo como no programable + uncordon Marcar el nodo como programable + drain Drenar el nodo en preparación para el mantenimiento + taint Actualizar los taints de uno o más nodos + +Comandos de solución de problemas y depuración: + describe Mostrar los detalles de un recurso específico o de un grupo de recursos + logs Imprimir los registros de un contenedor en un pod + attach Adjuntar a un contenedor en ejecución + exec Ejecutar un comando en un contenedor + port-forward Reenviar uno o más puertos locales a un pod + proxy Ejecutar un proxy al servidor de la API de Kubernetes + cp Copiar archivos y directorios hacia y desde los contenedores + auth Inspeccionar la autorización + debug Crear sesiones de depuración para la resolución de problemas de cargas de trabajo y nodos + +Comandos avanzados: + diff Comparar una versión en vivo contra una versión aplicada + apply Aplicar una configuración a un recurso por nombre de archivo o stdin + patch Actualizar los campos de un recurso + replace Reemplazar un recurso por nombre de archivo o stdin + wait Experimental: Esperar una condición específica en uno o varios recursos + kustomize Construir un objetivo de kustomize a partir de un directorio o una URL. + +Settings Commands: + label Actualizar las etiquetas de un recurso + annotate Actualiza las anotaciones de un recurso + completion Imprimir el código de finalización del shell para el shell especificado (bash, zsh, fish o powershell) + +Otros Comandos: + alpha Comandos para funciones en alpha + api-resources Imprime los recursos de la API soportados en el servidor + api-versions Imprime las versiones de la API admitidas en el servidor, en forma de "grupo/versión" + config Modifica los archivos kubeconfig + plugin Proporciona utilidades para interactuar con los plugins + version Imprime la información de la versión del cliente y del servidor + +Uso: + kubectl [flags] [options] + +Utilice "kubectl --help" para obtener más información sobre un determinado comando. +Utilice "kubectl options" para obtener una lista de opciones globales de la línea de comandos (se aplica a todos los comandos). +``` + +Una herramienta gráfica para kubectl es *[lens](https://k8slens.dev/)*., Muestra los contenedores de una manera clara y también tiene gráficas (memoria, CPU, etc). + +Para mostrar los contextos que están en el fichero kubeconfig o el archivo de configuración de kubectl +``` +kubectl config get-contexts +``` + +Para mostrar los namespaces: +``` +kubectl get ns +``` +Con el clúster recien creado aparecerán los namespaces por defecto que vienen con cualquier clúster. + +![](img/get-ns.png) + +Para ver los pods que están corriendo +``` +kubectl -n kube-system get pods +``` +![](img/kube-system-n-get-pods.png) + +`kube-system` es un namespace que utiliza kubernetes para correr los pods de sistema. + +Tomando un ejemplo, `do-node-agent-9rt5c` es un agente que corre DigitalOcean en sus nodos para hacer algún tipo de recolección de datos o monitoreo. El final alfanumérico es porque ha sido generado por el template de pods *deployment*, todos los pods tendrá ese hash en el nombre. + +La segunda columna indica el número de pods activos y los que existen. El estado, está claro, después están las columnas de los reinicios efectuados y la de el tiempo que lleva arrancado. + +Con la opción `-o wide` mostrará un poco más de información. + +![](img/kube-system-n-get-pods-o-wide.png) + +Vamos a probar lo que dicen de kubernetes de que si se borra un pod se creará uno nuevo. +``` +kubectl -n kube-system delete pod do-node-agent-9rt5c +``` +Inmediatamente muestro los pods y se puede ver como lo está creando de nuevo. +![](img/delete-pod-agent.png) + +El pod es nuevo, tiene otro hash. Así que esto asegura que siempre estén el mismo número de pods. + +### Resultados de kubectl con colores: kubecolors +Para verlo con colores se puede instalar el plugin de kubectl que se llama *[kubecolors](https://github.com/hidetatz/kubecolor)* + +*En ubuntu:* +``` +wget http://archive.ubuntu.com/ubuntu/pool/universe/k/kubecolor/kubecolor_0.0.20-1_amd64.deb +``` +``` +sudo dpkg -i kubecolor_0.0.20-1_amd64.deb +``` +``` +sudo apt update && sudo apt install kubecolor -y + +``` +``` +kubecolor --context=[tu_contexto] get pods -o json +``` +``` +kubecolor --context=do-ams3-k8s-1-24-4-do-0-ams3-..... get pods -o json +``` +``` +alias kubectl="kubecolor" +``` +![](img/get-nodes-color.png) + ### kind En **Linux**, podemos instalar [kind](https://kind.sigs.k8s.io/) @@ -305,32 +449,7 @@ kubectl get nodes ![](img/get-nodes.png) -### Resultados de kubectl con cololes: kubecolors -Para verlo con colores se puede instalar el plugin de kubectl que se llama *[kubecolors](https://github.com/hidetatz/kubecolor)* - -*En ubuntu:* -``` -wget http://archive.ubuntu.com/ubuntu/pool/universe/k/kubecolor/kubecolor_0.0.20-1_amd64.deb -``` -``` -sudo dpkg -i kubecolor_0.0.20-1_amd64.deb -``` -``` -sudo apt update && sudo apt install kubecolor -y - -``` -``` -kubecolor --context=[tu_contexto] get pods -o json -``` -``` -kubecolor --context=do-ams3-k8s-1-24-4-do-0-ams3-..... get pods -o json -``` -``` -alias kubectl="kubecolor" -``` -![](img/get-nodes-color.png) - -### Resumen conexión de cluster Digital Ocean +#### Resumen conexión de cluster Digital Ocean Para que tenga el color y todo ``` export KUBECONFIG=~/Downloads/k8s-1-20.... get nodes @@ -355,125 +474,6 @@ alias kubectl="kubecolor" kubectl get nodes ``` -### Ayuda de kubeclt -Se puede ver la ayuda del cliente con -``` -kubectl --help -``` -![](img/ayuda.png) - -> *Trascripción traducida de la ayuda de kubectl* -``` -kubectl controla el gestor de clústeres de Kubernetes. - -Encontrará más información en: https://kubernetes.io/docs/reference/kubectl/ - -Comandos básicos (principiante): - create Crear un recurso desde un archivo o desde stdin - expose Tomar un controlador de replicación, servicio, despliegue o pod y exponerlo como un nuevo servicio Kubernetes - run Ejecutar una imagen particular en el cluster - set Establecer características específicas en los objetos - -Comandos básicos (Intermedio): - explain Obtener la documentación de un recurso - get Mostrar uno o varios recursos - edit Editar un recurso en el servidor - delete Eliminar recursos por nombres de archivo, stdin, recursos y nombres, o por recursos y selector de etiqueta - -Comandos de despliegue: - rollout Gestionar el despliegue de un recurso - scale Establecer un nuevo tamaño para un despliegue, conjunto de réplicas o controlador de replicación - autoscale Escala automáticamente un despliegue, un conjunto de réplicas, un conjunto con estado o un controlador de replicación - -Comandos de gestión del clúster: - certificate Modificar los recursos del certificado. - cluster-info Mostrar información del cluster - top Mostrar el uso de recursos (CPU/memoria) - cordon Marcar un nodo como no programable - uncordon Marcar el nodo como programable - drain Drenar el nodo en preparación para el mantenimiento - taint Actualizar los taints de uno o más nodos - -Comandos de solución de problemas y depuración: - describe Mostrar los detalles de un recurso específico o de un grupo de recursos - logs Imprimir los registros de un contenedor en un pod - attach Adjuntar a un contenedor en ejecución - exec Ejecutar un comando en un contenedor - port-forward Reenviar uno o más puertos locales a un pod - proxy Ejecutar un proxy al servidor de la API de Kubernetes - cp Copiar archivos y directorios hacia y desde los contenedores - auth Inspeccionar la autorización - debug Crear sesiones de depuración para la resolución de problemas de cargas de trabajo y nodos - -Comandos avanzados: - diff Comparar una versión en vivo contra una versión aplicada - apply Aplicar una configuración a un recurso por nombre de archivo o stdin - patch Actualizar los campos de un recurso - replace Reemplazar un recurso por nombre de archivo o stdin - wait Experimental: Esperar una condición específica en uno o varios recursos - kustomize Construir un objetivo de kustomize a partir de un directorio o una URL. - -Settings Commands: - label Actualizar las etiquetas de un recurso - annotate Actualiza las anotaciones de un recurso - completion Imprimir el código de finalización del shell para el shell especificado (bash, zsh, fish o powershell) - -Otros Comandos: - alpha Comandos para funciones en alpha - api-resources Imprime los recursos de la API soportados en el servidor - api-versions Imprime las versiones de la API admitidas en el servidor, en forma de "grupo/versión" - config Modifica los archivos kubeconfig - plugin Proporciona utilidades para interactuar con los plugins - version Imprime la información de la versión del cliente y del servidor - -Uso: - kubectl [flags] [options] - -Utilice "kubectl --help" para obtener más información sobre un determinado comando. -Utilice "kubectl options" para obtener una lista de opciones globales de la línea de comandos (se aplica a todos los comandos). -``` - -Una herramienta gráfica para kubectl es *[lens](https://k8slens.dev/)*., Muestra los contenedores de una manera clara y también tiene gráficas (memoria, CPU, etc). - -Para mostrar los contextos que están en el fichero kubeconfig o el archivo de configuración de kubectl -``` -kubectl config get-contexts -``` - -Para mostrar los namespaces: -``` -kubectl get ns -``` -Con el clúster recien creado aparecerán los namespaces por defecto que vienen con cualquier clúster. - -![](img/get-ns.png) - -Para ver los pods que están corriendo -``` -kubectl -n kube-system get pods -``` -![](img/kube-system-n-get-pods.png) - -`kube-system` es un namespace que utiliza kubernetes para correr los pods de sistema. - -Tomando un ejemplo, `do-node-agent-9rt5c` es un agente que corre DigitalOcean en sus nodos para hacer algún tipo de recolección de datos o monitoreo. El final alfanumérico es porque ha sido generado por el template de pods *deployment*, todos los pods tendrá ese hash en el nombre. - -La segunda columna indica el número de pods activos y los que existen. El estado, está claro, después están las columnas de los reinicios efectuados y la de el tiempo que lleva arrancado. - -Con la opción `-o wide` mostrará un poco más de información. - -![](img/kube-system-n-get-pods-o-wide.png) - -Vamos a probar lo que dicen de kubernetes de que si se borra un pod se creará uno nuevo. -``` -kubectl -n kube-system delete pod do-node-agent-9rt5c -``` -Inmediatamente muestro los pods y se puede ver como lo está creando de nuevo. -![](img/delete-pod-agent.png) - -El pod es nuevo, tiene otro hash. Así que esto asegura que siempre estén el mismo número de pods. - - --- ## Ejemplo de un YAML para un pod básico de busybox ```