Hoja de trucos para los comandos de Kubernetes

Al trabajar en Kubernetes es muy importante que conozcas al menos los comandos básicos. En este artículo, encontrarás los comandos que se necesitan la mayoría de las veces mientras se trabaja en el clúster. Si conoces los comandos, puedes librarte de escribir archivos de definición de objetos para objetos simples y luego crear objetos utilizando esos archivos. En su lugar, puedes utilizar los comandos y ver los objetos creados en una fracción de segundos.

En este artículo, no sólo verás los comandos para obtener detalles de los objetos, sino también para crearlos. Este artículo se centra sólo en los comandos y no en la descripción de los mismos. Si quieres conocer todos y cada uno de los comandos en detalle, puedes visitar la documentación oficial aquí.

Este artículo será una hoja de trucos para ti con respecto a los objetos principales del Clúster Kubernetes.

Requisitos previos

  1. Conocimiento básico de Kubernetes
  2. Clúster Kubernetes con al menos 1 nodo trabajador.
    Si quieres aprender a crear un Clúster Kubernetes, haz clic aquí. Esta guía te ayudará a crear un clúster Kubernetes con 1 Maestro y 2 Nodos en Instancias EC2 de AWS Ubuntu 18.04.

¿Qué veremos?

  1. Comandos importantes
    1. Información sobre el clúster
    2. Información sobre la configuración
    3. Espacio de nombres
    4. Pod
    5. Despliegues
    6. Servicios
    7. Gestionar objetos desde archivos .yaml/.yml

Comandos importantes

Información del clúster

Imprime la información de la versión del cliente y del servidor

kubectl version

Imprime los recursos de la API admitidos en el servidor

kubectl api-resources

Imprime las versiones de API soportadas en el servidor, en forma de «grupo/versión»

kubectl api-versions

Imprime la información del clúster

kubectl cluster-info

Obtén la lista de los nodos del clúster

kubectl  get nodes

Obtén información del nodo maestro

kubectl  get nodes master -o wide

Obtén información detallada de los nodos maestros

kubectl  describe  nodes  master

Información sobre la configuración

Mostrar la configuración de kubeconfig fusionada

kubectl  config view

Ver el contexto actual

kubectl  config  current-context

Establecer el contexto, aquí kubernetes-admin@kubernetes es el nombre del contexto

kubectl config  use-context kubernetes-admin@kubernetes

Mostrar los clusters definidos en la kubeconfig

kubectl  config get-clusters

Describir uno o varios contextos

kubectl  config get-contexts

Espacios de nombres

Obtener todos los espacios de nombres

kubectl  get namespaces

Obtener la información del espacio de nombres en formato yaml

kubectl  get namespaces -o yaml

Describir el espacio de nombres por defecto

kubectl  describe  namespace default

Crear un nuevo espacio de nombres

kubectl  create namespace my-namespace

Eliminar el espacio de nombres

kubectl  delete namespace my-namespace

Pods

Obtener los pods del espacio de nombres actual

kubectl get pods

Obtener los pods de todos los espacios de nombres

kubectl get pods --all-namespaces

Obtener los pods del espacio de nombres especificado

kubectl get pods -namespace=my-namespace

Crear un pod

kubectl  run my-pod-1 --image=nginx:latest --dry-run

ver cómo se procesa el pod

kubectl  run my-pod-1 --image=nginx:latest --dry-run=client

Crea un pod en el espacio de nombres especificado

kubectl  run my-pod-2 --image=nginx:latest --namespace=my-namespace

Crea un pod con una etiqueta

kubectl  run nginx --image=nginx -l --labels=app=test

Obtener todos los pods con salida de etiqueta

kubectl get pods --show-labels

Obtener los pods con salida exapada/ancha

kubectl  get pods -o wide

Listar los pods en un orden ordenado

kubectl  get pods --sort-by=.metadata.name

Obtener los registros del pod

