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-namespaces和kubectl 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 ns和kubectl 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 deploy和kubectl 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-server:kubectl 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
使用时注意以下几点:
drain只会驱逐非 DaemonSet 的 Pod,DaemonSet Pod 会保留(因为 DaemonSet 要求每个节点必须运行);emptyDir是临时存储,删除 Pod 后数据会丢失,确认业务无状态再执行--delete-emptydir-data;- 生产环境建议先缩容业务 Deployment/StatefulSet,再执行 drain,减少业务中断时间;
- 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> | 在 |
-o name | 仅打印资源名称而不打印其他任何内容 |
-o wide | 使用任何其他信息以纯文本格式输出,对于pod来说,包含了节点名称 |
-o yaml | 输出YAML格式的API对象 |
日志级别
Kubectl 日志输出详细程度是通过 -v 或者 —v 来控制的,参数后跟了一个数字表示日志的级别。
| 详细程度 | 描述 |
|---|---|
--v=0 | 通常对此有用,始终对运维人员可见 |
--v=1 | 如果不指定详细程度,则默认为该级别 |
--v=2 | 有关服务的状态信息以及系统重大更改相关的日志信息,建议默认为该级别 |
--v=3 | 有关更改拓展的信息 |
--v=4 | debug级别 |
--v=5 | 增强版debug,官方无标准描述,通常不使用 |
--v=6 | 显示请求的资源 |
--v=7 | 显示HTTP请求头 |
--v=8 | 显示HTTP请求内容 |
--v=9 | 显示HTTP请求内容且不截断内容 |