kubectl命令

kubectl用法概述

kubectl [command] [TYPE] [NAME] [flags]

其中,command、TYPE、NAME、flags的含义如下。

command:子命令,用于操作资源对象,例如create、get、describe、delete等。
TYPE:资源对象的类型,区分大小写,能以单数、复数或者简写形式表示
NAME:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表

kubectl子命令详解

kubectl的子命令非常丰富,涵盖了对Kubernetes集群的主要操作,包括资源对象的创建、删除、查看、修改、配置、运行等。

可以运行 kubectl --help命令查看支持的常见的command。全部命令可以到官网查看https://kubernetes.io/zh-cn/docs/reference/kubectl/

shirley@shirley-virtual-machine:~/Desktop$ kubectl --help
kubectl controls the Kubernetes cluster manager.

 Find more information at: https://kubernetes.io/docs/reference/kubectl/

Basic Commands (Beginner):
  create          Create a resource from a file or from stdin
  expose          Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
... ...
  
Usage:
  kubectl [flags] [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

基础子命令

Basic Commands (Beginner):
  create          Create a resource from a file or from stdin 
                  从文件或 stdin 创建一个或多个资源。      
                  kubectl create -f FILENAME [flags]
                                  
  expose          Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
                  将副本控制器、deployment或 Pod 作为新的 Kubernetes 服务暴露。
                  kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
                  
  run             Run a particular image on the cluster
                  在集群上运行指定的镜像.
                  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]                
  
  set             Set specific features on objects
                  配置应用资源。
                  kubectl set SUBCOMMAND [options]
                  
Basic Commands (Intermediate):
  explain         Get documentation for a resource
                  获取多种资源的文档。例如 Pod、Node、Service 等
                  kubectl explain [--recursive=false] [flags]
                  
  get             Display one or many resources
                  列出一个或多个资源。
                  kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
                  
  edit            Edit a resource on the server
                  使用默认编辑器编辑和更新服务器上一个或多个资源的定义。
                  kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
                  
  delete          Delete resources by file names, stdin, resources and names, or by resources and label selector
                  基于文件、标准输入或通过指定标签选择器、名称、资源选择器或资源本身,删除资源。
                  kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]

部署相关命令

Deploy Commands:
  rollout         Manage the rollout of a resource
                  管理资源的上线。有效的资源类型包括:Deployment、 DaemonSet 和 StatefulSet。
                  kubectl rollout SUBCOMMAND [options]
                  
  scale           Set a new size for a deployment, replica set, or replication controller
                  更新指定副本控制器的大小。
                  kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]
                  
  autoscale       Auto-scale a deployment, replica set, stateful set, or replication controller
                  自动扩缩由副本控制器管理的一组 pod。
                  kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

集群管理命令

Cluster Management Commands:
  certificate     Modify certificate resources.
                  修改证书资源。
                  kubectl certificate SUBCOMMAND [options]
                  
  cluster-info    Display cluster information
                  显示有关集群中主服务器和服务的端口信息。
                  kubectl cluster-info [flags]
                   
  top             Display resource (CPU/memory) usage
                  显示资源(CPU、内存、存储)的使用情况。
                  kubectl top [flags] [options]
                   
  cordon          Mark node as unschedulable
                  将节点标记为不可调度。(影响最小,只会将node调为SchedulingDisabled)
                  kubectl cordon NODE [options]
                  
  uncordon        Mark node as schedulable
                  将节点标记为可调度。
                  kubectl uncordon NODE [options]
                   
  drain           Drain node in preparation for maintenance
                  腾空节点以准备维护。(驱逐node上的pod,其他节点重新创建)
                  kubectl drain NODE [options]
                  
  taint           Update the taints on one or more nodes
                  更新一个或多个节点上的污点。(它使节点能够排斥一类特定的 Pod)
                  kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]

故障处理debug相关命令

Troubleshooting and Debugging Commands:
  describe        Show details of a specific resource or group of resources
                  显示一个或多个资源的详细状态。
                  kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
                  
  logs            Print the logs for a container in a pod
                  打印 Pod 中容器的日志。
                  kubectl logs POD [-c CONTAINER] [--follow] [flags]
                                       
  attach          Attach to a running container
                  挂接到正在运行的容器,查看输出流或与容器(stdin)交互。
                  kubectl attach POD -c CONTAINER [-i] [-t] [flags]
                  
  exec            Execute a command in a container
                  对 Pod 中的容器执行命令。
                  kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]
                  
  port-forward    Forward one or more local ports to a pod
                  将一个或多个本地端口转发到一个 Pod。
                  kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
                  
  proxy           Run a proxy to the Kubernetes API server
                  运行访问 Kubernetes API 服务器的代理。
                  kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]
                  
  cp              Copy files and directories to and from containers
                  从容器复制文件、目录或将文件、目录复制到容器。
                  kubectl cp <file-spec-src> <file-spec-dest> [options]
                  
  auth            Inspect authorization
                  检查授权。
                  kubectl auth [flags] [options]
                  
  debug           Create debugging sessions for troubleshooting workloads and nodes
  events          List events
                  列举事件
                  kubectl events

高级命令

