Una guía de KUBECTL como nunca antes

¿Qué tipo de ingeniero eres? ¿Alguien puede adivinarlo con sólo mirar la apariencia? Probablemente sea imposible de adivinar.

Traducido de La guía de kubectl que nunca tuve , autor Jake Page.

¿Y si alguien pudiera adivinarlo con sólo mirar el teclado? Probablemente ahora sea un poco más fácil.

Sabes que estás tratando con un ingeniero de Kubernetes cuando la tecla "k" de tu teclado se ha desgastado .

En la oficina de Glasskube , encontrará llaves "k" de repuesto en todas partes, en caso de que las necesite.

Por supuesto, estoy bromeando.

No estoy seguro de qué dice un teclado desgastado sobre su dueño. Pero sí sé lo importante que es kubectl para cualquiera que quiera convertirse en un administrador competente de Kubernetes .

kubectl es una herramienta CLI para comunicarse con la API de Kubernetes, que puede parecer simple al principio pero puede volverse compleja rápidamente.

Entonces, en esta publicación de blog, mi objetivo es escribir la guía que desearía tener cuando recién comenzaba . Concéntrese primero en la sintaxis de los comandos y en los comandos útiles, luego pase al vibrante ecosistema de complementos y herramientas diseñados para ampliar las capacidades de kubectl y Kubernetes .

También comparto algunos consejos y trucos, así como una útil hoja de referencia de kubectl.

Empecemos.

Descargo de responsabilidad

Este no es un artículo sobre Kubernetes. K8s es una tecnología extremadamente grande que cubre muchos conceptos, como varios tipos de objetos de Kubernetes y sus interacciones. Para esta discusión, asumo que está familiarizado con estos conceptos. En lugar de ello, me centraré específicamente en kubectl, su uso y las herramientas creadas a su alrededor.

antes del comienzo

Si apoya proyectos de código abierto que mejoran la gestión de paquetes de Kubernetes para todos, considere apoyar a Glasskube y darnos una estrella en GitHub.

Instalar

Para instalar kubectl, tiene algunas opciones diferentes según su sistema operativo. A continuación se explica cómo instalarlo en algunas plataformas comunes:

Linux (Ubuntu/Debian)

sudo apt-get update && sudo apt-get install -y kubectl

MacOS usando Homebrew

brew install kubectl

Windows usando chocolate

choco install kubernetes-cli

Después de la instalación, puede verificar que kubectl esté instalado correctamente ejecutando el siguiente comando:

kubectl version --client

comando kubectl:

kubectl es una herramienta de interfaz de línea de comandos (CLI) que se utiliza para comunicarse con la API de Kubernetes. Hay muchos comandos, demasiados para recordarlos.

Pero no te preocupes, no es tan aterrador como algunas personas te hacen imaginar.

Exploraremos formas de acceder rápidamente a referencias de comandos, comandos específicos de objetos k8s, alias útiles y finalización de comandos. Pero primero, ¿cómo se construye la cadena de comando?

gramática

El inglés y el chino son idiomas sujeto-verbo-objeto (SVO).

El hindi y el coreano son idiomas sujeto-objeto-verbo (SOV).

Si kubectl fuera un idioma, sería un idioma **kubectl + verbo + objeto/[nombre opcional] + bandera(kvof)**

También similar al lenguaje, la mejor manera de aprender y absorber la gramática es usarla en contexto, en lugar de memorizar largas listas de verbos y objetos.

Si se queda atascado y desea hacer referencia rápidamente a objetos de Kubernetes existentes desde cualquier versión de Kubernetes, ejecute kubectl api-resources.

Los comandos son recursos [objetos] creados seleccionando la acción [verbo] que se aplicará al Kubernetes deseado , generalmente seguida del nombre del recurso. Además, tiene una gran cantidad de filtros [banderas] que se pueden aplicar al. comando Estos filtros Se determinará el alcance y el resultado final.

Veamos un ejemplo de compilación de comando que utiliza el verbo get común para recuperar todos los recursos en el espacio de nombres del sistema glasskube, con la salida en formato yaml:

kubectl get all --namespace glasskube-system -o yaml

Si encuentra un recurso de Kubernetes del que nunca ha oído hablar antes, o necesita un repaso, use kubectl explicar [nombre-recurso] para obtener una descripción del terminal e instrucciones de uso.

