kubernetes常用命令

详细命令请参考:K8S命令表

概览

命令描述
create创建资源
delete删除资源
get获取资源信息
expose创建Service并暴露端口
set配置或修改应用资源
explain显示资源文档信息
edit编辑资源信息
label更新资源标签
annotate更新资源注解信息
completion设置命令自动补全
rollout管理资源的版本与滚动更新
scale扩容或缩容Pod数量
autoscale自动弹性伸缩Pod数量
certificate管理证书资源与授权
cluster-info显示集群信息
top查看资源CPU、内存使用率
cordon标记节点不可调度
uncordon标记节点可调度
drain维护期间排除节点(驱逐Pod+标记不可调度)
taint给节点设置污点
describe显示资源详细信息
logs打印容器日志
exec进入容器执行命令
attach连接到正在运行的容器
cp在Pod与本地之间拷贝文件
api-versions打印支持的API版本
help查看命令帮助
config修改kubeconfig配置文件
version打印客户端和服务端版本
apply应用资源配置(不存在则创建)
patch补丁方式修改资源部分字段
replace替换原有资源
convert在不同API版本间转换配置文件

基础命令

create

create命令用于根据文件或者输入来创建资源

创建Deployment和Service资源

[root@master ~]# kubectl create -f demo-deployment.yaml [root@master ~]# kubectl create -f demo-service.yaml

create和apply的差异:create用于全新创建,第二次执行会报错资源已经存在,apply支持新建和更新,第二次执行,若配置文件修改,则会增量更新差异

不要先用 create 创建资源,再用 apply 更新(可能导致注解缺失,apply 无法正确对比差异);建议统一用 apply 管理资源。

delete

delete命令用于删除资源

根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效

[root@master ~]# kubectl delete -f demo-deployment.yaml [root@master ~]# kubectl delete -f demo-service.yaml

也可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源

[root@master ~]# kubectl delete <资源类型> <资源名称> -n <命名空间> # 强制删除,不等待优雅终止时间 [root@master ~]# kubectl delete <资源类型> <资源名称> -n <命名空间> --force --grace-period=0
# 删除单个pod,若有控制器则会重建 [root@kubernetes-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-85b98978db-lhmzl 1/1 Running 2 (19h ago) 10d [root@kubernetes-master ~]# kubectl delete pod nginx-85b98978db-lhmzl pod "nginx-85b98978db-lhmzl" deleted [root@kubernetes-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-85b98978db-spnb2 0/1 ContainerCreating 0 2s # 若pod由deployment管理,需要删除控制器 [root@kubernetes-master ~]# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE nginx 0/1 1 0 10d [root@kubernetes-master ~]# kubectl delete deployment nginx deployment.apps "nginx" deleted [root@kubernetes-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-85b98978db-spnb2 0/1 Terminating 0 103s # 优雅退出机制 [root@kubernetes-master ~]# kubectl delete svc nginx service "nginx" deleted

get

get命令用于获取资源信息

查看所有命名空间的pod

kubectl get pod --all-namespaceskubectl get pods -A一样效果,都是查看所有命名空间的pod,可以加上-owide,查看运行在哪个主机上。

[root@kubernetes-master ~]# kubectl get all NAME READY STATUS RESTARTS AGE pod/nginx-85b98978db-lhmzl 1/1 Running 2 (17m ago) 10d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d service/nginx NodePort 10.101.21.137 <none> 80:32639/TCP 10d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx 1/1 1 1 10d NAME DESIRED CURRENT READY AGE replicaset.apps/nginx-85b98978db 1 1 1 10d [root@kubernetes-master ~]# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-85b98978db-lhmzl 1/1 Running 2 (17m ago) 10d kube-flannel kube-flannel-ds-qqg7p 1/1 Running 2 (18m ago) 10d kube-flannel kube-flannel-ds-vt655 1/1 Running 2 (18m ago) 10d kube-flannel kube-flannel-ds-zj5xl 1/1 Running 2 (17m ago) 10d kube-system coredns-6d8c4cb4d-2jffp 1/1 Running 2 (18m ago) 10d kube-system coredns-6d8c4cb4d-lwcpw 1/1 Running 2 (18m ago) 10d kube-system etcd-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-apiserver-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-controller-manager-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-proxy-2dd5k 1/1 Running 2 (18m ago) 10d kube-system kube-proxy-8tcp2 1/1 Running 3 (18m ago) 10d kube-system kube-proxy-dljq6 1/1 Running 2 (17m ago) 10d kube-system kube-scheduler-kubernetes-master 1/1 Running 3 (18m ago) 10d [root@kubernetes-master ~]# kubectl get pod --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-85b98978db-lhmzl 1/1 Running 2 (18m ago) 10d kube-flannel kube-flannel-ds-qqg7p 1/1 Running 2 (18m ago) 10d kube-flannel kube-flannel-ds-vt655 1/1 Running 2 (18m ago) 10d kube-flannel kube-flannel-ds-zj5xl 1/1 Running 2 (18m ago) 10d kube-system coredns-6d8c4cb4d-2jffp 1/1 Running 2 (18m ago) 10d kube-system coredns-6d8c4cb4d-lwcpw 1/1 Running 2 (18m ago) 10d kube-system etcd-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-apiserver-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-controller-manager-kubernetes-master 1/1 Running 3 (18m ago) 10d kube-system kube-proxy-2dd5k 1/1 Running 2 (18m ago) 10d kube-system kube-proxy-8tcp2 1/1 Running 3 (18m ago) 10d kube-system kube-proxy-dljq6 1/1 Running 2 (18m ago) 10d kube-system kube-scheduler-kubernetes-master 1/1 Running 3 (18m ago) 10d

