智能
助手
最大化  清空记录 停止  历史记录
翻译选中文本
选中一段文本后进行翻译
名词解释
选中一段文本后进行名词解释
知识图谱生成
通过图谱展示知识信息
登录用户在知识浏览页面可用
答案生成
AI自动回答一个问答功能中的问题
登录用户在问答浏览页面,且问题开放回答中可用
知识摘要
自动为当前知识生成摘要
知识浏览页面可用
知识问答
针对当前知识进行智能问答
知识浏览面可用
   51  
查询码: 00000223
4. Kubernetes kubectl常用子命令
作者: 文艺范儿 于 2026年01月01日 发布在分类 / Docker & K8S / K8S基础 ,于 2026年01月01日 编辑
k8s

4. Kubernetes kubectl常用子命令

4.1 集群与上下文管理(Cluster & Context)

用于查看集群状态、切换上下文、管理认证信息,是SRE“连接集群”的第一步。

子命令 作用 语法示例 实操案例 最佳实践

cluster-info

查看集群核心组件(API Server、etcd、CoreDNS)状态

kubectl cluster-info

kubectl cluster-info

输出含Kubernetes control plane is running at https://...表示集群正常

config view

查看kubeconfig配置(集群、用户、上下文)

kubectl config view [--minify]

kubectl config view --minify(精简当前上下文)

避免明文显示证书(--flatten可展开引用)

config use-context

切换集群上下文

kubectl config use-context <context-name>

kubectl config use-context prod-cluster

多集群环境下,用上下文隔离不同环境(如dev/test/prod)

config current-context

查看当前使用的上下文

kubectl config current-context

kubectl config current-context

快速确认当前操作的集群,避免误操作

4.2 资源操作(Resource CRUD)

K8S资源管理的核心,覆盖创建、查询、更新、删除,遵循SRE“声明式优先”原则。

4.2.1 查询类(Read)

子命令 作用 语法示例 实操案例 关键参数

get

查看资源列表/详情

kubectl get <resource> [options]

kubectl get pods -n prod -l app=nginx -o wide

-n指定命名空间;-l按标签过滤;-o wide/json/yaml指定输出格式

describe

查看资源详细状态(含事件、配置)

kubectl describe <resource> <name>

kubectl describe pod nginx-pod

重点看Eventssection(调度、启动、错误事件)

logs

查看Pod日志

kubectl logs <pod-name> [options]

kubectl logs nginx-pod -c sidecar --since=1h

-c指定容器;-f实时跟踪;--since查看最近N小时日志

exec

进入Pod容器执行命令

kubectl exec -it <pod-name> -- <cmd>

kubectl exec -it nginx-pod -- /bin/bash

-it交互式终端;--分隔kubectl与容器内命令

top

查看资源使用率(需metrics-server)

kubectl top <resource>

kubectl top nodes --sort-by=memory

--sort-by按CPU/内存排序,快速定位高负载节点/Pod

4.2.2 创建类(Create)

子命令 作用 语法示例 实操案例 最佳实践

apply

声明式创建/更新资源(推荐)

kubectl apply -f <file.yaml>

kubectl apply -f deployment.yaml

幂等性(多次执行结果一致),配置文件纳入Git管理

create

命令式创建资源(一次性操作)

kubectl create -f <file.yaml>kubectl create <resource> <name> --image=<img>

kubectl create deployment nginx --image=nginx:1.21

仅用于临时测试,生产环境禁用(无法追溯变更)

run

快速创建临时Pod(生成裸Pod,无自愈)

kubectl run <pod-name> --image=<img> [options]

kubectl run test-pod --image=busybox --rm -it -- /bin/sh

--rm退出后自动删除,适合调试

4.2.3 更新类(Update)

子命令 作用 语法示例 实操案例 说明

patch

局部修改资源(无需全量YAML)

kubectl patch <resource> <name> -p <json-patch>

kubectl patch deployment nginx-deploy -p '{"spec":{"replicas":5}}'

快速调整副本数、镜像版本等字段

edit

在线编辑资源(直接修改API对象)

kubectl edit <resource> <name>

kubectl edit svc nginx-svc

修改后自动提交API,建议用YAML文件替代(可追溯)

scale

扩缩容Deployment/StatefulSet

kubectl scale <resource> <name> --replicas=<num>

kubectl scale deployment nginx-deploy --replicas=3

应对流量峰值时快速扩容,缩容需注意业务影响

rollout

滚动更新/回滚Deployment

kubectl rollout <subcmd> deployment <name>

kubectl rollout undo deployment nginx-deploy(回滚)<br/> kubectl rollout status deployment nginx-deploy(查看状态)

滚动更新默认策略为“先建新Pod再删旧Pod”,避免 downtime

4.2.4 删除类(Delete)

子命令 作用 语法示例 实操案例 注意事项

