Kubernetes (K8s) 运维命令速查手册


前言

在现代云原生架构中,Kubernetes (K8s) 已经成为容器编排的事实标准。无论是开发环境的日常调试,还是生产环境的紧急排错,熟练掌握 kubectl 核心命令都是每个后端与运维工程师的必备技能。本文将全套命令统一整理为高可读性的表格格式,方便日常快速查阅。


一、基本环境与集群信息

用于查看集群状态、节点情况以及切换当前的集群上下文环境。

命令作用备注
kubectl version查看 kubectl 客户端和 K8s 集群的服务端版本检查版本兼容性
kubectl cluster-info查看集群主控节点及服务的运行状态确认集群网络是否通畅
kubectl get nodes查看集群中所有的 Node(节点) 状态检查节点是否处于 Ready 状态
kubectl config view查看当前本地的 kubeconfig 配置信息查看凭证与集群列表
kubectl config use-context <name>切换到指定的 K8s 集群环境(Context)多集群切换、生产/测试环境切换必备
kubectl get all获取当前命名空间下的所有资源包含 Pod、Service、Deployment 等

二、Pod 核心操作

Pod 是 K8s 的最小调度单元,排查状态、查看日志和容器交互频率最高。

命令作用备注
kubectl get pods -A查看当前命名空间下的所有 Pod 列表基础查看命令
kubectl get pods -o wide查看 Pod 列表并显示更多详细信息包含 Pod IP、所在宿主机节点等
kubectl get pod --field-selector=status.phase=Running仅查询当前处于 Running(运行中)状态的 Pod过滤掉报错或处于退出状态的 Pod
kubectl get pods -n <namespace>查看指定命名空间(Namespace)下的所有 Pod跨空间查看常用
kubectl describe pod <pod_name>查看某个 Pod 的详细元数据和历史事件排错神技!Pending 或 Crash 必看
kubectl logs <pod_name>查看某个 Pod 的标准输出(stdout)日志基础日志查看
kubectl logs -f <pod_name>实时滚动查看 Pod 的日志相当于 Linux 中的 tail -f
kubectl logs <pod_name> -c <container_name>如果 Pod 包含多个容器,指定其中一个容器查看日志多容器场景必备
kubectl exec -it <pod_name> -- /bin/sh进入容器内部(交互式 Shell)适用于轻量级镜像如 alpine, busybox
kubectl exec -it <pod_name> -- /bin/bash进入容器内部(交互式 Shell)适用于常见的标准 Linux 发行版
kubectl delete pod <pod_name>删除指定的 PodK8s 随后会自动重建一个新的 Pod
kubectl delete pod --all删除当前命名空间下的所有 Pod⚠️ 危险操作,谨慎使用

三、Deployment(无状态部署)操作

用于控制 Pod 的副本数量、滚动更新和版本回滚。

命令作用备注
kubectl create deployment <name> --image=<image>快速通过命令行创建一个 Deployment不推荐生产用,临时测试方便
kubectl get deployments查看当前所有的 Deployment 列表掌握服务编排概况
kubectl describe deployment <name>查看指定 Deployment 的详细运行状态与历史事件排查副本集不满足期望值的原因
kubectl scale deployment <name> --replicas=<num>动态扩缩容:手动调整 Pod 的副本数量应对突发流量时极速调整
kubectl rollout status deployment <name>查看当前滚动更新(UPGRADE)的进度状态监测新版本上线是否平稳完成
kubectl rollout undo deployment <name>一键回滚:将服务回滚到上一个稳定版本线上发版失败时快速止血
kubectl delete deployment <name>删除 Deployment 资源关联的下属 Pod 也会被自动安全同步删除

四、Service(服务发现与负载均衡)操作

用于将内部的 Pod 服务暴露给外部或者集群内部的其他组件。

