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
- Conocimiento básico de Kubernetes
- 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?
- Comandos importantes
- Información sobre el clúster
- Información sobre la configuración
- Espacio de nombres
- Pod
- Despliegues
- Servicios
- 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.