kubectl
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:
- 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
- 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.
- 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]
- 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
- gramática:
versiones api de kubectl [banderas]
-
Descripción: lista de versiones de API disponibles
-
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
- 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
- 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.
- 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
- 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
- gramática:
SUBCOMANDO kubectl config [flags] Modificar archivo kubeconfig
crear, generalmente no se usa, use aplicar en lugar de esto
- gramática:
kubectl create -f FILENAME [flags] Crea uno o más recursos a partir de un archivo o entrada estándar.
Eliminar
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- gramática:
Proxy kubectl [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–apiprefix=prefix] [flags] Proxy para ejecutar el servidor API de Kubernetes.
reemplazar
- Sintaxis: kubectl replace -f FILENAM Reemplazar recurso de archivo o entrada estándar.
correr
- 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
- 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
- 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 ~