Kubernetes (K8s) 运维命令速查手册
·
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> | 删除指定的 Pod | K8s 随后会自动重建一个新的 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莫名不停重启等系统隐疾的终极手段 |
更多推荐


所有评论(0)