trabajo imperativo

Cuando trabaja en un entorno de Kubernetes, tiene muchas tareas, desde implementar nuevas aplicaciones, solucionar problemas de recursos fallidos, verificar el uso y más. Más adelante, exploraremos cómo usar una forma de trabajo declarativa es mejor para definir e implementar cargas de trabajo, pero para todo lo demás, tenemos útiles comandos imperativos de Kubernetes listos.

El comando simple para comenzar es:

# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx

# Delete a pod named "nginx-deployment" in the default namespace
kubectl delete pod nginx-deployment

Para llevar los comandos imperativos al siguiente paso, sepa que puede usar el editor TUI para modificar recursos:

Al ejecutar kubectl edit -n [espacio de nombres] [nombre-recurso], se abrirá un editor de texto similar al siguiente. Edite y salga como vim run ESC + :q!.

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubectl.kubernetes.io/default-container: manager
  creationTimestamp: "2024-04-22T17:07:39Z"
  generateName: glasskube-controller-manager-556ff6fccf-
  labels:
    control-plane: controller-manager
    pod-template-hash: 556ff6fccf
  name: glasskube-controller-manager-556ff6fccf-4qlxz
  namespace: glasskube-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: glasskube-controller-manager-556ff6fccf
    uid: 430e90e9-32f3-45f6-92dc-4bae26ae1654
"/var/folders/2q/wjmbwg1n5vn8v7vlw17nsz0h0000gn/T/kubectl-edit-1306753911.yaml" 209L, 5898B

La mayoría de los comandos funcionan en todo tipo de objetos de Kubernetes. Antes de analizar más comandos específicos que son útiles para ciertos recursos de Kubernetes, vale la pena comprender algunas marcas útiles que se pueden aplicar a muchos objetos diferentes.

Banderas útiles:

-entorno:

El indicador --env le permite especificar variables de entorno para el contenedor que se está creando.

kubectl run nginx-deployment --image=nginx --env="ENV_VARIABLE=value"

- plantilla:

Este indicador le permite especificar una plantilla Go para el formato de salida del comando kubectl. Es muy conveniente cuando desea personalizar la estructura de salida, el filtrado o la presentación.

kubectl get pods --template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

- selector de campo:

Con esta bandera puede filtrar recursos según campos específicos. Por ejemplo, puede filtrar Pods según su estado o etiqueta.

kubectl get pods --field-selector=status.phase=Running

— tipo de selector de campo=[Normal/Advertencia]:

Este es un uso específico del indicador de selector de campo, donde puede filtrar eventos según el tipo (Normal o Advertencia).

kubectl events -n [resource-namespace] — for=[resource-kind]/[resource-name]Este comando obtiene eventos relacionados con un recurso específico en el espacio de nombres especificado. Monitorea continuamente nuevos eventos relacionados con un recurso determinado.

kubectl events -n my-namespace --for=deployment/my-deployment

Banderas de vigilancia de la vieja escuela versus la nueva escuela:

-o ancho dado -w:

-o ancho: este es un indicador de la "vieja escuela" que proporciona un formato de salida amplio y muestra detalles adicionales sobre el recurso.

-w: Este es un indicador **"nueva escuela"** que permite el monitoreo continuo de los cambios de recursos, similar al comando watch.

Usando vainas

Los pods son la abstracción más pequeña del ecosistema de Kubernetes. Son unidades lógicas que albergan contenedores. Los pods consumen recursos, pueden ejecutar y generar registros. Aquí hay algunos comandos que lo ayudarán a administrar Pods.

# Show resource usage of a pod
kubectl top pod -n [namespace] [pod-name]

# Run a command inside a new pod in the cluster
kubectl run -it ubuntu --image ubuntu --rm -- bash

# Show resource labels as columns
# e.g. kubectl get pods -n [namespace] -L vault-active -L vault-sealed
kubectl get pods -n [namespace] -L vault-active -L vault-sealed

# Execute a command inside a pod
kubectl exec -it [pod-name] -n [namespace] --

# Port forward to a pod
kubectl port-forward [pod-name] [local-port]:[remote-port] -n [namespace]

# Show container logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] /deployment/[deployment-name]  # Use -f flag for continuous streaming

# Run a command inside an existing container
kubectl exec -it -n [namespace] [pod-name] -- [command...]

