☸️

Kubernetes 命令速查

kubectl 常用命令速查,覆盖 Pod、部署、服务、排障与节点维护

🔍
64 条命令

🖥️ 集群与上下文

kubectl cluster-info

查看集群控制平面与核心服务地址

示例kubectl cluster-info
kubectl config get-contexts

列出所有集群上下文,当前使用的带 * 标记

示例kubectl config get-contexts
kubectl config use-context <上下文>

切换到指定集群上下文

示例kubectl config use-context prod-cluster
kubectl config current-context

查看当前正在操作的集群

示例kubectl config current-context
kubectl api-resources

列出集群支持的所有资源类型及缩写

示例kubectl api-resources
kubectl get namespaces

列出所有命名空间

示例kubectl get ns
kubectl version --short

查看客户端与服务端版本,判断兼容性

示例kubectl version --short

🔍 查看资源

kubectl get pods -A

查看所有命名空间的 Pod

示例kubectl get pods -A
kubectl get pod -n <命名空间> -w

持续监视 Pod 状态变化

示例kubectl get pod -n default -w
kubectl get pod -o wide

额外显示 Pod 所在节点与 IP

示例kubectl get pod -o wide
kubectl describe pod <Pod名>

查看 Pod 详情,排障时重点看 Events 段

示例kubectl describe pod nginx-7d8b
kubectl get all -n <命名空间>

一次性列出该命名空间下所有常见资源

示例kubectl get all -n prod
kubectl get pod -l app=<标签>

按标签筛选资源

示例kubectl get pod -l app=nginx
kubectl get deployments.apps -o yaml

导出资源完整 YAML,便于对照或迁移

示例kubectl get deploy nginx -o yaml
kubectl explain <资源>.<字段>

查看字段含义与层级,写 YAML 时很管用

示例kubectl explain pod.spec.containers

📦 Pod 操作

kubectl run <名> --image=<镜像>

快速创建一个单容器 Pod(临时调试用)

示例kubectl run tmp --image=busybox -- sleep 3600
kubectl exec -it <Pod名> -- sh

进入容器执行命令,容器无 sh 时改用 bash

示例kubectl exec -it nginx-7d8b -- sh
kubectl logs <Pod名>

查看容器日志,多容器需加 -c 指定容器名

示例kubectl logs nginx-7d8b -c nginx
kubectl logs -f --tail 200 <Pod名>

实时跟踪最后 200 行日志

示例kubectl logs -f --tail 200 nginx-7d8b
kubectl logs <Pod名> --previous

查看崩溃前一次容器的日志,排查 CrashLoopBackOff

示例kubectl logs nginx-7d8b --previous
kubectl delete pod <Pod名> --force --grace-period=0

强制立即删除卡住的 Pod,慎用

示例kubectl delete pod nginx-7d8b --force --grace-period=0
kubectl cp <Pod名>:<路径> <本地路径>

在 Pod 与本地之间拷贝文件

示例kubectl cp nginx-7d8b:/etc/nginx/nginx.conf ./nginx.conf
kubectl debug -it <Pod名> --image=busybox

注入临时调试容器,适合 distroless 镜像

示例kubectl debug -it nginx-7d8b --image=busybox --target=nginx

🚀 部署与扩缩容

kubectl create deployment <名> --image=<镜像>

创建 Deployment 并生成 ReplicaSet

示例kubectl create deployment nginx --image=nginx:1.25
kubectl apply -f <文件>

按 YAML 声明式应用配置,推荐的生产方式

示例kubectl apply -f deployment.yaml
kubectl apply -f <目录>

应用目录下所有 YAML,加 -R 递归子目录

示例kubectl apply -f ./manifests/
kubectl scale deployment <名> --replicas=<数>

手动调整副本数

示例kubectl scale deploy nginx --replicas=5
kubectl autoscale deployment <名> --min=2 --max=10 --cpu-percent=80

创建 HPA,按 CPU 使用率自动扩缩

示例kubectl autoscale deploy nginx --min=2 --max=10 --cpu-percent=80
kubectl set image deployment/<名> <容器>=<镜像>

滚动更新容器镜像版本

示例kubectl set image deploy/nginx nginx=nginx:1.26
kubectl rollout status deployment/<名>

跟踪滚动更新进度直至完成

示例kubectl rollout status deploy/nginx
kubectl rollout history deployment/<名>

查看历史版本记录

示例kubectl rollout history deploy/nginx
kubectl rollout undo deployment/<名>

回滚到上一个版本,加 --to-revision=N 指定版本

示例kubectl rollout undo deploy/nginx --to-revision=2
kubectl rollout restart deployment/<名>

触发重启(等同更新一次模板注解),用于重载配置

示例kubectl rollout restart deploy/nginx

🌐 服务与网络

kubectl expose deployment <名> --port=<端口>

为 Deployment 创建 Service

示例kubectl expose deploy nginx --port=80 --target-port=80
kubectl get svc,ep -n <命名空间>

同时查看 Service 与后端 Endpoints,排查无可用后端

示例kubectl get svc,ep -n prod
kubectl get ingress -A

查看所有 Ingress 路由规则

示例kubectl get ingress -A
kubectl port-forward svc/<服务名> 8080:80

