整理了10条生产环境最常用的kubectl命令涵盖资源查看、日志追踪、容器调试、滚动更新、扩缩容等核心场景附常用参数和实战技巧。对于运维工程师来说kubectl 是使用频率最高的命令行工具——没有之一。每天少则几十次多则上百次的敲击熟练程度直接影响排查效率。但很多人在日常使用中只停留在kubectl get pods和kubectl describe层面碰到稍微复杂一点的场景就开始查文档、搜命令。本文整理了10条生产环境每天都在用的kubectl命令从基础到进阶每一条都附上常用参数和实战场景。建议收藏用到的时候直接翻。01 kubectl get — 查看资源最基础也是最常用的命令用于查看集群中各种资源的状态。# 查看 Podkubectl get pods# 查看所有命名空间的 Podkubectl get pods-A# 查看节点状态kubectl get nodes# 宽格式输出含 IP、节点名、容器数kubectl get pods-owide# 按标签过滤kubectl get pods-lappnginx常用技巧-o wide是必加参数一次看到 Pod IP 和所在 Node排查网络问题省去额外查询-A--all-namespaces在不知道 Pod 在哪个命名空间时快速定位--show-labels输出标签列做标签筛选时很有用配合--sort-by可按字段排序例如kubectl get pods --sort-by.metadata.creationTimestampkubectl get支持查看几乎所有 K8s 资源类型deployment、service、configmap、secret、pvc、ingress 等格式统一一通百通。02 kubectl describe — 查看详情排错第一利器。get只能看到概览describe则输出资源的完整详情包括关联事件Events是排查问题的第一入口。# Pod 详情含最近事件排错时必看kubectl describe podpod-name# 节点详情资源分配情况、条件状态kubectl describenodenode-name# 只看最近的事件kubectl describe podpod-name|grep-A20Events什么时候用 describePod 一直 Pending → 看 Events 找调度失败原因Pod 反复 CrashLoopBackOff → 看 Events 和 Conditions节点 NotReady → describe node 看资源压力和条件状态Service 访问不通 → describe service 检查 Endpoints 是否正常排查问题时我的习惯是先get看状态 → 状态异常就用describe看事件 → 事件指向具体原因后再用logs或exec深入。03 kubectl logs — 查看日志查看容器标准输出实时追踪应用日志。相当于docker logs的 K8s 版本。# 查看最近 100 行日志kubectl logspod-name--tail100# 实时跟踪日志类似 tail -fkubectl logs-fpod-name# 多容器 Pod 指定容器kubectl logspod-name-ccontainer-name# 查看前一个崩溃容器的日志Pod 重启后排查崩溃原因kubectl logspod-name--previous# 查看过去 30 分钟的日志kubectl logspod-name--since30m# 按时间戳查看日志kubectl logspod-name--timestamps实战场景应用启动失败 →--previous看崩溃前的日志实时追踪请求 →-f连续输出日志量太大 →--tail100只看最近或--since5m限定时间范围多容器 Pod → 必须用-c指定容器名否则报错对于生产环境建议配合 ELK/Loki 等集中式日志系统但紧急排错时kubectl logs仍然是最快的方式。04 kubectl exec — 进入容器在容器内执行命令相当于docker exec。调试应用、排查网络、检查配置时必备。# 进入容器 Shellkubectlexec-itpod-name-- /bin/bash kubectlexec-itpod-name-- /bin/sh# 精简镜像用 sh# 执行单条命令不进 Shellkubectlexecpod-name--ls/app kubectlexecpod-name--cat/etc/resolv.conf# 多容器 Pod 指定容器kubectlexec-itpod-name-ccontainer-name-- /bin/bash# 执行命令并获取返回码kubectlexecpod-name--curl-s-o/dev/null-w%{http_code}http://localhost:8080/health注意事项-it组合-istdin-ttty进交互式 Shell 必须加--分隔符后面才是容器内要执行的命令不能省略镜像可能没有 bash如 alpine此时用/bin/sh生产环境谨慎操作进容器后不要随意修改文件05 kubectl apply — 声明式部署应用 YAML 配置文件声明式管理资源。K8s 的核心操作方式。# 应用单个配置文件kubectl apply-fdeployment.yaml# 应用整个目录下的所有 YAMLkubectl apply-fk8s/# 使用 Kustomize多环境管理推荐kubectl apply-k./overlays/prod# 预览变更但不真正执行dry-runkubectl apply-fdeployment.yaml --dry-runclientapply vs create 的区别apply是声明式对比差异只更新变化部分资源存在就更新不存在就创建create是命令式资源已存在会报错生产环境推荐用apply配合 Git 做版本管理GitOps 的基础建议先用--dry-runclient和-o yaml验证配置正确性再正式执行。06 kubectl delete — 删除资源删除资源带确认提示。删除用 YAML 创建的资源时效率最高。# 删除单个 Podkubectl delete podpod-name# 按 YAML 文件删除删掉 apply 创建的所有资源kubectl delete-fdeployment.yaml# 按标签批量删除kubectl delete pods-lappnginx# 强制立即删除跳过优雅终止资源卡在 Terminating 时使用kubectl delete podpod-name--force--grace-period0# 删除 Deployment 及关联的 Podkubectl delete deploymentdeploy-name注意事项--force --grace-period0是最后手段跳过 preStop hook 和优雅终止仅在 Pod 长时间卡在 Terminating 时使用删除 Deployment 会自动删除关联的 ReplicaSet 和 Pod删除 Service 不会影响 Pod 本身只移除访问入口建议优先用delete -f yaml的方式清理不会漏删07 kubectl rollout — 滚动更新管理 Deployment 的滚动更新过程包括查看状态、查看历史、回滚操作。# 查看滚动更新进度kubectl rollout status deployment/deploy-name# 查看部署历史版本用于回滚kubectl rollouthistorydeployment/deploy-name# 回滚到上一个版本发版出问题时最快恢复方式kubectl rollout undo deployment/deploy-name# 回滚到指定版本kubectl rollout undo deployment/deploy-name--to-revision3# 暂停/恢复滚动更新分批次发布时使用kubectl rollout pause deployment/deploy-namekubectl rollout resume deployment/deploy-name实战场景更新镜像后 → 用rollout status实时监控进度新版本有问题 →rollout undo一键回滚秒级恢复分批灰度发布 →pause 手动验证 resume查看历史版本 →rollout history配合--revision查看具体变更rollout undo是运维的后悔药建议每次发布前先确认历史版本信息确保能快速回滚。08 kubectl scale — 扩缩容快速调整副本数应对流量变化或紧急情况。# 手动扩容kubectl scale deployment/deploy-name--replicas5# 一键缩到 0停止服务但保留配置节省成本kubectl scale deployment/deploy-name--replicas0# 查看当前副本数kubectl get deploymentdeploy-name-ojsonpath{.spec.replicas}应用场景流量突增 → 快速扩容分担压力节点维护 → 扩容到其他节点后缩容维护节点非核心服务 → 闲时缩到0节省资源配合 HPAHorizontalPodAutoscaler实现自动扩缩容scale作为手动应急手段注意区分scale和 HPAHPA 是自动的长期策略scale是手动干预的临时手段。两者可以共存。09 kubectl port-forward — 端口转发将集群内的 Pod 或 Service 端口映射到本地调试必备。# 转发 Pod 端口到本地kubectl port-forward pod/pod-name8080:80# 转发 Service 端口kubectl port-forward svc/svc-name8080:80# 后台运行加 kubectl port-forward pod/pod-name8080:80# 本地访问curlhttp://localhost:8080使用场景本地调试集群内服务无需暴露 NodePort 或 Ingress临时访问未暴露端口的内部服务如数据库、管理后台配合本地工具Postman、浏览器直接访问 K8s 内部服务端口转发会一直占用终端建议配合后台运行或另开终端port-forward不需要 Service/Ingress/NodePort直接通过 API Server 隧道连接是最轻量的访问方式。10 kubectl top — 资源使用查看 Pod 和节点的实时 CPU/内存消耗。# 查看节点资源使用kubectltopnodes# 查看 Pod 资源使用kubectltoppods# 按命名空间查看kubectltoppods-nnamespace# 按内存排序定位资源大户kubectltoppods --sort-bymemory# 按 CPU 排序kubectltoppods --sort-bycpu前置条件集群必须安装 metrics-server 组件才能使用kubectl top如果提示Metrics API not available说明 metrics-server 未安装或异常阿里云 ACK、华为云 CCE 等托管集群通常已内置top是快速定位资源瓶颈的第一步发现 CPU/内存异常后再用describe和logs深入排查。 额外技巧kubectl 别名 自动补全每天敲几百次kubectl一个简单的别名能省下大量按键次数。# 加到 ~/.bashrc 或 ~/.zshrc重新登录后生效aliaskkubectlaliaskgpkubectl get podsaliaskgdkubectl get deploymentaliaskgskubectl get servicealiaskdkubectl describealiasklkubectl logsaliaskekubectl exec -italiaskpfkubectl port-forwardaliaskakubectl apply -faliaskrmkubectl delete -f# 启用 kubectl 自动补全效率翻倍source(kubectl completionbash)# Bashsource(kubectl completionzsh)# Zsh别名使用建议别名完整命令用途kkubectl基础前缀kgpkubectl get pods查看 Podkdkubectl describe查看详情klkubectl logs查看日志kekubectl exec -it进容器kpfkubectl port-forward端口转发kakubectl apply -f应用配置krmkubectl delete -f删除资源总结这10条命令覆盖了日常运维 90% 的 kubectl 使用场景get/describe/logs/exec→ 日常排错四件套apply/delete→ 资源管理基本功rollout/scale→ 发布与扩缩容port-forward/top→ 调试和监控建议把常用参数形成肌肉记忆排错时不用再翻文档效率能提升不少。配合别名和自动补全每天能省好几百次按键。坚持练习每条命令敲3遍一周就能熟练掌握。
kubectl 10条必备命令速查:从入门到排错,运维人每天都在用
整理了10条生产环境最常用的kubectl命令涵盖资源查看、日志追踪、容器调试、滚动更新、扩缩容等核心场景附常用参数和实战技巧。对于运维工程师来说kubectl 是使用频率最高的命令行工具——没有之一。每天少则几十次多则上百次的敲击熟练程度直接影响排查效率。但很多人在日常使用中只停留在kubectl get pods和kubectl describe层面碰到稍微复杂一点的场景就开始查文档、搜命令。本文整理了10条生产环境每天都在用的kubectl命令从基础到进阶每一条都附上常用参数和实战场景。建议收藏用到的时候直接翻。01 kubectl get — 查看资源最基础也是最常用的命令用于查看集群中各种资源的状态。# 查看 Podkubectl get pods# 查看所有命名空间的 Podkubectl get pods-A# 查看节点状态kubectl get nodes# 宽格式输出含 IP、节点名、容器数kubectl get pods-owide# 按标签过滤kubectl get pods-lappnginx常用技巧-o wide是必加参数一次看到 Pod IP 和所在 Node排查网络问题省去额外查询-A--all-namespaces在不知道 Pod 在哪个命名空间时快速定位--show-labels输出标签列做标签筛选时很有用配合--sort-by可按字段排序例如kubectl get pods --sort-by.metadata.creationTimestampkubectl get支持查看几乎所有 K8s 资源类型deployment、service、configmap、secret、pvc、ingress 等格式统一一通百通。02 kubectl describe — 查看详情排错第一利器。get只能看到概览describe则输出资源的完整详情包括关联事件Events是排查问题的第一入口。# Pod 详情含最近事件排错时必看kubectl describe podpod-name# 节点详情资源分配情况、条件状态kubectl describenodenode-name# 只看最近的事件kubectl describe podpod-name|grep-A20Events什么时候用 describePod 一直 Pending → 看 Events 找调度失败原因Pod 反复 CrashLoopBackOff → 看 Events 和 Conditions节点 NotReady → describe node 看资源压力和条件状态Service 访问不通 → describe service 检查 Endpoints 是否正常排查问题时我的习惯是先get看状态 → 状态异常就用describe看事件 → 事件指向具体原因后再用logs或exec深入。03 kubectl logs — 查看日志查看容器标准输出实时追踪应用日志。相当于docker logs的 K8s 版本。# 查看最近 100 行日志kubectl logspod-name--tail100# 实时跟踪日志类似 tail -fkubectl logs-fpod-name# 多容器 Pod 指定容器kubectl logspod-name-ccontainer-name# 查看前一个崩溃容器的日志Pod 重启后排查崩溃原因kubectl logspod-name--previous# 查看过去 30 分钟的日志kubectl logspod-name--since30m# 按时间戳查看日志kubectl logspod-name--timestamps实战场景应用启动失败 →--previous看崩溃前的日志实时追踪请求 →-f连续输出日志量太大 →--tail100只看最近或--since5m限定时间范围多容器 Pod → 必须用-c指定容器名否则报错对于生产环境建议配合 ELK/Loki 等集中式日志系统但紧急排错时kubectl logs仍然是最快的方式。04 kubectl exec — 进入容器在容器内执行命令相当于docker exec。调试应用、排查网络、检查配置时必备。# 进入容器 Shellkubectlexec-itpod-name-- /bin/bash kubectlexec-itpod-name-- /bin/sh# 精简镜像用 sh# 执行单条命令不进 Shellkubectlexecpod-name--ls/app kubectlexecpod-name--cat/etc/resolv.conf# 多容器 Pod 指定容器kubectlexec-itpod-name-ccontainer-name-- /bin/bash# 执行命令并获取返回码kubectlexecpod-name--curl-s-o/dev/null-w%{http_code}http://localhost:8080/health注意事项-it组合-istdin-ttty进交互式 Shell 必须加--分隔符后面才是容器内要执行的命令不能省略镜像可能没有 bash如 alpine此时用/bin/sh生产环境谨慎操作进容器后不要随意修改文件05 kubectl apply — 声明式部署应用 YAML 配置文件声明式管理资源。K8s 的核心操作方式。# 应用单个配置文件kubectl apply-fdeployment.yaml# 应用整个目录下的所有 YAMLkubectl apply-fk8s/# 使用 Kustomize多环境管理推荐kubectl apply-k./overlays/prod# 预览变更但不真正执行dry-runkubectl apply-fdeployment.yaml --dry-runclientapply vs create 的区别apply是声明式对比差异只更新变化部分资源存在就更新不存在就创建create是命令式资源已存在会报错生产环境推荐用apply配合 Git 做版本管理GitOps 的基础建议先用--dry-runclient和-o yaml验证配置正确性再正式执行。06 kubectl delete — 删除资源删除资源带确认提示。删除用 YAML 创建的资源时效率最高。# 删除单个 Podkubectl delete podpod-name# 按 YAML 文件删除删掉 apply 创建的所有资源kubectl delete-fdeployment.yaml# 按标签批量删除kubectl delete pods-lappnginx# 强制立即删除跳过优雅终止资源卡在 Terminating 时使用kubectl delete podpod-name--force--grace-period0# 删除 Deployment 及关联的 Podkubectl delete deploymentdeploy-name注意事项--force --grace-period0是最后手段跳过 preStop hook 和优雅终止仅在 Pod 长时间卡在 Terminating 时使用删除 Deployment 会自动删除关联的 ReplicaSet 和 Pod删除 Service 不会影响 Pod 本身只移除访问入口建议优先用delete -f yaml的方式清理不会漏删07 kubectl rollout — 滚动更新管理 Deployment 的滚动更新过程包括查看状态、查看历史、回滚操作。# 查看滚动更新进度kubectl rollout status deployment/deploy-name# 查看部署历史版本用于回滚kubectl rollouthistorydeployment/deploy-name# 回滚到上一个版本发版出问题时最快恢复方式kubectl rollout undo deployment/deploy-name# 回滚到指定版本kubectl rollout undo deployment/deploy-name--to-revision3# 暂停/恢复滚动更新分批次发布时使用kubectl rollout pause deployment/deploy-namekubectl rollout resume deployment/deploy-name实战场景更新镜像后 → 用rollout status实时监控进度新版本有问题 →rollout undo一键回滚秒级恢复分批灰度发布 →pause 手动验证 resume查看历史版本 →rollout history配合--revision查看具体变更rollout undo是运维的后悔药建议每次发布前先确认历史版本信息确保能快速回滚。08 kubectl scale — 扩缩容快速调整副本数应对流量变化或紧急情况。# 手动扩容kubectl scale deployment/deploy-name--replicas5# 一键缩到 0停止服务但保留配置节省成本kubectl scale deployment/deploy-name--replicas0# 查看当前副本数kubectl get deploymentdeploy-name-ojsonpath{.spec.replicas}应用场景流量突增 → 快速扩容分担压力节点维护 → 扩容到其他节点后缩容维护节点非核心服务 → 闲时缩到0节省资源配合 HPAHorizontalPodAutoscaler实现自动扩缩容scale作为手动应急手段注意区分scale和 HPAHPA 是自动的长期策略scale是手动干预的临时手段。两者可以共存。09 kubectl port-forward — 端口转发将集群内的 Pod 或 Service 端口映射到本地调试必备。# 转发 Pod 端口到本地kubectl port-forward pod/pod-name8080:80# 转发 Service 端口kubectl port-forward svc/svc-name8080:80# 后台运行加 kubectl port-forward pod/pod-name8080:80# 本地访问curlhttp://localhost:8080使用场景本地调试集群内服务无需暴露 NodePort 或 Ingress临时访问未暴露端口的内部服务如数据库、管理后台配合本地工具Postman、浏览器直接访问 K8s 内部服务端口转发会一直占用终端建议配合后台运行或另开终端port-forward不需要 Service/Ingress/NodePort直接通过 API Server 隧道连接是最轻量的访问方式。10 kubectl top — 资源使用查看 Pod 和节点的实时 CPU/内存消耗。# 查看节点资源使用kubectltopnodes# 查看 Pod 资源使用kubectltoppods# 按命名空间查看kubectltoppods-nnamespace# 按内存排序定位资源大户kubectltoppods --sort-bymemory# 按 CPU 排序kubectltoppods --sort-bycpu前置条件集群必须安装 metrics-server 组件才能使用kubectl top如果提示Metrics API not available说明 metrics-server 未安装或异常阿里云 ACK、华为云 CCE 等托管集群通常已内置top是快速定位资源瓶颈的第一步发现 CPU/内存异常后再用describe和logs深入排查。 额外技巧kubectl 别名 自动补全每天敲几百次kubectl一个简单的别名能省下大量按键次数。# 加到 ~/.bashrc 或 ~/.zshrc重新登录后生效aliaskkubectlaliaskgpkubectl get podsaliaskgdkubectl get deploymentaliaskgskubectl get servicealiaskdkubectl describealiasklkubectl logsaliaskekubectl exec -italiaskpfkubectl port-forwardaliaskakubectl apply -faliaskrmkubectl delete -f# 启用 kubectl 自动补全效率翻倍source(kubectl completionbash)# Bashsource(kubectl completionzsh)# Zsh别名使用建议别名完整命令用途kkubectl基础前缀kgpkubectl get pods查看 Podkdkubectl describe查看详情klkubectl logs查看日志kekubectl exec -it进容器kpfkubectl port-forward端口转发kakubectl apply -f应用配置krmkubectl delete -f删除资源总结这10条命令覆盖了日常运维 90% 的 kubectl 使用场景get/describe/logs/exec→ 日常排错四件套apply/delete→ 资源管理基本功rollout/scale→ 发布与扩缩容port-forward/top→ 调试和监控建议把常用参数形成肌肉记忆排错时不用再翻文档效率能提升不少。配合别名和自动补全每天能省好几百次按键。坚持练习每条命令敲3遍一周就能熟练掌握。