Kubernetes 命令速查
使用场景
日常操作 K3s / K8s 集群时使用:查看资源、排查 Pod、进入容器、查看日志、操作 Deployment 与节点。本库集群为 215(server) + 214(worker) 的 K3s,需在对应节点用 sudo kubectl(zesheng 用户 ~/.kube/config 为空,215 上 kubectl 需 sudo)。
通用
kubectl get all -A # 所有命名空间所有资源
kubectl get <resource> -n <ns> # 指定命名空间
kubectl get <resource> -n <ns> -o wide # 宽输出(含节点/IP)
kubectl get <resource> -n <ns> -o yaml # YAML 详情
kubectl api-resources # 列出所有资源类型及简写
kubectl cluster-info # 集群信息
kubectl config get-contexts # 当前上下文Pod 排查
kubectl get pods -n <ns> -o wide
kubectl describe pod <pod> -n <ns> # 事件、调度、拉镜像失败
kubectl logs <pod> -n <ns> # 当前容器日志
kubectl logs <pod> -n <ns> -c <container> # 指定多容器中的某个
kubectl logs <pod> -n <ns> --previous # 上一次崩溃的日志
kubectl logs <pod> -n <ns> -f # 跟踪日志
kubectl exec -it <pod> -n <ns> -- /bin/bash # 进入交互 shell
kubectl exec <pod> -n <ns> -- <cmd> # 单条命令
kubectl top pod -n <ns> # 资源占用(需 metrics-server)
kubectl port-forward <pod> 8080:80 -n <ns> # 端口转发到本地kubectl exec
kubectl exec -it <pod> -n <ns> -- /bin/bash # 交互式进入 shell(最常用)
kubectl exec <pod> -n <ns> -- <cmd> # 执行单条命令(非交互)
kubectl exec <pod> -n <ns> -- /bin/bash -c "cat /etc/grafana/grafana.ini" # 单条命令带管道-i:保持 stdin 打开;-t:分配 TTY;两者组合-it才能交互。--:分隔符,左边是 kubectl 参数,右边是容器内要执行的命令,强烈建议加上。
多容器 Pod 指定容器(先查容器名):
kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.containers[*].name}'
kubectl exec -it <pod> -n <ns> -c <容器名> -- /bin/bash常见错误示例:
# ❌ 错误:缺 -it 无法交互,且未用 -- 分隔
kubectl exec monitoring-grafana-9b987b9ff-q5h5v /bin/bash
# ✅ 正确
kubectl exec -it monitoring-grafana-9b987b9ff-q5h5v -- /bin/bash本库监控类 Pod(Grafana / Prometheus / Alertmanager)通常用 Deployment 单容器,直接 -- /bin/bash 即可;多容器场景(如 istio-proxy sidecar)必须加 -c。
工作负载操作
kubectl apply -f <file>.yaml # 创建/更新
kubectl delete -f <file>.yaml # 删除
kubectl scale deployment <dep> -n <ns> --replicas=3
kubectl rollout status deployment <dep> -n <ns>
kubectl rollout restart deployment <dep> -n <ns> # 触发滚动重启
kubectl rollout undo deployment <dep> -n <ns> # 回滚上一版
kubectl rollout history deployment <dep> -n <ns> # 版本历史
kubectl set image deployment <dep> <c>=<img> -n <ns> # 改镜像
kubectl edit deployment <dep> -n <ns> # 在线编辑节点与集群
kubectl get nodes -o wide
kubectl describe node <node> # 资源、污点、事件
kubectl cordon <node> # 标记不可调度
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data # 排空(维护用)
kubectl uncordon <node> # 恢复调度
kubectl taint nodes <node> key=value:NoSchedule # 加污点
kubectl get ns # 命名空间
kubectl get events -n <ns> --sort-by=.lastTimestamp # 事件排序配置与密钥
kubectl get cm -n <ns> # ConfigMap
kubectl get secret -n <ns> # Secret
kubectl create secret generic <name> -n <ns> --from-literal=KEY=VAL
kubectl create configmap <name> -n <ns> --from-file=./config.conf
kubectl describe secret <name> -n <ns>Service / Ingress
kubectl get svc -n <ns>
kubectl get ingress -n <ns>
kubectl describe ingress <name> -n <ns>本库入口统一 Traefik,外部访问经 213 Nginx;访问故障需联合 DNS、Nginx、Traefik、Ingress、Service、Pod 排查。
删除与危险操作
kubectl delete pod <pod> -n <ns> # 普通删除
kubectl delete pod <pod> -n <ns> --force --grace-period=0 # 强制删除(卡 Terminating)
kubectl delete all -l app=<label> -n <ns> # 按标签批量删(危险)WARNING
批量删除、强制删除、drain 节点属于高风险操作,生产环境先确认影响。