把集群服务转发到本地,临时调试用

示例kubectl port-forward svc/nginx 8080:80
kubectl proxy

开启本地 API 代理,可直接访问集群内资源

示例kubectl proxy --port=8001
kubectl get networkpolicy -A

查看网络策略,确认是否拦截了流量

示例kubectl get networkpolicy -A

🔐 配置与密钥

kubectl create configmap <名> --from-literal=<键>=<值>

从字面量创建 ConfigMap

示例kubectl create configmap appcfg --from-literal=LOG_LEVEL=debug
kubectl create configmap <名> --from-file=<路径>

从文件创建,文件名即键名

示例kubectl create configmap nginx-conf --from-file=./nginx.conf
kubectl create secret generic <名> --from-literal=<键>=<值>

创建通用 Secret,值会被 base64 编码存储

示例kubectl create secret generic dbpass --from-literal=password=S3cret
kubectl create secret docker-registry <名>

创建拉取私有镜像用的 imagePullSecrets

示例kubectl create secret docker-registry regcred --docker-server=reg.com --docker-username=u --docker-password=p
kubectl get secret <名> -o jsonpath="{.data.<键>}" | base64 -d

解码查看 Secret 明文内容

示例kubectl get secret dbpass -o jsonpath="{.data.password}" | base64 -d
kubectl edit configmap <名>

在线编辑配置,保存后需重启 Pod 才生效

示例kubectl edit configmap appcfg

🩺 故障排查

kubectl describe pod <Pod名> | grep -A20 Events

只看事件段,定位调度失败或拉取镜像失败原因

示例kubectl describe pod nginx-7d8b | grep -A20 Events
kubectl get events -A --sort-by=.lastTimestamp

按时间查看全集群事件,追事故首选

示例kubectl get events -A --sort-by=.lastTimestamp
kubectl top pod -A

查看 Pod 实时资源占用,需安装 metrics-server

示例kubectl top pod -A
kubectl top node

查看节点资源占用,判断是否需要扩容

示例kubectl top node
kubectl describe node <节点名>

查看节点资源分配与污点,排查 Pending

示例kubectl describe node node-1
kubectl get pod --field-selector status.phase=Pending

筛选处于 Pending 状态的 Pod

示例kubectl get pod -A --field-selector status.phase=Pending
kubectl delete pod -l app=<标签> --field-selector status.phase=Failed

批量清理失败状态的 Pod

示例kubectl delete pod -l app=nginx --field-selector status.phase=Failed
kubectl get crd

查看集群已安装的自定义资源(CRD)

示例kubectl get crd

🔧 节点维护

kubectl cordon <节点名>

标记节点不可调度,已有 Pod 不受影响

示例kubectl cordon node-1
kubectl drain <节点名> --ignore-daemonsets --delete-emptydir-data

排空节点上所有 Pod,下线前必须操作

示例kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon <节点名>

恢复节点可调度状态

示例kubectl uncordon node-1
kubectl taint nodes <节点名> <键>=<值>:NoSchedule

给节点打污点,只有带对应容忍的 Pod 能调度

示例kubectl taint nodes node-1 dedicated=gpu:NoSchedule
kubectl label nodes <节点名> <键>=<值>

给节点打标签,配合 nodeSelector 使用

示例kubectl label nodes node-1 role=worker

🛡️ 权限与资源清理

kubectl auth can-i <动词> <资源>

检查当前用户是否有某项操作权限

示例kubectl auth can-i delete pods
kubectl auth can-i <动词> <资源> --as=<用户>

模拟指定用户做权限校验

示例kubectl auth can-i get secrets --as=system:serviceaccount:default:app
kubectl get rolebindings,clusterrolebindings -A

查看 RBAC 授权绑定关系

示例kubectl get rolebindings,clusterrolebindings -A
kubectl delete -f <文件>

按 YAML 删除已创建的资源

示例kubectl delete -f deployment.yaml
kubectl delete all -l app=<标签>

按标签批量删除该应用的所有资源

示例kubectl delete all -l app=nginx
kubectl get pods -A | awk '/Evicted/{print $2" -n "$1}' | xargs -n3 kubectl delete pod

批量清理被驱逐的历史 Pod 记录

示例kubectl get pods -A | awk '/Evicted/{print $2" -n "$1}' | xargs -n3 kubectl delete pod

Kubernetes 命令速查怎么用

kubectl 常用命令速查:Pod、Deployment、Service、日志与排错,覆盖日常运维场景。

  1. 按场景搜索命令
  2. 点击复制
  3. 替换命名空间与资源名

小贴士生产环境操作前先加 --dry-run 或 kubectl diff 预演一遍。

Kubernetes 命令速查常见问题

Kubernetes 命令速查是免费的吗?

完全免费,无需注册登录,也不限使用次数。997 工具箱所有工具都不收费。

使用Kubernetes 命令速查会把我的数据上传到服务器吗?

不会。Kubernetes 命令速查在浏览器本地完成计算,输入的文本和文件都不会离开你的设备,页面关闭后数据即消失。

Kubernetes 命令速查在手机上能用吗?

可以。页面做了移动端适配,手机和平板的浏览器打开同样能正常使用,也不需要安装任何 App。