Usar nodo

Los nodos son instancias básicas que proporcionan potencia informática y almacenamiento, y sobre ellos se ejecutan clústeres de Kubernetes.

# Show node resource utilization
kubectl top node [node-name]  # Node name is optional; without shows table of all nodes

# Get node information
kubectl get node

Uso de implementaciones, DaemonSets y StatefulSets

Las implementaciones, los conjuntos de demonios y los conjuntos con estado son abstracciones de nivel superior en Kubernetes que se utilizan para gestionar la implementación y el escalado de cargas de trabajo de aplicaciones.

# Restart a workload (e.g. deployment, stateful set, daemon set)
kubectl rollout restart -n [namespace] [workload-kind]/[workload-name]  # Triggers a re-creation of all pods for this workload, adhering to the workload configuration

# Check the status of a deployment rollout
kubectl rollout status deployment/[name]

# View rollout history of a deployment
kubectl rollout history deployment/[name]  # View rollout history of a deployment

# Scale a deployment to the specified number of replicas
kubectl scale deployment/ --replicas=[number]  # Scale a deployment to the specified number of replicas

# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager  

#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag

# Delete DaemonSet
kubectl delete daemonset [daemonset-name]

Usar trabajo

Un trabajo gestiona la ejecución de un pod para realizar una tarea específica y garantiza la finalización exitosa de la tarea antes de finalizar.

# Run a CronJob manually
kubectl create job [job-name] --image=image/name

# Creates a new job from the job template specified in the cronjob
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]

Usar secreto

Los secretos se utilizan para almacenar de forma segura información confidencial, como contraseñas, tokens OAuth y claves SSH en Kubernetes.

# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa

# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'

# Get a value from a secret using jsonpath
kubectl get secrets [secret-name] -o jsonpath="{.data.key1}" | base64 --decode

JSONPath es un lenguaje de consulta que se utiliza para extraer datos específicos de documentos JSON. En Kubernetes, las expresiones JSONPath se -o jsonpathutilizan a menudo con indicadores en los comandos de kubectl para extraer información específica de la salida de estos comandos.

Finalización del caparazón

Es posible que hayas notado que los comandos de kubectl pueden alargarse mucho muy rápidamente. Se puede agregar un ingenioso script de finalización de shell a su archivo bash o zshell para permitir la finalización de etiquetas fácilmente. No más abarrotar. Para lograr esto en todas las sesiones de shell, agregue lo siguiente a su archivo ~/.zshrc:

source <(kubectl completion zsh)

y reinicie el shell. Si usa bash, siga las instrucciones aquí:

# Install bash-completion package
sudo apt-get install -y bash-completion
# Store the output of the completion command in .bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Activate the completion rules
source ~/.bashrc

trabajando declarativamente

La gestión declarativa de los recursos de Kubernetes implica el uso de archivos de manifiesto YAML para especificar el estado deseado de los recursos y aplicar estos manifiestos al clúster.

Crear archivo YAML

Ya sea que usted o otra persona escriba los objetos de Kubernetes, todos los objetos se definen en archivos YAML. La API de Kubernetes utiliza definiciones de archivos YAML para comprender el estado del clúster:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: glasskube-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: glasskube
      env: prod
  template:
    metadata:
      labels:
        app: glasskube
        env: prod
    spec:
      containers:
      - name: glasskube-container
        image: your-glasskube-image:latest

Para crear esta implementación desde cero, use el comando kubectl create:

kubectl create -f glasskube-deployment.yaml

Archivo YAML de aplicación (aplicación cliente)

El uso de archivos YAML es la forma estándar de administrar los recursos de Kubernetes. Puede definir el estado deseado de sus recursos en formato YAML y aplicar estos archivos YAML al clúster.

kubectl apply -f manifest.yaml

Aplicación del lado del servidor (SSA)

La aplicación del lado del servidor es un método más nuevo para aplicar cambios de configuración a los recursos de Kubernetes. Con SSA, los cambios se aplican directamente en el lado del servidor, lo que significa que el servidor API de Kubernetes es responsable de garantizar que se alcance el estado deseado.

kubectl apply --server-side -f manifest.yaml

Complementos y herramientas

