Comandos de Kubectl

https://kubernetes.io/docs/reference/kubectl/cheatsheet/

para conocer el estado del cluster kubernetes → kubectl status

para saber la versión → kubectl version

ver la configuración → kubectl config view

Listado de todos los comandos que permite la API → kubectl api-resoruce

kubectl get deploy,rs,service,pods → es igual a un kubectl get all

kubectl api-resources → información sobre la API de kubernetes

kubectl get service → lista de los servicios

kubectl get deployments → lista de deployments

kubectl get namespaces → lista de namespaces

kubectl delete service <nombre_servicio>→ eliminar servicio <nombre_servicio>

kubectl delete deployment <nombre_del_deployment>→ eliminar deployment <nombre_del_deployment>

kubectl apply -f deployment.yaml → aplicar el contenido del fichero deployment.yaml

kubeadm token list →listar los tokens

exponer un deployment → kubectl expose deployment <mi-deployment> –port=80 –type=NodePort

escalar a 3 replicas un deployment → kubectl scale –replicas=3 deployment <mi-deployment> -n <mi-namespace>

crear un secret → kubectl create secret generic mysql-pass –from-literal=password=<mi-contraseña>

Comando para PODs

Crear un POD

Hay dos formas de crear pods. De forma imperativa y de forma declarativa

Imperativa

Ejecutamos el comando para crearlo Hasta la versión 1.17 se debe usar la forma siguiente <sxh>kubectl run –generator=run-pod/v1 <nombre pod> –image=<nombre imagen> created</sxh>

https://v1-17.docs.kubernetes.io/docs/reference/kubectl/conventions/#generators

Apartir de la versión 1.18 la parte de generator está en deshuso y ahora se utiliza <sxh>kubectl run <nombre pod> –image=<nombre de la imagen del repositorio Docker Hub > </sxh>

Por ejemplo para crear un pod con una imagen de un nginx basado en alpine <sxh>kubectl run podtest –image=nginx:alpine</sxh>

Para crear un pod temporal que se elimine al salir del shell <sxh> kubectl run –rm -ti podtest –image=nginx:alpine – sh</sxh>

Declarativa

Definimos un archivo en formato yaml para después aplicarlo <sxh>kubecttl apply -f nombre_fichero.yaml</sxh>

Listar los pods que tenemos

<sxh>kubectol get pods </sxh> Listar los pods de todos los namespaces <sxh>kubectl get pods –all-namespaces -o wide</sxh> Listar los pods de un determinado namespace <sxh>kubectl get pods -n <nombre_namespaces></sxh> Listar los pods del sistema → kubectl get pods -n kube-system

Ver una descripción del pod

Nos permite ver los eventos de un pod y su descripción <sxh>kubectl describe pod <nombredelpod> </sxh>

Etiquetar un pod

<sxh>kubectl label pods <nombredelpod> app=mietiqueta</sxh>

Recursos que consume un pod

<sxh>kubectl top pod <nombre pod></sxh>

Eliminar un pod

<sxh>kubectl delete pod <nombredelpod> </sxh>

en nombre del pod podemos poner uno o varios nombres separados por espacio

Si los pods lo hemos creado desde un manifiesto. Para borrarlos lo mejor es ejecutar <sxh>kubectl delete -f <nombremanifiesto></sxh>

Entrar al shell de nuestro pod

<sxh>kubectl exec -ti <nombredelpod> –sh </sxh>

En el caso de que tengamos un pod con dos contenedores en su interior y queramos entrar al shell de primer contenedor <sxh>kubectl exec -ti <nombredelpod> -c <nombrecontenedor> –sh</sxh>

Ver los logs de un pod

<sxh>kubectl logs <nombredelpod></sxh> Si tenemos mas de un contenedor en el pod <sxh>kubectl logs <nombredelpod> -c <nombredelcontenedor></sxh>

si son pods del system , por ejemplo del driver kube-flannel <sxh>kubectl logs -p kube-flannel-ds-xcl6f -n kube-system</sxh>

Ejecutar un comando sobre un contenedor

<sxh>kubectl exec <nombredelpod> -c <nombredelcontenedor> <comando></sxh>

Copiar un fichero a un contenedor

<sxh>kubectl cp /tmp/archivoprueba <nombredelpod>:/var/www/html -c <nombredelcontenedor></sxh>

Acceder a un puerto dentro de un pod

<sxh>kubectl port-forward –address 0.0.0.0 pod/<pod-name> <host-port>:<pod-port></sxh>

Trabajar con Cluster

Para obtener información sobre el cluster → kubectl cluster-info

Información sobre los nodos → kubectl get nodes

descripción de un nodo → kubectl describe node <nombre del nodo>

ver el consumo de un nodo →kubectl top node <nombre nodo>

Poner un nodo fuera de servicio (para actualizar por ejemplo) → kubectl uncordon <nombre nodo>

Para que quite todos los pods etc que ya existieran en este nodo → kubectl drain <nombre nodo>

Para volver a ponerlo como disponible → kubectl cordon <nombre nodo>

Referencias

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

https://www.albertcoronado.com/2021/06/08/tutorial-kubernetes-i/