查看命名空间的所有资源

kubectl get all -n <namespace>查看某一个命名空间下的所有资源。

[root@kubernetes-master ~]# kubectl get all -n kube-system NAME READY STATUS RESTARTS AGE pod/coredns-6d8c4cb4d-m8lv8 1/1 Running 5 (3h57m ago) 9d pod/coredns-6d8c4cb4d-p8qqm 1/1 Running 5 (3h57m ago) 9d pod/etcd-kubernetes-master 1/1 Running 5 (3h57m ago) 9d pod/kube-apiserver-kubernetes-master 1/1 Running 5 (3h57m ago) 9d pod/kube-controller-manager-kubernetes-master 1/1 Running 5 (3h57m ago) 9d pod/kube-proxy-74bt9 1/1 Running 5 (3h57m ago) 9d pod/kube-proxy-cdkjc 1/1 Running 5 (3h57m ago) 9d pod/kube-proxy-ph76x 1/1 Running 6 (3h57m ago) 9d pod/kube-scheduler-kubernetes-master 1/1 Running 5 (3h57m ago) 9d pod/metrics-server-7c4866c4fd-h25jh 1/1 Running 5 (3h57m ago) 8d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 9d service/metrics-server ClusterIP 10.111.183.10 <none> 443/TCP 8d NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/kube-proxy 3 3 3 3 3 kubernetes.io/os=linux 9d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/coredns 2/2 2 2 9d deployment.apps/metrics-server 1/1 1 1 8d NAME DESIRED CURRENT READY AGE replicaset.apps/coredns-6d8c4cb4d 2 2 2 9d replicaset.apps/metrics-server-5568dcfc59 0 0 0 8d replicaset.apps/metrics-server-7c4866c4fd 1 1 1 8d

查看pod列表

  • 查看指定命名空间的pod kubectl get pod -n kube-system,在-n后指定命名空间,若不指定,则kubectl get pod默认查看的命名空间是default
