La mayoría de los consejos que se dan a continuación utilizan kubectl, una potente herramienta de línea de comandos que le permite ejecutar comandos contra clústeres de Kubernetes.
Boletín del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Si necesita contexto sobre Kubernetes antes de empezar con estos consejos, consulte los siguientes recursos:
Puede dividir un clúster Kubernetes en varios entornos usando espacios de nombres (por ejemplo, Dev1, Dev2, QA1, QA2, etc.), y cada entorno puede ser gestionado por un usuario diferente. Uno de los inconvenientes de escribir comandos kubectl es que cada vez que escribe un comando, necesita la opción --namespace
al final. La gente suele olvidar esto y acaba creando objetos (pods, servicios, implementaciones) en el espacio de nombres equivocado.
Con este truco, puede establecer la preferencia de espacio de nombres antes de ejecutar los comandos kubectl. Ejecute el siguiente comando antes de ejecutar los comandos de kubectl, y guardará el espacio de nombres para todos los comandos de kubectl posteriores para su contexto actual:
kubectl config set-context $(kubectl config current-context) --namespace=mynamespace
A continuación se enumeran algunos de los comandos más comunes y útiles con espacio de nombre:
Los comandos de Kubernetes pueden ser bastante largos, por lo que es muy útil configurar algunos alias para ejecutar kubectl. Ya no tendrá que escribir el comando completo una y otra vez, lo que le facilitará mucho la vida cuando quiera ejecutar varios comandos de Kubernetes en una sola sesión.
A continuación, enumeramos los alias de algunos comandos de uso frecuente. Ejecútelos antes de ejecutar los comandos de kubectl para ahorrar tiempo. Ejemplo: solo tiene que escribir k en lugar de escribir kubectl:
Existen muchos editores diferentes disponibles para escribir archivos YAML, pero hay muchas ocasiones en las que puede que necesite ajustar rápidamente un YAML generado mientras trabaja en un terminal. Este es un buen lugar para utilizar nuestro fiel vi, el editor de texto creado originalmente para el sistema operativo Unix.
El editor vi está bien documentado y cuenta con el apoyo de una vibrante comunidad de código abierto. Sin embargo, uno de los problemas del editor vi al crear archivos YAML es la cuestión del espacio. Necesitamos una forma de sangrar con tabulaciones y alinear con espacios. El uso de tabulaciones frente a espacios en blanco siempre ha creado problemas de sintaxis al escribir archivos YAML (por ejemplo, obtener el YAML de 2 espacios como predeterminado al pulsar el retorno de carro).
¿La solución? Cree un archivo ~/.vimrc con estas líneas antes de crear archivos YAML con el editor vi para facilitar la edición:
Podemos crear archivos YAML complejos desde la línea de comandos utilizando comandos kubectl.
La mayoría de la gente estaría de acuerdo en que trabajar con archivos YAML no es divertido, y los archivos YAML de Kubernetes pueden ser muy extensos y difíciles de crear desde cero. Es mucho más fácil crear el archivo YAML a partir de comandos kubectl en lugar de hacerlo desde una página en blanco utilizando un editor.
Los siguientes comandos crearán un archivo YAML con nombre yamlfile . Una vez que haya creado el archivo YAML a partir de estos comandos de kubectl, puede modificarlo en función de sus requisitos y utilizarlo en lugar de escribir desde cero:
kubectl run busybox --image=busybox --dry-run=client -o yaml -- restart=Never > yamlfile.yaml
kubectl create job my-job --dry-run=client -o yaml --image=busybox -- date>yamlfile.yaml
kubectl get -o yaml deploy/nginx > 1.yaml(Asegúrese de que tiene una implementación llamada nginx)
kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never -- /bin/sh -c "while true; do echo hello; echo hello again;done" > yamlfile.yaml
kubectl run wordpress --image=wordpress –-expose –-port=8989 - -restart=Never -o yaml
kubectl run test --image=busybox --restart=Never --dry - run=client -o yaml -- bin/sh -c 'echo test;sleep 100' > yamlfile.yaml(Compruebe que --bin aparece al final. Esto creará un archivo yaml).
(Observe que --bin aparece al final. Esto creará un archivo yaml).
Otra buena idea para crear el archivo YAML es obtener el archivo directamente de Internet utilizando el comando wget .
En el Consejo 1, aprendimos algunos comandos útiles para usar los espacios de nombres de Kubernetes y guardarlos para que no tenga que añadir a cada comando. Ampliemos el truco para que sea más fácil cambiar entre espacios de nombres y contextos kubectl.
Hay varias herramientas que pueden ayudar, pero nos gustan kubectx y kubens para gestionar contextos y espacios de nombres, respectivamente. Puede encontrar detalles sobre kubectx y kubens aquí.
A continuación se explica cómo descargar los binarios de Linux para los servicios kubectx y kubens:
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubectx_v0.9.0_linux_x86_64.tar.gz
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubens_v0.9.0_linux_x86_64.tar.gz
Luego los extrae con los siguientes comandos:
tar -xvf kubectx_v0.9.0_linux_x86_64.tar.gz
tar -xvf kubens_v0.9.0_linux_x86_64.tar.gz
Finalmente, los pasa a su PATH:
Una vez instalado, puede simplemente usar kubens para enumerar los espacios de nombres y cambiar entre ellos:
Al trabajar con varios clústeres, kubectx facilita el cambio entre contextos:
¿Sabía que kubectl proporciona autocompletado para BASH y ZSH? Esta es una configuración opcional.
Supongamos que comprende los conceptos de Kubernetes y tiene cierta experiencia con kubectl, pero quizás no sea tan bueno memorizando comandos. Primero instale bash-completion y luego habilite el autocompletado de kubectl. Puede encontrar todos los detalles en la página de documentación “Instalar y configurar kubectl” para su entorno.
A continuación se muestran las opciones de configuración con la función de autocompletado:
¡Ahora, simplemente pulse la tecla tab!
El comando superior es probablemente una de las herramientas más populares para supervisar los procesos y los recursos del sistema. Proporciona una interfaz sencilla basada en caracteres y un acceso rápido a información crucial.
Puede ver la utilización de recursos por nodo:
Utilización de recursos por pod:
Y el práctico comando watch puede ayudarle a mostrar el comando en un intervalo deseable sin tener que ejecutarlo una y otra vez. El siguiente ejemplo hace que se ejecute cada cinco segundos (el valor predeterminado es dos segundos):
watch kubectl top node -n 5
Nota: Es necesario descargar el comando watch para su entorno.
Su clúster de Kubernetes también debe ejecutar heapster para que funcione el comando superior; de lo contrario, obtendrá el siguiente error: "Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)”
El comando kubectl proporciona una vista resumida de los recursos almacenados por el apiserver. Hay muchos más campos almacenados por el apiserver que no se muestran. Puede utilizar el comando kubectl get con el output de recursos sin procesar para crear sus propias visualizaciones y comandos.
Puede imprimir los recursos sin procesar en JSON con el siguiente comando:
kubectl get deployments -o json
También puede llamar directamente al recurso usando la llamada a la API:
kubectl get --raw=/apis/apps/v1/deployments
Incluso puede combinar el output con herramientas como jq para proporcionar diferentes visualizaciones, filtrar el output o alimentar el output a otras herramientas para una automatización avanzada.
Por ejemplo, puede ser difícil encontrar problemas en clústeres con múltiples espacios de nombres e implementaciones, pero el ejemplo siguiente utiliza la API en bruto para escanear todas las implementacions en el clúster y filtrar solo las implementaciones con réplicas defectuosas:
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[]
| {name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
La siguiente es una explicación rápida del comando anterior:
kubectl get --raw=/apis/apps/v1/deployments | jq .
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)}'
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
Esperamos que algunos de estos consejos y trucos le sean útiles al trabajar con Kubernetes. Si tiene algún consejo favorito o algún truco propio que quiera compartir, ¡cuéntenoslo!
No olvide consultar IBM Cloud Kubernetes Service y poner en práctica estos consejos y trucos.
¿Quiere tener una experiencia práctica y gratuita con Kubernetes? Benefíciese de IBM CloudLab, una nueva plataforma interactiva que ofrece tutoriales de Kubernetes con una certificación, sin coste ni configuración necesaria.
Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.
Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto e implementación rápida.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.