Cada vez que veo alguna discusión sobre Kubernetes, ¿qué es exactamente? Para que casos de uso es mas adecuado y como pensar mejor en ello, me viene a la mente el mismo tweet de Kelsey Hightower .

Esta visión es ampliamente reconocida, como lo demuestra el gran ecosistema de complementos y herramientas de Kubernetes diseñados para ayudar a manejar varias etapas del ciclo de vida de Kubernetes.

Administrador de complementos de Krew Kubernetes

Un potente administrador de complementos para encontrar nuevos complementos es krew , cómo instalarlo es el siguiente. El comando para instalar el complemento kubectl a través de Krew:

kubectl krew install <PLUGIN_NAME>

Exploremos algunas de las principales categorías de depuración y herramientas, destacando algunos de los elementos más útiles. Como hay tanto que destacar, agregaré una sección de honores para cada sección.

Cambio de contenido y espacio de nombres

En un entorno de Kubernetes, siempre opera dentro de dos contextos jerárquicos, clústeres y espacios de nombres. Garantizar una ejecución precisa del comando requiere especificar el contexto apropiado para obtener el resultado deseado. Cambiar contextos de clúster o espacios de nombres puede implicar comandos largos que son difíciles de recordar, que es donde entran en juego herramientas como Kubectl y Kubens.

Kubectx y Kubens

Vea fácilmente los clústeres y espacios de nombres disponibles y cambie entre ellos aquí.

Vea las instrucciones de instalación aquí .

Recomendable:

kubectl-cf : una forma más rápida de cambiar entre archivos kubeconfig (en lugar de contextos).

visibilidad

Los clústeres de Kubernetes son sistemas complejos con muchas partes móviles que dependen unas de otras para ejecutar su aplicación. Es fundamental tener siempre una comprensión clara de lo que está sucediendo.

k9s

K9s es un panel de Kubernetes interactivo, liviano y conveniente que se ejecuta en la terminal. Además de visualizar sus recursos k8s, puede sumergirse fácilmente en pods, editar manifiestos y administrar sus cargas de trabajo en un solo lugar. Esta es probablemente una de mis herramientas de administración de Kubernetes favoritas.

Las instrucciones de instalación están aquí .

árbol kubectl

Un complemento de kubectl para explorar las relaciones de propiedad entre objetos de Kubernetes a través de referencias de propietarios en los objetos.

Instalar :

kubectl krew install tree
kubectl tree --help

kubecolor

KubeColor se utiliza para agregar color a la salida de kubectl.

Las instrucciones de instalación están aquí .

Gestión de paquetes

La gestión de paquetes de clúster mediante herramientas de gestión de paquetes habituales puede resultar frustrante y la actualización de paquetes puede resultar tediosa. La configuración es torpe y, hasta ahora, la pila de paquetes necesaria para aplicarla de forma declarativa ha estado fuera de control.

Cubo de cristal:

Con Glasskube, se eliminan todos los puntos débiles que se encuentran en los administradores de paquetes tradicionales, como helm, lo que garantiza que tenga tiempo para administrar sus cargas de trabajo y no preocuparse por administrar su pila de paquetes k8s.

red

Kubectl-Pestañas:

kubectl-Cilium es un complemento que interactúa con Cilium, una solución nativa de la nube basada en eBPF para aprovisionar, proteger y observar conexiones de red entre cargas de trabajo.

Instalar:

kubectl krew install cilium

administrador de certificados

Cert-manager agrega certificados y emisores de certificados como tipos de recursos en los clústeres de Kubernetes, simplificando la obtención, actualización y uso de estos certificados.

Las instrucciones de instalación se pueden encontrar aquí.

Mención especial :

Ksniff : este es un complemento de kubectl que aprovecha tcpdump y Wireshark para iniciar la captura remota en cualquier Pod en un clúster de Kubernetes.

RBAC

La cubeología

Kubelogin es un complemento certificado de Kubernetes OpenID Connect (OIDC), también conocido como kubectl oidc-login.

Las instrucciones de instalación están aquí .

Asesor-de-políticas-de-kube

Kube-policy-advisor facilita la creación de políticas de seguridad de pod (PSP) o políticas de OPA de K8 desde un entorno K8 activo o un único archivo .yaml que contiene especificaciones de pod (implementaciones, conjuntos de demonios, pods, etc.).

Instalar:

kubectl krew install advise-policy