kubectl  logs  my-pod-1

Obtener los pods dentro del espacio de nombres especificado con salida exapanda/ancha

kubectl get pods my-pod-2 --namespace=my-namespace -o wide

Obtener los registros del pod dentro del espacio de nombres especificado

kubectl  logs  my-pod-2 --namespace=my-namespace

Describir el pod

kubectl  describe  pod my-pod-1

Describe el pod dentro del espacio de nombres especificado

kubectl describe  pods my-pod-1 --namespace=my-namespace

Eliminar el pod del espacio de nombres actual

kubectl  delete pod my-pod-1

Eliminar el pod del espacio de nombres especificado

kubectl delete  pods my-pod-1 --namespace=my-namespace

Despliegues

Obtén una lista de despliegues del espacio de nombres actual

kubectl  get deployments

Obtén una lista de despliegues del espacio de nombres especificado

kubectl  get deployments --namespace=my-namespace

Crear un despliegue

kubectl  create deployment my-deployment-1 --image=nginx

Obtén el despliegue especificado

kubectl  get deployment my-deployment-1

Obtén el despliegue especificado con sus etiquetas

kubectl  get deployment my-deployment-1 --show-labels

Describe el despliegue especificado

kubectl describe  deployments my-deployment-1

Obtener detalles del despliegue en formato yaml

kubectl  get deployment my-deployment-1 -o yaml

Cambiar la imagen del despliegue existente

kubectl  set image deployment my-deployment-1 nginx=nginx:1.16.1

Ver el historial de despliegues

kubectl rollout history deployment my-deployment-1

Deshacer un despliegue anterior

kubectl rollout undo deployment my-deployment-1

Retroceder la versión específica del historial de despliegue

kubectl rollout undo deployment my-deployment-1 --to-revision=2

Mostrar el estado del despliegue

kubectl rollout status deployment my-deployment-1

Reiniciar un recurso

kubectl rollout restart deployment my-deployment-1

Escalar el despliegue a 3

kubectl scale --replicas=3 deployment my-deployment-1

Escalar desde la cuenta actual hasta la deseada

kubectl scale --current-replicas=3 --replicas=5 deployment my-deployment-1

Esto creará un HPA (Horizontal Pod Aotuscaler)

kubectl autoscale deployment my-deployment-1 --min=2 --max=10

Servicios

Primero, crea un pod con la etiqueta app=myapp.

A continuación

Crea un pod con la etiqueta

kubectl run my-pod --image=nginx --labels=app=myapp

Crea un servicio de tipo NodePort que utilizará las etiquetas del pod para el selector, pero tenemos que especificar el tipo, así que crea primero un archivo de definición y luego crea un servicio

kubectl expose pod my-pod --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml

Crea un Servicio que tendrá el tipo NodePort pero éste no tendrá selector como mi-app

kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml

Obtén los servicios del contexto actual

kubectl  get service

Obtén detalles de los servicios

kubectl  get service -o wide

Obtén los servicios con etiquetas

kubectl  get service --show-labels

Obtener servicios de todos los espacios de nombres

kubectl  get services --all-namespaces

Describir el servicio para saber más sobre él

kubectl  describe  service nginx-service

Obtener un servicio concreto

kubectl  get  service nginx-service

Eliminar el servicio

kubectl  delete service nginx-service

Gestionar los objetos de los archivos .yaml/.yml

Primero, crea un archivo de definición para un pod

Crea un archivo de definición para un pod

kubectl  run mypod --image=nginx --dry-run=client -o yaml > my-pod.yml

Crea un objeto

kubectl  create -f my-pod.yml

Elimina el objeto

kubectl  delete -f my-pod.yml

Conclusión

En este artículo, hemos visto los comandos importantes que se necesitan cuando se trabaja en Kubernetes. Los comandos en Kubernetes no se limitan sólo a estos comandos, sino que estos comandos son como los que hay que conocer.

Scroll al inicio