Advanced Commands:
  diff            Diff the live version against a would-be applied version
                  在当前起作用的配置和文件或标准输之间作对比
                  kubectl diff -f FILENAME [flags]
                  
  apply           Apply a configuration to a resource by file name or stdin
                  从文件或 stdin 对资源应用配置更改。
                  kubectl apply -f FILENAME [flags]
                  
  patch           Update fields of a resource
                  使用策略合并流程更新资源的一个或多个字段。
                  kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
                   
  replace         Replace a resource by file name or stdin
                  基于文件或标准输入替换资源。
                  kubectl replace -f FILENAME
                                     
  wait            Experimental: Wait for a specific condition on one or many resources
                  实验特性:等待一种或多种资源的特定状况。
                  kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options]
                  
  kustomize       Build a kustomization target from a directory or URL
                  列出从 kustomization.yaml 文件中的指令生成的一组 API 资源。参数必须是包含文件的目录的路径,或者是 git 存储库 URL,其路径后缀相对于存储库根目录指定了相同的路径。
                  kubectl kustomize DIR [flags] [options]

设置命令

Settings Commands:
  label           Update the labels on a resource
                  添加或更新一个或多个资源的标签。
                  kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
                  
  annotate        Update the annotations on a resource
                  添加或更新一个或多个资源的注解。
                  kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
                  
  completion      Output shell completion code for the specified shell (bash, zsh, fish, or powershell)
                  为指定的 Shell(Bash 或 Zsh)输出 Shell 补齐代码。
                  kubectl completion SHELL [options]

其他命令

Other Commands:
  api-resources   Print the supported API resources on the server
                  列出可用的 API 资源。
                  kubectl api-resources [flags]
                  
  api-versions    Print the supported API versions on the server, in the form of "group/version"
                  列出可用的 API 版本。
                  kubectl api-versions [flags]
                  
  config          Modify kubeconfig files
                  修改 kubeconfig 文件。
                  kubectl config SUBCOMMAND [flags]
                  
  plugin          Provides utilities for interacting with plugins
                  提供用于与插件交互的实用程序。
                  kubectl plugin [flags] [options]
  
  version         Print the client and server version information
                  显示运行在客户端和服务器上的 Kubernetes 版本。
                  kubectl version [--client] [flags]

kubectl可操作对象

可以通过kubectl api-resources命令进行查看。常见的一些对象如下:

NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
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
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
statefulsets                      sts          apps/v1                                true         StatefulSet
cronjobs                          cj           batch/v1                               true         CronJob
jobs                                           batch/v1                               true         Job
events                            ev           events.k8s.io/v1                       true         Event
ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
ingresses                         ing          networking.k8s.io/v1                   true         Ingress
storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
... ...

在写对象yaml文件时,可以用这个命令查看kind,apiVersion

kubectl格式化输出

命令如下:

kubectl [command] [TYPE] [NAME] -o <output_format>
输出格式说明:

输出格式描述
-o custom-columns=使用逗号分隔的自定义列列表打印表。
-o custom-columns-file=使用文件中的自定义列模板打印表。
-o json输出 JSON 格式的 API 对象
-o jsonpath=<template> 打印jsonpath表达式定义的字段
-o jsonpath-file=<filename> 打印<filename>文件中jsonpath表达式定义的字段。
-o name仅打印资源名称而不打印任何其他内容。
-o wide以纯文本格式输出,包含所有附加信息。对于 Pod 包含节点名。
-o yaml输出 YAML 格式的 API 对象。

kubectl常用操作

create

在执行命令前,准备一个资源的yaml文件,创建deployment。yaml文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

创建资源  kubectl create -f FILENAME [flags]

shirley@shirley-virtual-machine:~/k8s$ kubectl create -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created

apply

以文件或标准输入为准应用或更新资源  kubectl apply -f FILENAME [flags]

shirley@shirley-virtual-machine:~/k8s$ kubectl apply -f nginx-deployment.yaml 
Warning: resource deployments/nginx-deployment is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
deployment.apps/nginx-deployment configured

get

列出一个或多个资源

kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]

kubectl get 命令通常用于检索同一资源类别的一个或多个资源。 它具有丰富的参数,允许你使用 -o 或 --output 参数自定义输出格式。 你可以指定 -w 或 --watch 参数以开始监测特定对象的更新。

查询default namespce下所有资源

shirley@shirley-virtual-machine:~/k8s$ kubectl -n default get all
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-57d84f57dc-2xsj6   1/1     Running   0          63m

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   2d4h

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   1/1     1            1           63m

NAME                                          DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-57d84f57dc   1         1         1       63m

查询 rc services

shirley@shirley-virtual-machine:~/k8s$ kubectl get rc,services
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   2d4h

describe

显示一个或多个资源的详细状态,默认情况下包括未初始化的资源

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]

kubectl describe 命令侧重于描述指定资源的许多相关方面。它可以调用对 API 服务器的多个 API 调用来为用户构建视图。 例如,该 kubectl describe node 命令不仅检索有关节点的信息,还检索在其上运行的 Pod 的摘要,为节点生成的事件等。

shirley@shirley-virtual-machine:~/k8s$ kubectl describe deployment.apps/nginx-deployment
Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Thu, 24 Aug 2023 14:10:31 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:latest
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-deployment-57d84f57dc (1/1 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  6m50s  deployment-controller  Scaled down replica set nginx-deployment-57d84f57dc to 1 from 2

logs

打印 Pod 中容器的日志

kubectl logs POD [-c CONTAINER] [--follow] [flags]

-f表示开始流式传输日志。这类似于 'tail -f' Linux 命令。

shirley@shirley-virtual-machine:~/k8s$ kubectl logs -f nginx-deployment-57d84f57dc-2xsj6
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh

参考资料:
https://zhuanlan.zhihu.com/p/652094931?utm_id=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值