Recomendable:

  • kubectl-who-can : Muestra que SUJETOS tiene permisos RBAC en VERBO [TIPO | NOMBRE/NOMBRE] en Kubernetes.
  • rakkess : evaluar el acceso - complemento kubectl para mostrar la matriz de acceso de los recursos del servidor
  • kubectl-rolesum : resume los roles de RBAC para un tema específico (Cuenta de servicio, usuario y grupo).

pelusa

Kubectl-ordenado:

Kubectl-neat : Kubectl-neat elimina el desorden de los manifiestos de Kubernetes y los hace más legibles. Principalmente busca e ignora dos categorías de contenido: valores predeterminados insertados por el modelo de objetos de Kubernetes y controladores de mutación comunes.

Instalar:

kubectl krew install neat

KubeLinter:

KubeLinter analiza archivos YAML de Kubernetes y gráficos Helm y los compara con varias mejores prácticas, centrándose en la preparación y la seguridad de la producción.

Instrucciones de instalación: https://github.com/stackrox/kube-linter?tab=readme-ov-file#installing-kubelinter.

Mantenimiento y seguridad del cluster

KubePug

KubePug descarga el archivo de datos generado data.json que contiene información sobre la obsolescencia de la API para una versión específica de Kubernetes, escanea el clúster de Kubernetes en ejecución para determinar si algún objeto se ve afectado por la obsolescencia y muestra los objetos afectados al usuario.

Ejemplo:

Puede utilizar el siguiente comando para ver el estado de un clúster en ejecución.

$ kubepug --k8s-version=v1.22 # Will verify the current context against v1.22 version
[...]
RESULTS:
Deprecated APIs:
PodSecurityPolicy found in policy/v1beta1
     ├─ Deprecated at: 1.21
     ├─ PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.Deprecated in 1.21.
        -> OBJECT: restrictive namespace: default


Deleted APIs:
     APIs REMOVED FROM THE CURRENT VERSION AND SHOULD BE MIGRATED IMMEDIATELY!!
Ingress found in extensions/v1beta1
     ├─ Deleted at: 1.22
     ├─ Replacement: networking.k8s.io/v1/Ingress
     ├─ Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give servicesexternally-reachable urls, load balance traffic, terminate SSL, offer namebased virtual hosting etc.DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.
        -> OBJECT: bla namespace: blabla

Instalar:

kubectl krew install deprecations

Paisaje cúbico:

Kubescape es una plataforma de seguridad de Kubernetes de código abierto para sus clústeres, canalizaciones de CI/CD e IDE que separa las señales de seguridad del ruido del escáner.

Instrucciones de instalación aquí .

Vale la pena hablar de:

kubectl-watch : otra herramienta de observación para ver visualmente cambios incrementales en los recursos de Kubernetes.

solución de problemas

Inspector Gadget:

Inspektor-gadget es una colección de herramientas (o dispositivos) para depurar e inspeccionar recursos y aplicaciones de Kubernetes.

Las herramientas de Inspektor Gadget se denominan gadgets. Puede implementar uno, dos o varios dispositivos.

K8s-gpt:

k8sgpt es una herramienta para escanear su clúster de Kubernetes, diagnosticar y clasificar problemas en un lenguaje sencillo.

Instrucciones de instalación aquí .

Vale la pena hablar de:

kubectl node-shell : inicia un shell raíz directamente en el sistema operativo host de un nodo en ejecución.

Inicio sesión

Popa:

Stern le permite realizar un seguimiento de varios Pods en Kubernetes y de varios contenedores dentro de un Pod. Cada resultado está codificado por colores para una depuración más rápida.

Instalar:

kubectl krew install stern

Algunas implicaciones de seguridad del uso de complementos de kubectl incluyen posibles vulnerabilidades, escalada de privilegios y divulgación de datos involuntaria. Asegúrese de utilizar únicamente complementos que se mantengan activamente y, preferiblemente, que tengan una comunidad activa a su alrededor.

Alias

Hay tantos comandos de kubectl para recordar, simplifique su vida usando atajos de teclado o alias.

Aquí encontrará un repositorio que contiene un script para generar cientos de alias de shell convenientes para kubectl. El problema es que muchos alias son muy largos y pueden resultar difíciles de recordar. Pero no te preocupes, encontré esta publicación de blog muy útil de Benoit Couetil sobre cómo lidiar con los numerosos alias generados por el script anterior.

