[Cloud native | Aprender Kubernetes desde cero] 25. Comprensión profunda de kubectl

inserte la descripción de la imagen aquí

1. Introducción a kubectl

kubectl es una herramienta de línea de comandos para operar el clúster k8s, instalada en el nodo maestro de k8s, usando kubectl buscará un archivo llamado config en el directorio $HOME/.kube, puede establecer la variable de entorno Kubeconfig o establecer una configuración específica. kubeconfig, kubectl también puede operar clústeres k8s usando archivos kubeconfig específicos.

Al interactuar con el servidor ap, kubectl puede agregar, eliminar, modificar y verificar varios recursos en el clúster k8s. A continuación, se presentará la sintaxis de kubectl, las operaciones de la línea de comandos y se presentarán ejemplos comunes. Los detalles de los comandos, los parámetros y los subcomandos se pueden ver en la documentación de referencia de kubectl.

1.sintaxis de kubectl

El formato de sintaxis de kubectl es el siguiente, que se puede ejecutar en el nodo maestro del clúster k8s: kubectl [comando] [TIPO] [NOMBRE] [flags]

2. Explicación de la sintaxis anterior

comando: especifica la operación que se realizará en uno o más recursos, como crear, obtener, describir, eliminar, etc.

type: especifica el tipo de recurso, que puede ser pod, deployment, statefulset, service, etc. Los tipos de recursos no distinguen entre mayúsculas y minúsculas y se pueden especificar en singular, plural o formas abreviadas. Por ejemplo, el siguiente comando genera el mismo resultado:

kubectl obtener pod pod1

kubectl obtener pods pod1

kubectl obtener po pod1

NOMBRE: especifica el nombre del recurso. Los nombres distinguen entre mayúsculas y minúsculas. Si se omite el nombre, se muestran los detalles de todos los recursos: kubectl get pods.

banderas: Especifica parámetros opcionales. Por ejemplo, puede usar -o para ver en qué máquina está un pod

Nota: Los argumentos especificados desde la línea de comandos anulan los valores predeterminados y las variables de entorno correspondientes.

3. Realice operaciones en múltiples recursos

Cada recurso se puede especificar por tipo, nombre, uno o más archivos:

  1. Especificar recursos por tipo y nombre

Para agrupar todos los recursos del mismo tipo:

TIPO1 nombre1 nombre2 nombre<#>。

Ejemplo: kubectl get pod ejemplo-pod1 ejemplo-pod2

Especifique varios tipos de recursos por separado:

TIPO1/nombre1 TIPO1/nombre2 TIPO2/nombre3 TIPO<#>/nombre<#>。

Ejemplo: kubectl get pod/example-pod1 pod/example-pod2 deployment/example-rc1

[root@k8smaster ~]# kubectl get pods/tomcat-deploy-6b65dd5799-88676 deployment/tomcat-deploy
NAME                                 READY   STATUS    RESTARTS   AGE
pod/tomcat-deploy-6b65dd5799-88676   1/1     Running   5          2d21h

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/tomcat-deploy   0/2     2            0           2d21h

4.kubectl –-ayuda

Puede ver los comandos de ayuda de kubectl

Segundo, demostración del comando de operación kubectl

Referencia: http://docs.kubernetes.org.cn/477.html

A continuación, se explican los comandos y la sintaxis relacionados con las operaciones de kubectl:

anotar

  1. Descripción: Agregue o actualice comentarios para uno o más recursos.

Las anotaciones se componen de clave/valor. El propósito de las anotaciones es almacenar datos auxiliares, especialmente los datos operados por herramientas y extensiones del sistema. Si –overwrite es verdadero, se pueden sobrescribir las anotaciones existentes. De lo contrario, intentar sobrescribir las anotaciones resultará en una Si se establece Si se especifica --resource-version, la actualización usará esta versión del recurso, de lo contrario, usará la versión del recurso original.

  1. gramática:

kubectl anotar (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags]

  1. Ejemplo:

Actualice el pod "kubectl-pod" y establezca el valor de la anotación "description" en "my kubectl-pod". Si la misma anotación se establece varias veces, solo se usará el último valor establecido.

kubectl anotar pods kubectl-pod description='mi kubectl-pod'

Actualice el pod "kubectl-pod", establezca el valor de la anotación "descripción" en "mi gato", sobrescribiendo el valor existente

kubectl annotate --overwrite pods kubectl-pod description='mi tomcat'

[root@k8smaster ~]# kubectl annotate pods tomcat-deploy-6b65dd5799-88676 description='my kubectl-pod'
pod/tomcat-deploy-6b65dd5799-88676 annotated
[root@k8smaster ~]# kubectl describe pods tomcat-deploy-6b65dd5799-88676
Name:         tomcat-deploy-6b65dd5799-88676
Namespace:    default
Priority:     0
Node:         k8snode1/192.168.11.136
Start Time:   Thu, 11 Aug 2022 02:17:38 -0700
Labels:       app=tomcat
              pod-template-hash=6b65dd5799
              release=canary
Annotations:  cni.projectcalico.org/podIP: 10.244.249.28/32
              cni.projectcalico.org/podIPs: 10.244.249.28/32
              description: my kubectl-pod

versiones api

  1. gramática:

versiones api de kubectl [banderas]

  1. Descripción: lista de versiones de API disponibles

  2. El significado de varias apiVersion:

alfa: versión beta interna, contiene muchos errores, puede haber errores en uso, si se abandona esta versión, los clientes no serán notificados
eta: versión beta pública, esta versión se puede usar normalmente después de muchas pruebas, algunos detalles pueden cambiar , Pero esta versión estable no se abandonará
: Versión estable: Esta versión es muy estable y se puede usar con confianza. Las versiones posteriores siempre incluirán esta versión estable, denominada como v1

  1. Los resultados mostrados por kubectl api-versions son los siguientes

admisiónregistration.k8s.io/v1 #Api relacionada con el control de admisión

v1 # Versión estable de la API de Kubernetes, contiene muchos objetos principales: pod, servicio, etc.

apps/v1 #Contiene algunas combinaciones comunes de API de capa de aplicación, como: implementaciones, Statefulset, Daemonset, etc.

[root@k8smaster ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1

aplicar

  1. gramática:

kubectl apply -f NOMBRE DE ARCHIVO [banderas]

Realice cambios en la configuración de la aplicación del recurso desde un archivo. Archivos de configuración de actualización declarativa.

auto escala

Ajusta automáticamente un conjunto de pods administrados por un controlador de réplica.

  1. gramática:

escala automática de kubectl (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) [–min=MINPODS] --max=MAXPODS [–cpu-percent=CPU] [flags]

información del clúster

  1. gramática:

kubectl cluster-info [flags] Muestra información de punto final sobre maestros y servicios en el clúster.

[root@k8smaster ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.11.129:6443
KubeDNS is running at https://192.168.11.129:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.11.129:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

configuración

  1. gramática:

SUBCOMANDO kubectl config [flags] Modificar archivo kubeconfig

crear, generalmente no se usa, use aplicar en lugar de esto

  1. gramática:

kubectl create -f FILENAME [flags] Crea uno o más recursos a partir de un archivo o entrada estándar.

Eliminar

  1. gramática:

kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] Elimina un recurso del archivo, entrada estándar o el selector de etiquetas, nombre, selector de recursos o recurso especificado.

[root@k8smaster ~]# kubectl delete deployment tomcat-deploy
deployment.apps "tomcat-deploy" deleted

describir

  1. gramática:

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] Muestra el estado detallado de uno o más recursos.

[root@k8smaster ~]# kubectl describe pods tomcat-deploy-6b65dd5799-88676
[root@k8smaster ~]# kubectl describe pod/tomcat-deploy-6b65dd5799-88676

editar

  1. gramática:

kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] Use el editor predeterminado para editar y actualizar la definición de uno o más recursos en el servidor, cambiando dinámicamente.

ejecutivo

  1. gramática:

kubectl exec POD-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args…]] Ejecuta un comando para los contenedores en el pod.

El siguiente comando es el comando para iniciar sesión en el contenedor en el pod, -c es el nombre del contenedor, si solo hay uno, no necesita escribirlo.

kubectl exec calico-node-cblk2 -n kube-system -i -t – /bin/sh

explique

  1. gramática:

kubectl Explain [–recursive=false] [flags] Obtenga documentación para varios recursos. Por ejemplo, pod, nodo, servicio, etc. son equivalentes a los comandos de ayuda, que nos pueden decir cómo
crear recursos.

exponer

  1. gramática:

exposición kubectl (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) [–puerto=puerto] [–protocolo=TCP|UDP] [–destino-puerto=número-o-nombre] [–nombre=nombre] [–externalip= external-ip-of-service] [–type=type] [flags] Exponga el controlador, servicio o pod de réplica como un nuevo servicio de Kubernetes.

obtener

  1. gramática:

kubectl get (-f FILENAME | TYPE [NOMBRE | /NOMBRE | -l etiqueta]) [–watch] [–sortby=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
Enumere uno o más recursos.

etiqueta

  1. gramática:

etiqueta kubectl (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags] Agregar o actualizar etiquetas para uno o más recursos.

[root@k8smaster ~]# kubectl label pods tomcat-deploy-6b65dd5799-88676 a=b
pod/tomcat-deploy-6b65dd5799-88676 labeled

registros

  1. gramática:

kubectl logs POD [-c CONTAINER] [–follow] [flags] Imprime el registro del contenedor, -c puede especificar el contenedor

[root@k8smaster ~]# kubectl logs tomcat-deploy-6b65dd5799-88676

parche

  1. gramática:

parche kubectl (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) --patch PATCH [flags] Actualizar uno o más campos del recurso

reenvío de puerto

1) Sintaxis:

kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] Reenvía uno o más puertos locales al Pod.

apoderado

  1. gramática:

Proxy kubectl [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–apiprefix=prefix] [flags] Proxy para ejecutar el servidor API de Kubernetes.

reemplazar

  1. Sintaxis: kubectl replace -f FILENAM Reemplazar recurso de archivo o entrada estándar.

correr

  1. gramática:

kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–dryrun=server | client | none] [–overrides=inline-json] [flags] Ejecute lo especificado en el espejo de racimo

kubectl ejecuta nginx --image=nginx

Puede crear una aplicación nginx, y la creación real de aplicaciones de pod se crea escribiendo un archivo de manifiesto de recursos

escala

  1. gramática:

escala kubectl (-f NOMBRE DE ARCHIVO | NOMBRE DEL TIPO | TIPO/NOMBRE) --replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags] Actualice el tamaño del controlador de réplica especificado (cambie el número de réplicas).

versión

  1. gramática:

kubectl version [–client] [flags] muestra la versión de Kubernetes que se ejecuta en el cliente y el servidor

Tipo de recurso

La siguiente tabla enumera todos los tipos de recursos admitidos y sus alias abreviados:

[root@k8smaster ~]# kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
validatingwebhookconfigurations                admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
customresourcedefinitions         crd,crds     apiextensions.k8s.io/v1                false        CustomResourceDefinition
apiservices                                    apiregistration.k8s.io/v1              false        APIService
controllerrevisions                            apps/v1                                true         ControllerRevision
daemonsets                        ds           apps/v1                                true         DaemonSet
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
statefulsets                      sts          apps/v1                                true         StatefulSet
tokenreviews                                   authentication.k8s.io/v1               false        TokenReview
localsubjectaccessreviews                      authorization.k8s.io/v1                true         LocalSubjectAccessReview
selfsubjectaccessreviews                       authorization.k8s.io/v1                false        SelfSubjectAccessReview
selfsubjectrulesreviews                        authorization.k8s.io/v1                false        SelfSubjectRulesReview
subjectaccessreviews                           authorization.k8s.io/v1                false        SubjectAccessReview
horizontalpodautoscalers          hpa          autoscaling/v1                         true         HorizontalPodAutoscaler
cronjobs                          cj           batch/v1beta1                          true         CronJob
jobs                                           batch/v1                               true         Job
certificatesigningrequests        csr          certificates.k8s.io/v1                 false        CertificateSigningRequest
leases                                         coordination.k8s.io/v1                 true         Lease
bgpconfigurations                              crd.projectcalico.org/v1               false        BGPConfiguration
bgppeers                                       crd.projectcalico.org/v1               false        BGPPeer
blockaffinities                                crd.projectcalico.org/v1               false        BlockAffinity
clusterinformations                            crd.projectcalico.org/v1               false        ClusterInformation
felixconfigurations                            crd.projectcalico.org/v1               false        FelixConfiguration
globalnetworkpolicies                          crd.projectcalico.org/v1               false        GlobalNetworkPolicy
globalnetworksets                              crd.projectcalico.org/v1               false        GlobalNetworkSet
hostendpoints                                  crd.projectcalico.org/v1               false        HostEndpoint
ipamblocks                                     crd.projectcalico.org/v1               false        IPAMBlock
ipamconfigs                                    crd.projectcalico.org/v1               false        IPAMConfig
ipamhandles                                    crd.projectcalico.org/v1               false        IPAMHandle
ippools                                        crd.projectcalico.org/v1               false        IPPool
kubecontrollersconfigurations                  crd.projectcalico.org/v1               false        KubeControllersConfiguration
networkpolicies                                crd.projectcalico.org/v1               true         NetworkPolicy
networksets                                    crd.projectcalico.org/v1               true         NetworkSet
endpointslices                                 discovery.k8s.io/v1beta1               true         EndpointSlice
events                            ev           events.k8s.io/v1                       true         Event
ingresses                         ing          extensions/v1beta1                     true         Ingress
flowschemas                                    flowcontrol.apiserver.k8s.io/v1beta1   false        FlowSchema
prioritylevelconfigurations                    flowcontrol.apiserver.k8s.io/v1beta1   false        PriorityLevelConfiguration
ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
ingresses                         ing          networking.k8s.io/v1                   true         Ingress
networkpolicies                   netpol       networking.k8s.io/v1                   true         NetworkPolicy
runtimeclasses                                 node.k8s.io/v1                         false        RuntimeClass
poddisruptionbudgets              pdb          policy/v1beta1                         true         PodDisruptionBudget
podsecuritypolicies               psp          policy/v1beta1                         false        PodSecurityPolicy
clusterrolebindings                            rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
clusterroles                                   rbac.authorization.k8s.io/v1           false        ClusterRole
rolebindings                                   rbac.authorization.k8s.io/v1           true         RoleBinding
roles                                          rbac.authorization.k8s.io/v1           true         Role
priorityclasses                   pc           scheduling.k8s.io/v1                   false        PriorityClass
csidrivers                                     storage.k8s.io/v1                      false        CSIDriver
csinodes                                       storage.k8s.io/v1                      false        CSINode
storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
volumeattachments                              storage.k8s.io/v1                      false        VolumeAttachment

escribir al final

No es fácil de crear, si crees que el contenido es útil para ti, ¡por favor dame un seguimiento de tres enlaces para apoyarme! Si hay algún error, indíquelo en los comentarios y lo cambiaré a tiempo.
La serie que se está actualizando actualmente: aprende k8s desde cero.
Gracias por mirar. El artículo se mezcla con la comprensión personal. Si hay algún error, comuníquese conmigo e indíquelo ~

Supongo que te gusta

Origin blog.csdn.net/qq_45400861/article/details/127147257
Recomendado
Clasificación