Kubernetes es un motor de orquestación de contenedores que le permite implementar cargas de trabajo en contenedores de forma escalable. La utilidad de línea de comando oficial, kubectl
, proporciona control sobre sus clústeres y los recursos dentro.
Instalación de Kubectl
kubectl
es compatible con Linux, macOS y Windows. Se ofrecen diferentes formatos de distribución según la plataforma. Los binarios precompilados se producen para todos los sistemas operativos compatibles y están disponibles a través de enlaces de descarga directa.
También encontrarás kubectl
dentro de los administradores de paquetes Snap, Homebrew, Chocolatey y Scoop. Se puede instalar a través de apt
es yum
agregando el repositorio de Google Cloud a su sistema. Finalmente, kubectl
también viene con el SDK de Google Cloud; si ya lo tiene instalado, ejecute gcloud components install kubectl
para descargar la herramienta.
Deberías consultar el archivo guía de instalación oficial para ver las opciones disponibles para su sistema. Los pasos de instalación pueden cambiar con el tiempo, así que consulte la documentación antes de reinstalar kubectl
.
Configuración
La configuración se almacena en el archivo .kube
directorio en su carpeta de inicio. El archivo de configuración predeterminado es ~/.kube/config
.
Puede agregar otros archivos a esta carpeta. Ellos estarán fusionado juntos en la configuración final utilizada en tiempo de ejecución. Si desea utilizar un archivo de configuración específico o un conjunto de archivos diferente, debe establecer la extensión --kubeconfig
bandera o la KUBECONFIG
Variable ambiental.
kubectl --kubeconfig=/example/file get pods # OR KUBECONFIG=/example/file kubectl get pods
Todas las rutas escritas en los archivos de configuración se resuelven en relación con la ubicación del archivo. Las rutas pasadas a los indicadores de la línea de comando se resuelven en relación con el directorio de trabajo. Puede ver la configuración final que utilizará kubectl
corriendo kubectl config view
.
Línea de comando las banderas son compatibles para algunas configuraciones. Estos le permiten sobrescribir sus archivos de configuración. Las banderas disponibles incluyen --server
(URL del clúster), --username
(nombre de usuario para conectar como), --password
, --token
(API de token) e --namespace
(seleccione el espacio de nombres del clúster con el que interactuar).
Contextos
Dentro de los archivos de configuración es posible definir varios "contextos". Estos le permiten agrupar los "parámetros de inicio de sesión" de uso frecuente, como la URL del clúster y las cuentas de usuario, bajo una referencia con nombre.
Para configurar los ajustes por contexto, utilice kubectl config set-context my-context --cluster=my-app --namespace=production
. Este ejemplo crearía un nuevo contexto llamado my-context
que define la configuración predeterminada para el clúster y el espacio de nombres de Kubernetes para trabajar.
Los contextos se aplican utilizando el kubectl config use-context my-context
mando. Cualquier otra invocación de kubectl
usaría los parámetros de my-context
contexto, con el fin de estar conectado con el my-app
cluster en el production
espacio de nombres.
El uso efectivo de contextos simplifica enormemente las interacciones con kubectl
. Sin ellos, debe crear manualmente archivos de configuración únicos que se cambian con la extensión KUBECONFIG
bandera o variable de entorno.
Interactuar con su clúster
Más kubectl
Los comandos usan el mismo formato básico:
kubectl command type name
los command
esto es lo que normalmente quieres hacer create
, get
, describe
o delete
. los type
es el tipo de recurso con el que interactuarás, como pod
o deployment
. Puedes usar tanto el singular como el plural.
los name
El componente debe ser el nombre del recurso al que se refiere. Puede especificar varios nombres, separados por espacios, para obtener la salida de forma masiva. También puede utilizar el -f
marca para especificar la ruta a un archivo JSON o YAML que contiene una lista de nombres de recursos.
A continuación, se muestran algunos comandos de ejemplo, todos los cuales funcionan contra el contexto seleccionado actualmente:
kubectl get pods
- Obtén los detalles de todos tus podskubectl get pod my-pod
- Obtenga los detalles del pod llamadomy-pod
kubectl get pod my-pod another-pod
- Obtener detalles de las vainas con nombremy-pod
esanother-pod
kubectl get pod/my-pod deployment/my-deployment
- Recuperar los detalles del pod llamadomy-pod
y distribución de llamadasmy-deployment
- esta variación de sintaxis le permite recuperar múltiples tipos de recursos con un comandokubectl delete pod my-pod
- Eliminar el pod nombradomy-pod
kubectl logs my-pod
- Obtener salida de registro del archivomy-pod
debajokubectl apply -f ./manifest.yml
- Parchea su clúster desde el manifiesto de Kubernetes almacenado enmanifest.yml
Los comandos están disponibles para todos los tipos de recursos que ofrece su clúster de Kubernetes. Esto también se extiende a las definiciones de recursos personalizadas; se integran con la API de Kubernetes y obtienen sus propios puntos finales RESTful que kubectl
puede acceder.
Un traje kubectl
referencia de comando está disponible en la documentación de Kubernetes. También hay un archivo hoja de trucos comandos de uso común cuando se trabaja con tipos de recursos típicos.
Formatos de salida
La salida generalmente se envía como una lista o tabla formateada. Esto presenta la información en un estilo legible por humanos por el que puede desplazarse rápidamente.
Varias alternativas opciones de salida están disponibles. Puede cambiar a un formateador diferente utilizando el -o
(o --output
) bandera.
los json
El estilo de salida muestra la representación JSON del recurso de la API de Kubernetes al que está accediendo. Igualmente, yaml
le proporciona los datos del recurso como una representación YAML.
Cuando se usa un estilo legible por humanos, puede especificar las columnas de la tabla que se incluirán usando el custom-columns
estilo. Proporcione una lista separada por comas de pares de nombres de columnas y valores de referencia:
kubectl get pods -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace
Esto mostraría el nombre y el espacio de nombres de cada pod en las columnas etiquetadas NAME
es NAMESPACE
respectivamente. En lugar de escribir columnas en línea en su comando, puede definirlas en un archivo y pasarlas a --custom-columns-file
.
Hay soporte incorporado para ordenar la salida según el valor de un campo en particular. Usar --sort-by
, pasando la referencia del campo:
kubectl get pods --sort-by=.metadata.name
Soportes de clasificación Expresiones JSONPath. Estos también se pueden utilizar para crear consultas filtradas utilizando el jsonpath
formateador. JSONPath es un lenguaje de consulta para objetos JSON que le permite manipular más directamente las consultas de la API de Kubernetes en kubectl
.
Usar dentro de scripts
kubectl
está destinado tanto a la interacción humana directa como a la invocación programática a través de un script. Hay algunos mejores prácticas debes seguir durante el guion kubectl
para asegurar resultados predecibles.
Califique completamente las referencias a los tipos de recursos para que estén bloqueados en una versión en particular, p. Ej. pods.v1.core/my-job
en vez de pods my-job
. Esto minimiza el riesgo de que las actualizaciones de Kubernetes rompan el script.
La configuración de inicio de sesión debe pasarse directamente desde su script a kubectl
, asegurándose de no depender del entorno externo. Esto reduce aún más el riesgo de rotura debido a kubectl
Actualizaciones: características como los contextos pueden cambiar con el tiempo, mientras que es menos probable que lo hagan los argumentos principales de la línea de comandos.
Finalmente, asegúrese de deshabilitar la salida legible por humanos y use el formateador JSON o YAML en su lugar. Esto le da a su script datos orientados a la máquina para trabajar, por lo que no necesitará analizar las tablas usted mismo.
Conclusión
kubectl
es la solución ideal para administrar un clúster de Kubernetes. Es una herramienta integral con soporte completo para funciones de plataforma.
La amplitud de la funcionalidad crea una larga lista de comandos, pero la clara separación del tipo de acción, el tipo de recurso y el nombre del recurso ayuda a que el uso sea simple y fácil de recordar. Si tiene dudas, puede instalar shell autocompletar para ayudarlo a encontrar un comando apropiado.
Deja una respuesta