La mayoría de los consejos que se dan a continuación utilizan kubectl, una poderosa herramienta de línea de comandos que le permite ejecutar comandos contra clústeres de Kubernetes.
Boletín de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. 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 algunos antecedentes sobre Kubernetes antes de pasar a estos consejos, consulte los siguientes recursos:
Puede dividir un clúster de Kubernetes en varios entornos mediante el uso de 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 de kubectl es que cada vez que escribe un comando, necesita la opción --namespace
al final. Las personas a menudo olvidan esto y terminan creando objetos (pods, servicios, despliegues) en el espacio de nombres incorrecto.
Con este truco, puede establecer la preferencia del espacio de nombres antes de ejecutar los comandos de 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 nombres:
Los comandos de Kubernetes pueden ser bastante largos, por lo que es muy útil configurar algunos alias para ejecutar kubectl. Ya no tendrá que deletrear el comando completo una y otra vez, lo que le facilitará mucho la vida cuando desee 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 necesita escribir k en lugar de escribir kubectl:
Hay muchos editores diferentes disponibles para escribir archivos YAML, pero muchas veces es posible que deba modificar rápidamente un YAML generado mientras trabaja en una terminal. Este es un buen momento 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 con el editor vi al crear archivos YAML es el espacio. Necesitamos una forma de dejar sangría con tabulaciones y alinear con espacios. El uso de tabulaciones en lugar de espacios para los espacios en blanco siempre ha creado problemas de sintaxis al escribir archivos YAML (por ejemplo, obtener el YAML de 2 espacios como predeterminado al presionar el retorno de carro).
¿La solución? Crear 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 mediante comandos de kubectl.
La mayoría de las personas estaría de acuerdo en que trabajar con archivos YAML no es ameno, y los archivos YAML de Kubernetes pueden ser muy detallados y difíciles de crear desde cero. Es mucho más fácil crear el archivo YAML a partir de comandos de kubectl en lugar de hacerlo desde una página en blanco con un editor.
Los siguientes comandos crearán un archivo YAML con el nombre yamlfile . Una vez que cree el archivo YAML a partir de estos comandos de kubectl, puede modificarlo según sus requisitos y usarlo 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 tener un despliegue denominado 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(Tenga en cuenta que --bin aparece al final. Esto creará un archivo yaml.)
(Observe que --bin viene 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 almacenarlos para que no tenga que agregar a cada comando. Ampliemos la sugerencia para que sea más fácil cambiar entre espacios de nombres y contextos de kubectl.
Hay varias herramientas que pueden ayudar, pero nos gusta 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 la utilidad 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
Por último, muévalos a su RUTA:
Una vez instalado, puede usar kubens para enumerar los espacios de nombres y cambiar entre ellos:
Cuando se trabaja con varios clústeres, kubectx hace que cambiar entre contextos sea muy sencillo:
¿Sabía que kubectl proporciona autocompletado para BASH y ZSH? Esta es una configuración opcional.
Digamos que entiende los conceptos de Kubernetes y tiene algo de experiencia con kubectl, pero tal vez no sea tan bueno memorizando comandos. Primero instala bash-completion y luego habilita 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 monitorear procesos y recursos del sistema. Proporciona una interfaz sencilla basada en caracteres y 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):
ver kubectl top node -n 5
Nota: El comando watch debe descargarse 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 usar el comando kubectl get con la salida de recursos sin procesar para crear su propia visualización y comandos.
Puede imprimir los recursos sin procesar en JSON con el siguiente comando:
kubectl get deployments -o json
También puede llamar al recurso directamente mediante la llamada api:
kubectl get --raw=/apis/apps/v1/deployments
Incluso puede combinar la salida con herramientas como jq para proporcionar diferentes visualizaciones, filtrar la salida o alimentar la salida a otras herramientas para automatización avanzada.
Por ejemplo, puede ser difícil encontrar problemas en clústeres con múltiples espacios de nombres y despliegues, pero el siguiente ejemplo utiliza la API sin procesar para escanear todos los despliegues en el clúster y filtrar solo los despliegues 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 resulten útiles al trabajar con Kubernetes. Si tiene algún consejo favorito o uno propio que le gustaría compartir, avísenos.
No olvide consultar IBM Cloud Kubernetes Service y poner en práctica estos consejos y trucos.
¿Quiere tener una experiencia práctica y gratis con Kubernetes? Use IBM CloudLab, una nueva plataforma interactiva que ofrece tutoriales de Kubernetes con una certificación sin costo ni configuración.
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 y despliegue rápido.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.