{{tag>kubectl comandos kubernetes cluster pod nodo}} ===== 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 **-> eliminar servicio * **kubectl delete deployment **-> eliminar 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 --port=80 --type=NodePort ** * escalar a 3 replicas un deployment -> **kubectl scale --replicas=3 deployment -n ** * crear un secret -> **kubectl create secret generic mysql-pass --from-literal=password= ** ==== 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 kubectl run --generator=run-pod/v1 --image= created 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 kubectl run --image= Por ejemplo para crear un pod con una imagen de un nginx basado en alpine kubectl run podtest --image=nginx:alpine Para crear un pod temporal que se elimine al salir del shell kubectl run --rm -ti podtest --image=nginx:alpine -- sh == Declarativa == Definimos un archivo en formato yaml para después aplicarlo kubecttl apply -f nombre_fichero.yaml === Listar los pods que tenemos === kubectol get pods Listar los pods de todos los namespaces kubectl get pods --all-namespaces -o wide Listar los pods de un determinado namespace kubectl get pods -n 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 kubectl describe pod === Etiquetar un pod ==== kubectl label pods app=mietiqueta === Recursos que consume un pod === kubectl top pod === Eliminar un pod === kubectl delete pod 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 kubectl delete -f === Entrar al shell de nuestro pod === kubectl exec -ti --sh En el caso de que tengamos un pod con dos contenedores en su interior y queramos entrar al shell de primer contenedor kubectl exec -ti -c --sh === Ver los logs de un pod === kubectl logs Si tenemos mas de un contenedor en el pod kubectl logs -c si son pods del system , por ejemplo del driver kube-flannel kubectl logs -p kube-flannel-ds-xcl6f -n kube-system == Ejecutar un comando sobre un contenedor == kubectl exec -c == Copiar un fichero a un contenedor == kubectl cp /tmp/archivoprueba :/var/www/html -c == Acceder a un puerto dentro de un pod == kubectl port-forward --address 0.0.0.0 pod/ : ==== 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 ** * ver el consumo de un nodo ->**kubectl top node ** * Poner un nodo fuera de servicio (para actualizar por ejemplo) -> **kubectl uncordon ** * Para que quite todos los pods etc que ya existieran en este nodo -> **kubectl drain ** * Para volver a ponerlo como disponible -> **kubectl cordon ** ==== Referencias ==== * https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands * https://www.albertcoronado.com/2021/06/08/tutorial-kubernetes-i/