delete

删除资源

kubectl delete <resource> <name> [options]

kubectl delete -f deployment.yaml <br/>kubectl delete pod nginx-pod -n prod

若资源由控制器(如Deployment)管理,删除后会自动重建;加--force --grace-period=0强制删除(危险)

4.3 故障排查(Troubleshooting)

SRE定位问题的核心工具链,覆盖事件、日志、资源状态、调试

子命令 作用 语法示例 实操案例 排查逻辑

get events

查看集群事件(按时间排序)

kubectl get events [options]

kubectl get events -n prod --sort-by=.lastTimestamp

优先看Warning事件(如FailedSchedulingOOMKilling

describe

查看资源详细状态(含事件)

kubectl describe <resource> <name>

kubectl describe node node-1(查看节点资源分配)

节点事件含DiskPressure(磁盘不足)、MemoryPressure(内存不足)

logs

查看Pod日志

kubectl logs <pod-name> [options]

kubectl logs nginx-pod --previous(查看上一次启动日志)

容器崩溃时,--previous可获取崩溃前的日志

debug

调试Pod(创建临时容器)

kubectl debug <pod-name> -it --image=<debug-img>

kubectl debug nginx-pod -it --image=busybox --target=nginx

--target共享原Pod网络/存储,用于排查网络/存储问题(K8s 1.20+)

cp

复制文件到/从Pod

kubectl cp <src> <dst>

kubectl cp ./local.conf nginx-pod:/etc/nginx/conf.d/(上传配置)

调试时快速替换容器内配置文件

4.4 配置与扩展(Configuration & Extension)

用于管理资源标签、注解、命名空间,以及扩展K8S功能(如CRD)。

子命令 作用 语法示例 实操案例 应用场景

label

添加/修改资源标签

kubectl label <resource> <name> <key>=<value>

kubectl label pods nginx-pod env=prod

标签用于资源分组(如app=nginxenv=prod)、选择器匹配

annotate

添加/修改资源注解(非标识性元数据)

kubectl annotate <resource> <name> <key>=<value>

kubectl annotate deployment nginx-deploy description="nginx prod deployment"

存储额外信息(如构建版本、负责人),不影响资源调度

namespace

管理命名空间

kubectl create namespace <ns> kubectl delete namespace <ns>

kubectl create namespace prod

隔离不同环境/团队资源,避免名称冲突

apply

管理CRD(自定义资源)

kubectl apply -f crd.yaml

kubectl apply -f prometheus-crd.yaml

扩展K8S API,如安装Prometheus Operator需先创建CRD

4.5 高级子命令(Advanced)

面向复杂场景的扩展能力,如批量操作、API调试、资源转换。

子命令 作用 语法示例 实操案例 说明

auth

查看RBAC权限

kubectl auth can-i <verb> <resource> [options]

kubectl auth can-i create pods --as=dev-user

验证用户是否有操作权限(如dev-user能否创建Pod)

convert

转换资源版本

kubectl convert -f <old-version.yaml> --output-version=<new-api-version>

kubectl convert -f v1beta1-ingress.yaml --output-version=networking.k8s.io/v1

兼容旧版本YAML(如Ingress从extensions/v1beta1迁移到networking.k8s.io/v1

replace

替换资源(命令式,需先删除再创建)

kubectl replace -f <file.yaml>

kubectl replace -f deployment.yaml

不推荐,可能导致服务中断,优先用apply

wait

等待资源达到期望状态

kubectl wait --for=<condition> <resource> <name>

kubectl wait --for=condition=ready pod nginx-pod --timeout=60s

自动化脚本中确保资源就绪后再执行下一步

4.6 SRE最佳实践总结

  1. 优先声明式:用kubectl apply替代create/replace,配置文件纳入Git实现可追溯;
  2. 标签驱动:给资源打统一标签(如app=<name>env=<env>),用-l过滤提高效率;
  3. 事件优先排查:故障发生时,先执行kubectl get events --sort-by=.lastTimestampWarning事件;
  4. 资源隔离:用命名空间隔离环境,用RBAC限制用户权限(kubectl auth can-i验证);
  5. 调试技巧:用kubectl debug创建临时容器排查网络/存储问题,避免修改生产Pod。

4.7 子命令速查表(按场景分类)

场景 核心子命令

集群状态

cluster-infoget nodesconfig view

资源查询

getdescribelogstop

资源创建

applycreate(临时)、run(调试)

资源更新

patchscalerollout

故障排查

get eventsdescribelogs --previousdebug

配置管理

labelannotatenamespace

权限验证

auth can-i

笔记
0人参与


 历史版本

备注 修改日期 修改人
创建版本 2026-01-01 00:08:46[当前版本] 文艺范儿

  目录
    文艺知识分享平台 -V 5.2.5 -wcp