Hoja de trucos de Kubectl

Ninguna guía está completa sin una hoja de referencia, ¿verdad?

# Basic Commands
# List API Resources
kubectl api-resources

# List Resources
kubectl get [name]

# Explain Resources
kubectl explain

# Working with Pods
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx

# Show Resource Usage of a Pod
kubectl top pod -n [namespace] [pod-name]

# Run Command in Pod
kubectl run -it [pod-name] --image [image-name] --rm -- [command]

# Show Resource Labels
kubectl get pods -n [namespace] -L [label1] -L [label2]

# Execute Command in Pod
kubectl exec -it [pod-name] -- [command]

# Port Forwarding
kubectl port-forward [pod-name] [local-port]:[remote-port]

# Filtering Pods by Node Name
kubectl get pods --field-selector spec.nodeName=[node-name]

# Filtering Pods by Phase
kubectl get pods --field-selector status.phase=Running

# Delete a pod named "my-pod" in the default namespace
kubectl delete pod my-pod

# Working with Nodes
# Watch Nodes (Old School)
watch kubectl get nodes -o wide
# Watch Nodes (New School)
kubectl get nodes -w

# Node Resource Utilization
kubectl top node [node-name]

# Get Node Resource
kubectl describe node [node-name]

# Working with Deployments, Daemonsets, and StatefulSets
# Restart Workload
kubectl rollout restart -n [namespace] [kind]/[name]

# Rollout Status
kubectl rollout status [kind]/[name]

# Rollout History
kubectl rollout history [kind]/[name]

# Scale Deployment
kubectl scale deployment/[name] --replicas=[replica-count]

#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag

# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager  

# Delete DaemonSet
kubectl delete daemonset [daemonset-name]

# Working with Jobs
# Run CronJob Manually
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]

# Working with Secrets
# Get Value from Secret
kubectl get secret -n [namespace] [secret-name] -o=jsonpath='{.data.[key]}' | base64 --decode

# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa

# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'

# Working with Containers
# Show Container Logs
kubectl logs -n [namespace] [pod-name] 
kubectl logs -n [namespace] deployment/[deployment-name]

# Run Command in Container
kubectl exec -it -n [namespace] [pod-name] -- [command]

# Working Imperatively
# Modify Resource
kubectl edit -n [namespace] [resource-kind]/[resource-name]

# Delete Resource
kubectl delete [resource-kind]/[resource-name]

# Create Resource
kubectl create -f [resource-file]

# Working Declaratively
# Use Server-Side Apply (SSA)
kubectl apply --server-side -f [resource-file]

# Events and Logs
# Show Events for Resource
kubectl get events -n [namespace] --field-selector involvedObject.kind=[kind] --field-selector involvedObject.name=[name]

# Filtering Events by Type
kubectl get events --field-selector type=Warning

# Filtering Events by Involved Object Name
kubectl get events --field-selector involvedObject.name=[resource-name]

# Show Resource Usage
kubectl top

Otros recursos

Si le gusta este tipo de contenido y desea ver más, considere apoyarnos dándonos una estrella en GitHub .

Este artículo se publicó por primera vez en Yunyunzhongsheng ( https://yylives.cc/ ), todos son bienvenidos a visitarlo.

Un programador nacido en los años 90 desarrolló un software de portabilidad de vídeo y ganó más de 7 millones en menos de un año. ¡El final fue muy duro! Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como una ceremonia de mayoría de edad: comentarios agudos de los internautas: debido al fraude desenfrenado, confiando en RustDesk, el servicio doméstico Taobao (taobao.com) suspendió los servicios domésticos y reinició el trabajo de optimización de la versión web Java 17 es la versión Java LTS más utilizada. Cuota de mercado de Windows 10. Alcanzando el 70%, Windows 11 continúa disminuyendo. Open Source Daily | Google apoya a Hongmeng para hacerse cargo de los teléfonos Android de código abierto respaldados por Docker; Electric cierra la plataforma abierta Apple lanza el chip M4 Google elimina el kernel universal de Android (ACK) Soporte para la arquitectura RISC-V Yunfeng renunció a Alibaba y planea producir juegos independientes para plataformas Windows en el futuro
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/6919515/blog/11093686
Recomendado
Clasificación