[root@kubernetes-master ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-6d8c4cb4d-2jffp 1/1 Running 2 (21m ago) 10d coredns-6d8c4cb4d-lwcpw 1/1 Running 2 (21m ago) 10d etcd-kubernetes-master 1/1 Running 3 (21m ago) 10d kube-apiserver-kubernetes-master 1/1 Running 3 (21m ago) 10d kube-controller-manager-kubernetes-master 1/1 Running 3 (21m ago) 10d kube-proxy-2dd5k 1/1 Running 2 (21m ago) 10d kube-proxy-8tcp2 1/1 Running 3 (21m ago) 10d kube-proxy-dljq6 1/1 Running 2 (21m ago) 10d kube-scheduler-kubernetes-master 1/1 Running 3 (21m ago) 10d

实时监控 Pod 状态

-w--watch 的缩写,作用是实时监控 Kubernetes 资源(这里是 Pod)的状态变化,并持续输出变化日志。

[root@kubernetes-master ~]# kubectl get pod -w NAME READY STATUS RESTARTS AGE nginx-85b98978db-8z46s 0/1 ContainerCreating 0 10s nginx-85b98978db-c64jw 0/1 ContainerCreating 0 10s nginx-85b98978db-c64jw 1/1 Running 0 13s nginx-85b98978db-8z46s 1/1 Running 0 13s

查看pod所在的命名空间

kubectl get pod --all-namespaces -o wide或者kubectl get pod -A -o wide

[root@kubernetes-master ~]# kubectl get pod --all-namespaces -o wide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default nginx-85b98978db-lhmzl 1/1 Running 2 (26m ago) 10d 10.244.2.5 kubernetes-node2 <none> <none> kube-flannel kube-flannel-ds-qqg7p 1/1 Running 2 (26m ago) 10d 192.168.0.201 kubernetes-node1 <none> <none> kube-flannel kube-flannel-ds-vt655 1/1 Running 2 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none> kube-flannel kube-flannel-ds-zj5xl 1/1 Running 2 (26m ago) 10d 192.168.0.202 kubernetes-node2 <none> <none> kube-system coredns-6d8c4cb4d-2jffp 1/1 Running 2 (26m ago) 10d 10.244.0.7 kubernetes-master <none> <none> kube-system coredns-6d8c4cb4d-lwcpw 1/1 Running 2 (26m ago) 10d 10.244.0.6 kubernetes-master <none> <none> kube-system etcd-kubernetes-master 1/1 Running 3 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none> kube-system kube-apiserver-kubernetes-master 1/1 Running 3 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none> kube-system kube-controller-manager-kubernetes-master 1/1 Running 3 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none> kube-system kube-proxy-2dd5k 1/1 Running 2 (26m ago) 10d 192.168.0.201 kubernetes-node1 <none> <none> kube-system kube-proxy-8tcp2 1/1 Running 3 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none> kube-system kube-proxy-dljq6 1/1 Running 2 (26m ago) 10d 192.168.0.202 kubernetes-node2 <none> <none> kube-system kube-scheduler-kubernetes-master 1/1 Running 3 (26m ago) 10d 192.168.0.200 kubernetes-master <none> <none>

查看pod节点标签信息

  • 显示pod节点的标签信息 kubectl get pod --show-labels
[root@kubernetes-master ~]# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-85b98978db-lhmzl 1/1 Running 2 (32m ago) 10d app=nginx,pod-template-hash=85b98978db
  • 根据指定标签匹配到具体的pod kubectl get pods -l app=example
[root@kubernetes-master ~]# kubectl get pod -A -l component=etcd NAMESPACE NAME READY STATUS RESTARTS AGE kube-system etcd-kubernetes-master 1/1 Running 3 (35m ago) 10d

查看pod详细信息

kubectl get pod -o wide可以查看pod具体运行在哪个节点上(ip地址信息)

[root@kubernetes-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-85b98978db-lhmzl 1/1 Running 2 (40m ago) 10d 10.244.2.5 kubernetes-node2 <none> <none>

查看node列表

kubectl get node或者kubectl get nodes

[root@kubernetes-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes-master Ready control-plane,master 10d v1.23.6 kubernetes-node1 Ready <none> 10d v1.23.6 kubernetes-node2 Ready <none> 10d v1.23.6

查看node节点的标签信息

kubectl get nodes --show-labels

[root@kubernetes-master ~]# kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS kubernetes-master Ready control-plane,master 10d v1.23.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubernetes-master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers= kubernetes-node1 Ready <none> 10d v1.23.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubernetes-node1,kubernetes.io/os=linux kubernetes-node2 Ready <none> 10d v1.23.6 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubernetes-node2,kubernetes.io/os=linux

查看服务详情信息

kubectl get svc显示了服务名称,类型,集群ip,端口,时间等信息

[root@kubernetes-master ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d nginx NodePort 10.101.21.137 <none> 80:32639/TCP 10d [root@kubernetes-master ~]# kubectl get svc -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 10d

查看所有命名空间

kubectl get nskubectl get namespaces都可以查看所有的命名空间

[root@kubernetes-master ~]# kubectl get ns NAME STATUS AGE default Active 10d kube-flannel Active 10d kube-node-lease Active 10d kube-public Active 10d kube-system Active 10d

查看目前所有的replica set

kubectl get rs显示了所有的pod的副本数,pod的可用数量和状态等信息

[root@kubernetes-master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-85b98978db 1 1 1 10d

查看已部署的所有应用

kubectl get deploykubectl get deployments可以看到容器,以及容器所用的镜像,标签等信息

[root@kubernetes-master ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 10d [root@kubernetes-master ~]# kubectl get deploy -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx 1/1 1 1 10d nginx nginx app=nginx

查看事件

kubectl get ev可以查看K8S事件

[root@kubernetes-master ~]# kubectl get ev | tail -n5 51m Warning FailedCreatePodSandBox pod/nginx-85b98978db-lhmzl Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "0f577ca11cceb88b4b8f74199a903ef590cc2888209fd4c49e8ae5dc5854554b" network for pod "nginx-85b98978db-lhmzl": networkPlugin cni failed to set up pod "nginx-85b98978db-lhmzl_default" network: open /run/flannel/subnet.env: no such file or directory 51m Normal Pulling pod/nginx-85b98978db-lhmzl Pulling image "nginx" 50m Normal Pulled pod/nginx-85b98978db-lhmzl Successfully pulled image "nginx" in 46.606575516s 50m Normal Created pod/nginx-85b98978db-lhmzl Created container nginx 50m Normal Started pod/nginx-85b98978db-lhmzl Started container nginx

expose

expose 命令:创建一个service服务,并且暴露端口让外部可以访问

# 创建一个nginx服务并且暴露端口让外界可以访问 [root@master ~]# kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service

set

set 命令:配置应用的一些特定资源,也可以修改应用已有的资源

[root@master ~]# set SUBCOMMAND # 使用 kubectl set --help查看

子命令

  • env
  • image
  • resources
  • selector
  • serviceaccount
  • subject

kubectl set resources

resources (-f FILENAME | TYPE NAME) ([--limits=LIMITS & --requests=REQUESTS]

这个命令用于设置资源的一些范围限制。

资源对象中的Pod可以指定计算资源需求(CPU-单位m、内存-单位Mi),即使用的最小资源请求(Requests),限制(Limits)的最大资源需求,Pod将保证使用在设置的资源数量范围。

对于每个Pod资源,如果指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值。

可用资源对象包括(支持大小写):replicationcontroller、deployment、daemonset、job、replicaset。

# 将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi” [root@master ~]# kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi # 设置所有nginx容器中 Requests和Limits [root@master ~]# kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi # 删除nginx中容器的计算资源值 [root@master ~]# kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0

kubectl set selector

selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]

设置资源的 selector(选择器)。如果在调用”set selector”命令之前已经存在选择器,则新创建的选择器将覆盖原来的选择器。

selector必须以字母或数字开头,最多包含63个字符,可使用:字母、数字、连字符” - ” 、点”.“和下划线” _ “。如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

注意:目前selector命令只能用于Service对象。

kubectl set image

image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

用于更新现有资源的容器镜像。可用资源对象包括:pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)。

# 将deployment中的nginx容器镜像设置为“nginx:1.9.1” [root@master ~]# kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1 # 所有deployment和rc的nginx容器镜像更新为“nginx:1.9.1” [root@master ~]# kubectl set image deployments,rc nginx=nginx:1.9.1 --all # 将daemonset abc的所有容器镜像更新为“nginx:1.9.1” [root@master ~]# kubectl set image daemonset abc *=nginx:1.9.1 # 从本地文件中更新nginx容器镜像 [root@master ~]# kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml

explain

explain 命令:用于显示资源文档信息

[root@master ~]# kubectl explain rs

edit

edit 命令: 用于编辑资源信息

Kubernetes YAML 对缩进极其严格,必须用 2 个空格,不能用 Tab,层级必须匹配。

kubectl edit deployment <deployment_name> -n <namespace> kubectl edit service <service_name> -n <namespace>
# 查看deployment信息 [root@kubernetes-master ~]# kubectl get deployment -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE coredns 2/2 2 2 114m metrics-server 0/0 0 0 36m # 编辑deployment metrics-server [root@kubernetes-master ~]# kubectl edit deployment -n kube-system metrics-server # 编辑service类型的nginx的一些信息 [root@master ~]# kubectl edit service/nginx
# 例1:扩容/缩容 [root@kubernetes-master ~]# kubectl get deployment nginx NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 131m # 编辑deploymen,将副本数(spec: replicas: 0)设置为0 [root@kubernetes-master ~]# kubectl edit deployment nginx deployment.apps/nginx edited [root@kubernetes-master ~]# kubectl get pod No resources found in default namespace. # 例2:Pod metrics-server一直构建失败,将Deployment换国内源 # 1. 删除故障 Pod(删除后 Deployment 会重建 Pod) kubectl delete rs -n kube-system metrics-server-6c49cf6978 # 2. 编辑 metrics-server 的 Deployment,修改image: k8s.gcr.io/metrics-server/metrics-server:v0.5.2 kubectl edit deployment -n kube-system metrics-server # 3. 用 patch 命令编辑 metrics-server 部署配置,添加跳过证书验证参数 kubectl patch deployment metrics-server -n kube-system --type='json' -p='[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}]' kubectl get deployment metrics-server -n kube-system -o jsonpath='{.spec.template.spec.containers[0].args}' # 4. 保存退出后,Deployment 会自动重建 Pod [root@kubernetes-master ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-6d8c4cb4d-m8lv8 1/1 Running 0 125m coredns-6d8c4cb4d-p8qqm 1/1 Running 0 125m etcd-kubernetes-master 1/1 Running 0 125m kube-apiserver-kubernetes-master 1/1 Running 0 125m kube-controller-manager-kubernetes-master 1/1 Running 0 125m kube-proxy-74bt9 1/1 Running 0 112m kube-proxy-cdkjc 1/1 Running 0 125m kube-proxy-ph76x 1/1 Running 1 (103m ago) 111m kube-scheduler-kubernetes-master 1/1 Running 0 125m metrics-server-7c4866c4fd-h25jh 1/1 Running 0 3m42s

设置命令

label

label命令: 用于更新(增加、修改或删除)资源上的 label(标签)

label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。 如果 —overwrite 为 true,则可以覆盖已有的label,否则尝试覆盖label将会报错。 如果指定了—resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。

给名为foo的Pod添加label unhealthy=true

[root@master ~]# kubectl label pods foo unhealthy=true

给名为foo的Pod修改label 为 ‘status’ / value ‘unhealthy’,且覆盖现有的value

[root@master ~]# kubectl label --overwrite pods foo status=unhealthy

给 namespace 中的所有 pod 添加 label

[root@master ~]# kubectl label pods --all status=unhealthy

仅当resource-version=1时才更新 名为foo的Pod上的label

[root@master ~]# kubectl label pods foo status=unhealthy --resource-version=1

删除名为“bar”的label 。(使用“ - ”减号相连)

[root@master ~]# kubectl label pods foo bar-

annotate

annotate命令:更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。

annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

Annotations由key/value组成。 Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据,更多介绍在这里。 如果–overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。 如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。

更新Pod“foo”,设置annotation “description”的value “my frontend”,如果同一个annotation多次设置,则只使用最后设置的value值

[root@master ~]# kubectl annotate pods foo description=‘my frontend’

根据“pod.json”中的type和name更新pod的annotation

[root@master ~]# kubectl annotate -f pod.json description='my frontend'

更新Pod”foo”,设置annotation“description”的value“my frontend running nginx”,覆盖现有的值

[root@master ~]# kubectl annotate --overwrite pods foo description='my frontend running nginx'

更新 namespace中的所有pod

[root@master ~]# kubectl annotate pods --all description='my frontend running nginx'

只有当resource-version为1时,才更新pod ‘foo’

[root@master ~]# kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

通过删除名为“description”的annotations来更新pod ‘foo’。 不需要 -overwrite flag。

[root@master ~]# kubectl annotate pods foo description-

completion

completion命令:用于设置 kubectl 命令自动补全

  • bash
# 在 bash 中设置当前 shell 的自动补全,要先安装 bash-completion 包 [root@master ~]# source <(kubectl completion bash) # 在 bash shell 中永久的添加自动补全 [root@master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
  • ZSH
# 在 zsh 中设置当前 shell 的自动补全 [root@master ~]# source <(kubectl completion zsh) # 在 zsh shell 中永久的添加自动补全 [root@master ~]# echo "if [ [root@master ~]#commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc

部署命令

rollout

rollout 命令: 用于对资源进行管理

可用资源包括:deployments,daemonsets。

[root@master ~]# kubectl rollout SUBCOMMAND

子命令:

  • history(查看历史版本)
  • pause(暂停资源)
  • resume(恢复暂停资源)
  • status(查看资源状态)
  • undo(回滚版本)

回滚到之前的deployment

[root@master ~]# kubectl rollout undo deployment/abc

查看daemonet的状态

[root@master ~]# kubectl rollout status daemonset/foo

滚动更新

[root@master ~]# kubectl rollout restart deployment/nginx

scale

scale命令:扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量

kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

scale也可以指定多个前提条件,如:当前副本数量或 —resource-version ,进行伸缩比例设置前,系统会先验证前提条件是否成立。这个就是弹性伸缩策略。

将名为foo中的pod副本数设置为3。

[root@master ~]# kubectl scale --replicas=3 rs/foo kubectl scale deploy/nginx --replicas=30

将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3

[root@master ~]# kubectl scale --replicas=3 -f foo.yaml

如果当前副本数为2,则将其扩展至3。

[root@master ~]# kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

设置多个RC中Pod副本数量

[root@master ~]# kubectl scale --replicas=5 rc/foo rc/bar rc/baz

autoscale

autoscale命令:这个比scale更加强大,也是弹性伸缩策略 ,它是根据流量的多少来自动进行扩展或者缩容。

kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间

[root@master ~]# kubectl autoscale deployment foo --min=2 --max=10

使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%

[root@master ~]# kubectl autoscale rc foo --max=5 --cpu-percent=80

集群管理命令

查看集群的初始化信息【pod使用镜像和网段等】

[root@kubernetes-master ~]# kubectl get cm -o yaml -n kube-system kubeadm-config apiVersion: v1 data: ClusterConfiguration: | apiServer: extraArgs: authorization-mode: Node,RBAC timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta3 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controllerManager: {} dns: {} etcd: local: dataDir: /var/lib/etcd imageRepository: registry.aliyuncs.com/google_containers kind: ClusterConfiguration kubernetesVersion: v1.23.6 networking: dnsDomain: cluster.local podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 scheduler: {} kind: ConfigMap metadata: creationTimestamp: "2026-01-01T17:29:25Z" name: kubeadm-config namespace: kube-system resourceVersion: "201" uid: 3cccfdce-d0bc-4cea-b55b-9b6e8c12554e [root@kubernetes-master ~]#

certificate

certificate命令:用于证书资源管理,授权等

当有node节点要向master请求,那么是需要master节点授权的

[root@master ~]# kubectl certificate approve node-csr-81F5uBehyEyLWco5qavBsxc1GzFcZk3aFM3XW5rT3mw node-csr-Ed0kbFhc_q7qx14H3QpqLIUs0uKo036O2SnFpIheM18

cluster-info

cluster-info 命令:显示集群信息

[root@kubernetes-master ~]# kubectl cluster-info Kubernetes control plane is running at https://192.168.0.200:6443 CoreDNS is running at https://192.168.0.200:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

top

top 命令:用于查看资源的cpu,内存磁盘等资源的使用率

需要安装metrics-serverkubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.2/components.yaml

查看pod使用情况

# 查看所有pod [root@master ~]# kubectl top pod --all-namespaces # 查看指定pod [root@master ~]# kubectl top pod -n <命名空间>

查看node的使用情况

[root@master ~]# kubectl top nodes

cordon

cordon命令:用于标记某个节点不可调度,执行完后,对应节点状态变为SchedulingDisabled

标记 my-node 为 unschedulable,禁止pod被调度过来。注意这时现有的pod还会继续运行,不会被驱逐。

[root@kubernetes-master ~]# kubectl cordon kubernetes-node1 node/kubernetes-node1 cordoned [root@kubernetes-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes-master Ready control-plane,master 83m v1.23.6 kubernetes-node1 Ready,SchedulingDisabled <none> 69m v1.23.6 kubernetes-node2 Ready <none> 69m v1.23.6

uncordon

uncordon命令:用于标签节点可以调度

与cordon相反,标记 my-node 为 允许调度。

[root@master ~]# kubectl uncordon my-node

drain

drain命令: 用于在维护期间排除节点。

drain字面意思为排水,实际就是把my-node的pod平滑切换到其他node,同时标记pod为SchedulingDisabled,也就是包含了cordon命令。

[root@master ~]# kubectl drain my-node

使用时注意以下几点:

  1. drain 只会驱逐非 DaemonSet 的 Pod,DaemonSet Pod 会保留(因为 DaemonSet 要求每个节点必须运行);
  2. emptyDir 是临时存储,删除 Pod 后数据会丢失,确认业务无状态再执行 --delete-emptydir-data
  3. 生产环境建议先缩容业务 Deployment/StatefulSet,再执行 drain,减少业务中断时间;
  4. StatefulSet 类型的 Pod 若使用持久化存储(PVC),drain 时会正常驱逐,数据不会丢失。
kubectl drain kubernetes-node2 \ --ignore-daemonsets \ # 忽略 DaemonSet 管理的 Pod --force \ # 直接删除不由workload对象(Deployment、Job等)管理的pod --delete-local-data \ # 允许删除含 emptyDir 本地存储的 Pod --timeout=120s \ # 超时时间(可选) --grace-period=30 # 优雅终止时间(可选)

taint

taint命令:用于给某个Node节点设置污点

污点 ( Taint ) 的组成

使用kubectl taint命令可以给某个Node节点设置污点,Node被设置上污点之后就和Pod之间存在了一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node已经存在的Pod驱逐出去

每个污点的组成如:key=value:effect 每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。

当前 taint effect 支持如下三个选项:

  • NoSchedule :表示k8s将不会将Pod调度到具有该污点的Node上

  • PreferNoSchedule :表示k8s将尽量避免将Pod调度到具有该污点的Node上

  • NoExecute :表示k8s将不会将Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod驱逐出去

污点的设置、查看和去除

设置污点

kubectl taint nodes k8s-node2 check=yuanzhang:NoExecute

节点说明中,查找Taints字段

kubectl describe nodes k8s-node2

去除污点

kubectl taint nodes k8s-node2 check:NoExecute-

调试命令

describe

describe命令:显示特定pod资源的详细信息

kubectl describe pod -n <namespace> <podename>
[root@kubernetes-master ~]# kubectl describe pod -n kube-system etcd-kubernetes-master Name: etcd-kubernetes-master Namespace: kube-system Priority: 2000001000 Priority Class Name: system-node-critical Node: kubernetes-master/192.168.0.200 Start Time: Fri, 02 Jan 2026 01:29:32 +0800 Labels: component=etcd tier=control-plane Annotations: kubeadm.kubernetes.io/etcd.advertise-client-urls: https://192.168.0.200:2379 kubernetes.io/config.hash: af03a67fa2953c77494bdd8443bf80d6 kubernetes.io/config.mirror: af03a67fa2953c77494bdd8443bf80d6 kubernetes.io/config.seen: 2026-01-02T01:29:31.755014368+08:00 kubernetes.io/config.source: file seccomp.security.alpha.kubernetes.io/pod: runtime/default Status: Running IP: 192.168.0.200 IPs: IP: 192.168.0.200 Controlled By: Node/kubernetes-master Containers: etcd: Container ID: containerd://775201c1757c107aa5b4465a52a8e453433c5dc3b4fb5f109baa848411a4d0d0 Image: registry.aliyuncs.com/google_containers/etcd:3.5.1-0 Image ID: registry.aliyuncs.com/google_containers/etcd@sha256:64b9ea357325d5db9f8a723dcf503b5a449177b17ac87d69481e126bb724c263 Port: <none> Host Port: <none> Command: etcd --advertise-client-urls=https://192.168.0.200:2379 --cert-file=/etc/kubernetes/pki/etcd/server.crt --client-cert-auth=true --data-dir=/var/lib/etcd --initial-advertise-peer-urls=https://192.168.0.200:2380 --initial-cluster=kubernetes-master=https://192.168.0.200:2380 --key-file=/etc/kubernetes/pki/etcd/server.key --listen-client-urls=https://127.0.0.1:2379,https://192.168.0.200:2379 --listen-metrics-urls=http://127.0.0.1:2381 --listen-peer-urls=https://192.168.0.200:2380 --name=kubernetes-master --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt --peer-client-cert-auth=true --peer-key-file=/etc/kubernetes/pki/etcd/peer.key --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt --snapshot-count=10000 --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt State: Running Started: Fri, 02 Jan 2026 01:29:22 +0800 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 100Mi Liveness: http-get http://127.0.0.1:2381/health delay=10s timeout=15s period=10s #success=1 #failure=8 Startup: http-get http://127.0.0.1:2381/health delay=10s timeout=15s period=10s #success=1 #failure=24 Environment: <none> Mounts: /etc/kubernetes/pki/etcd from etcd-certs (rw) /var/lib/etcd from etcd-data (rw) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: etcd-certs: Type: HostPath (bare host directory volume) Path: /etc/kubernetes/pki/etcd HostPathType: DirectoryOrCreate etcd-data: Type: HostPath (bare host directory volume) Path: /var/lib/etcd HostPathType: DirectoryOrCreate QoS Class: Burstable Node-Selectors: <none> Tolerations: :NoExecute op=Exists Events: <none>

logs

logs命令:用于在一个pod中打印一个容器的日志,如果pod中只有一个容器,可以省略容器名

kubectl logs [-f] [-p] POD [-c CONTAINER] # 参数选项: -c, --container="": 容器名。 -f, --follow[=false]: 指定是否持续输出日志(实时日志)。 --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true。 --limit-bytes=0: 输出日志的最大字节数。默认无限制。 -p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志。 --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种。 --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种。 --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志。 --timestamps[=false]: 在日志中包含时间戳。

返回仅包含一个容器的pod nginx的日志快照

[root@master ~]# kubectl logs nginx

返回pod ruby中已经停止的容器web-1的日志快照

[root@master ~]# kubectl logs -p -c ruby web-1

持续输出pod ruby中的容器web-1的日志

[root@master ~]# kubectl logs -f -c ruby web-1

仅输出pod nginx中最近的20条日志

[root@master ~]# kubectl logs --tail=20 nginx

输出pod nginx中最近一小时内产生的所有日志

[root@master ~]# kubectl logs --since=1h nginx

exec

exec命令:进入容器进行交互,在容器中执行命令

kubectl exec POD [-c CONTAINER] -- COMMAND [args...] # 参数选项 -c, --container="": 容器名。如果未指定,使用pod中的一个容器。 -i, --stdin[=false]: 将控制台输入发送到容器。 -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。

进入nginx容器交互式页面

kubectl exec -it nginx-85b98978db-tclgz -- bash

不进入容器,直接执行命令

kubectl exec -it nginx-85b98978db-tclgz -- ls

attach

attach命令:连接到一个正在运行的容器。

kubectl attach POD -c CONTAINER # 参数选项 - -c, --container="": 容器名。如果省略,则默认选择第一个 pod。 - -i, --stdin[=false]: 将控制台输入发送到容器。 - -t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。

获取正在运行中的pod nginx-85b98978db-tclgz输出,默认连接到第一个容器

[root@kubernetes-master ~]# kubectl attach -it nginx-85b98978db-tclgz error: Unable to use a TTY - container nginx did not allocate one If you don't see a command prompt, try pressing enter. ^C[root@kubernetes-master ~]#

获取pod nginx-85b98978db-tclgz 中,容器 nginx的输出

[root@kubernetes-master ~]# kubectl attach nginx-85b98978db-tclgz -c nginx If you don't see a command prompt, try pressing enter. ^C [root@kubernetes-master ~]#

错误控制台的信息发送回客户端。

[root@kubernetes-master ~]# kubectl attach nginx-85b98978db-tclgz -c nginx -it error: Unable to use a TTY - container nginx did not allocate one If you don't see a command prompt, try pressing enter. ^C[root@kubernetes-master ~]#

cp

cp命令:拷贝文件或者目录到pod容器中,用于pod和外部的文件交换,类似于docker 的cp

kubectl cp <file-spec-src> <file-spec-dest> [options]

拷贝宿主机本地目录到pod

[root@master ~]# kubectl cp /tmp/foo_dir <pod_name>:/tmp/bar_dir # 示例 [root@kubernetes-master ~]# echo "hello" > testfile [root@kubernetes-master ~]# kubectl cp testfile nginx-85b98978db-tclgz:/tmp [root@kubernetes-master ~]# kubectl exec -it nginx-85b98978db-tclgz -- ls /tmp testfile [root@kubernetes-master ~]#

指定namespace的拷贝pod文件到宿主机本地目录

[root@master ~]# kubectl cp <namespace>/<pod_name>:/tmp/foo /tmp/bar

对于多容器pod,用-c指定容器名

[root@master ~]# kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>

辅助命令

api-servions

api-versions命令:打印受支持的api版本信息

[root@master ~]# kubectl api-versions

help

help命令:用于查看命令帮助

# 显示全部的命令帮助提示 [root@master ~]# kubectl --help # 具体的子命令帮助 [root@master ~]# kubectl create --help

config

config 命令: 用于修改kubeconfig配置文件(用于访问api,例如配置认证信息)

设置 kubectl 与哪个 Kubernetes 集群进行通信并修改配置信息。

显示合并的 kubeconfig 配置信息(如果配置了多集群,可合并信息查看)

[root@master ~]# kubectl config view

同时使用多个 kubeconfig 文件并查看合并的配置

[root@master ~]# KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view

获取 e2e 用户的密码

[root@master ~]# kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'

查看当前所处的上下文

[root@master ~]# kubectl config current-context

查看多集群上下文等信息,CURRENT是当前所处集群

[root@master ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * context master ccx default context1 master1 ccx1 default

设置默认的上下文【多集群切换】

使用:kubectl config get-contexts查看现在有的上下文(一般多集群才需要切换)

kubectl config use-context <上下文名>

从集群context切换到集群context1这个上下文上

[root@master ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * context master ccx default context1 master1 ccx1 default [root@master ~]# [root@master ~]# kubectl config use-context context1 Switched to context "context1". [root@master ~]# [root@master ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE context master ccx default * context1 master1 ccx1 default

添加新的集群配置到 kubeconf 中,使用 basic auth 进行鉴权

[root@master ~]# kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword

使用特定的用户名和命名空间设置上下文。

[root@master ~]# kubectl config set-context gce --user=cluster-admin --namespace=foo \ && kubectl config use-context gce

version

version 命令:打印客户端和服务端版本信息

# 打印客户端和服务端详细版本信息 [root@kubernetes-master ~]# kubectl version Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.6", GitCommit:"ad3338546da947756e8a88aa6822e9c11e7eac22", GitTreeState:"clean", BuildDate:"2022-04-14T08:49:13Z", GoVersion:"go1.17.9", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.6", GitCommit:"ad3338546da947756e8a88aa6822e9c11e7eac22", GitTreeState:"clean", BuildDate:"2022-04-14T08:43:11Z", GoVersion:"go1.17.9", Compiler:"gc", Platform:"linux/amd64"} # 打印精简信息 [root@kubernetes-master ~]# kubectl version --short Client Version: v1.23.6 Server Version: v1.23.6

配置命令

apply

apply命令:通过文件名或者标准输入对资源应用配置

通过文件名或控制台输入,对资源进行配置。 如果资源不存在,将会新建一个。可以使用 JSON 或者 YAML 格式。

kubectl apply -f FILENAME [options] # 参数选项 -f, --filename=[]: 包含配置信息的文件名,目录名或者URL。 --include-extended-apis[=true]: If true, include definitions of new APIs via calls to the API server. [default true] -o, --output="": 输出模式。"-o name"为快捷输出(资源/name). --record[=false]: 在资源注释中记录当前 kubectl 命令。 -R, --recursive[=false]: Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory. --schema-cache-dir="~/.kube/schema": 非空则将API schema缓存为指定文件,默认缓存到’[root@master ~]#HOME/.kube/schema’ --validate[=true]: 如果为true,在发送到服务端前先使用schema来验证输入。

将pod.json中的配置应用到pod

[root@master ~]# kubectl apply -f ./pod.json

将控制台输入的JSON配置应用到Pod

[root@master ~]# cat pod.json | kubectl apply -f -

从URL下载yaml并部署文件中定义的资源

[root@master ~]# kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.2/components.yaml

patch

patch 命令:通过补丁的方式进行修改,更新资源的字段,即仅修改资源的部分内容。

[root@master ~]# kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

使用合并键(Merge Key)更新容器的镜像;spec.containers[*].name

在更新列表型字段时,用于匹配列表中已有元素的唯一标识(如容器名 name),确保只更新指定元素,不影响其他元素。

[root@master ~]# kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

replace

replace 命令:通过文件或标准输入替换原有资源

kubectl replace -f <文件>

使用 pod.json 中的数据替换一个 Pod

[root@master ~]# kubectl replace -f ./pod.json

基于标准输入传入的 JSON 数据替换一个 Pod

[root@master ~]# cat pod.json | kubectl replace -f -

将单容器 Pod 的镜像版本(标签)更新为 v4

[root@master ~]# kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*[root@master ~]#/\1:v4/' | kubectl replace -f -

强制替换:先删除资源,再重新创建该资源

[root@master ~]# kubectl replace --force -f ./pod.json

convert

convert 命令:在不同的 API 版本之间转换配置文件

kubectl convert -f 文件名

pod.yaml 转换为最新版本并打印到标准输出

[root@master ~]# kubectl convert -f pod.yaml

pod.yaml 所指定资源的实时状态转换为最新版本,并以 JSON 格式打印到标准输出

[root@master ~]# kubectl convert -f pod.yaml --local -o json

将当前目录下的所有文件转换为最新版本,并全部创建这些资源

[root@master ~]# kubectl convert -f . | kubectl create -f -

格式化输出

要以特定格式将详细信息输出到终端窗口,可以将-o--output 参数添加到支持的 kubectl 命令。

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

日志级别

Kubectl 日志输出详细程度是通过 -v 或者 —v 来控制的,参数后跟了一个数字表示日志的级别。

详细程度描述
--v=0通常对此有用,始终对运维人员可见
--v=1如果不指定详细程度,则默认为该级别
--v=2有关服务的状态信息以及系统重大更改相关的日志信息,建议默认为该级别
--v=3有关更改拓展的信息
--v=4debug级别
--v=5增强版debug,官方无标准描述,通常不使用
--v=6显示请求的资源
--v=7显示HTTP请求头
--v=8显示HTTP请求内容
--v=9显示HTTP请求内容且不截断内容