命令作用备注
kubectl expose deployment <name> --type=NodePort --port=80将一个 Deployment 暴露为外部可访问的 NodePort 服务自动生成 Service 映射负载均衡
kubectl get services查看当前所有的 Service 列表简写为 kubectl get svc
kubectl describe service <name>查看某个 Service 的详细配置可以检查 Endpoints 是否正确绑定了后端 Pod
kubectl delete service <name>删除指定的 Service 资源删除后流量将无法通过该 Service 转发

五、ConfigMap 与 Secret(配置与密钥管理)

用于解耦应用程序的镜像与配置、凭证信息。

命令作用备注
kubectl create configmap <name> --from-literal=key=value命令行快速创建 ConfigMap(明文配置)简写为 cm
kubectl get configmap查看所有的 ConfigMap 列表
kubectl describe configmap <name>查看特定 ConfigMap 的配置项详情确认配置文件内容
kubectl delete configmap <name>删除指定的 ConfigMap
kubectl create secret generic <name> --from-literal=key=value命令行快速创建安全密钥(Base64 密文加密)用于密码、Token 等敏感信息
kubectl get secret查看所有的 Secret 密钥列表
kubectl describe secret <name>查看密钥元数据(不会直接显示明文密码)
kubectl delete secret <name>删除指定的 Secret 密钥

六、Namespace(命名空间)资源隔离

命令作用备注
kubectl get namespaces查看集群中所有的命名空间隔离区简写为 kubectl get ns
kubectl create namespace <name>创建一个新的命名空间用于划分不同的项目或环境
kubectl delete namespace <name>删除一个命名空间⚠️ 注意:该空间下的所有资源都会被同步清空
kubectl config set-context --current --namespace=<name>切换当前终端的默认命名空间切换后后续操作无需反复追加 -n <ns>

七、声明式 YAML 文件管理

生产环境中推荐的“基础设施即代码(IaC)”管理方案。

命令作用备注
kubectl apply -f <file>.yaml通过 YAML 配置文件创建或更新资源最常用,具备幂等性(自动判断增量更新)
kubectl delete -f <file>.yaml通过 YAML 配置文件删除对应的所有资源批量销毁非常方便
kubectl get -f <file>.yaml查看该 YAML 文件定义的资源当前在集群中的实时状态快速对齐本地文件与集群实际状态
kubectl edit -f <file>.yaml直接在线编辑集群中该资源的 YAML 配置保存后立即生效,适合临时紧急调试

八、运维与高级实用工具

高级排错、流量转发及节点维护时的杀手锏工具。

命令作用备注
kubectl top node实时查看各个**节点(Node)**的 CPU 和内存资源消耗情况需集群安装 Metrics Server 插件
kubectl top pod实时查看各个Pod的 CPU 和内存资源消耗情况排查哪个 Pod 在疯狂吃系统资源
kubectl cp <pod>:<file> <local>从远端 Pod 内部拷贝文件到本地电脑路径排查生成日志、Dump 堆栈文件时极度实用
kubectl cp <local> <pod>:<file>从本地电脑拷贝文件到远端 Pod 内部路径临时塞入测试配置文件或补丁
kubectl port-forward <pod> 8080:80将本地的 8080 端口流量直接转发到 Pod 的 80 端口本地调试利器,免去配置外部访问网关的麻烦
kubectl cordon <node>标记某节点为不可调度(Unschedulable)新的 Pod 将不会被分配到该服务器上
kubectl drain <node> --ignore-daemonsets安全地驱逐该节点上的所有现有 Pod 到其他节点服务器硬件维护、系统重启前必做准备工作
kubectl uncordon <node>取消不可调度标记,允许节点重新接受新 Pod 分配维护完成后使节点重回集群调度
kubectl taint nodes <node> key=value:NoSchedule给节点打上污点(Taint)只有显式配置了容忍度(Tolerations)的 Pod 才能运行
kubectl get events --sort-by=.metadata.creationTimestamp按创建时间排序,查看集群中最新发生的所有全局事件找节点闪断、Pod莫名不停重启等系统隐疾的终极手段

更多推荐