kubectl 常用命令 - 码剑客

上下文与命名空间、资源查看、日志排查、滚动发布与节点维护的高频命令,含误操作风险提示。

kubectl 1.29+更新于 2026-10-29共 32 条

上下文与命名空间

列出全部上下文,星号标记当前使用的集群

kubectl config get-contexts

切换上下文,后续命令都作用于该集群

kubectl config use-context prod

为当前上下文设置默认命名空间

kubectl config set-context --current --namespace=<NS>

确认当前生效的命名空间

kubectl config view --minify -o jsonpath='{..namespace}'

不设置时会落到 default,跨环境操作务必显式加 -n

列出集群内全部命名空间

kubectl get ns

查看资源

查看 Pod 状态、所在节点与 IP

kubectl get pods -n <NS> -o wide

一次查看该命名空间的主要资源

kubectl get all -n <NS>

查看事件、镜像、挂载与探针详情

kubectl describe pod <POD> -n <NS>

按时间排序查看事件,定位调度与拉镜像失败

kubectl get events -n <NS> --sort-by=.lastTimestamp

输出完整 YAML,便于比对与备份

kubectl get pod <POD> -n <NS> -o yaml

日志与容器

实时跟踪容器最近 100 行日志

kubectl logs -f --tail=100 <POD> -n <NS> -c <CONTAINER>

多容器 Pod 必须用 -c 指定,否则命令报错

查看上次崩溃前的日志,排查重启原因

kubectl logs <POD> -n <NS> --previous

进入容器排查,精简镜像可能没有 bash

kubectl exec -it <POD> -n <NS> -- sh

把集群内服务端口映射到本地调试

kubectl port-forward svc/<SVC> 8080:80 -n <NS>

在 Pod 与本地之间复制文件

kubectl cp <NS>/<POD>:/var/log/app.log ./app.log

容器内需有 tar,否则复制会失败

部署与滚动更新

快速创建 Deployment 用于验证

kubectl create deployment my-app --image=nginx:1.25 --replicas=2 -n <NS>

更新镜像并触发滚动升级

kubectl set image deployment/my-app my-app=nginx:1.26 -n <NS>

等待并观察滚动更新进度

kubectl rollout status deployment/my-app -n <NS>

滚动重启,不改变镜像版本

kubectl rollout restart deployment/my-app -n <NS>

回滚到上一版本,可用 --to-revision 指定

kubectl rollout undo deployment/my-app -n <NS>

调整副本数,先确认节点资源余量

kubectl scale deployment/my-app --replicas=4 -n <NS>

排查与节点维护

查看 Pod 内存占用并排序

kubectl top pod -n <NS> --sort-by=memory

查看节点资源分配、污点与已绑定 Pod

kubectl describe node <NODE>

标记节点不可调度,现有 Pod 继续运行

kubectl cordon <NODE>
高危

驱逐节点上全部 Pod,操作前确认副本与 PDB

kubectl drain <NODE> --ignore-daemonsets --delete-emptydir-data

单副本服务会中断,维护完记得 uncordon

恢复节点调度能力

kubectl uncordon <NODE>
高危

删除 Pod 触发重建,需由控制器管理才安全

kubectl delete pod <POD> -n <NS>

无控制器管理的 Pod 删除后不会重建

配置与清单

把配置文件写入 ConfigMap

kubectl create configmap app-config --from-file=app.conf -n <NS>

创建 Secret,值会留在 shell 历史里

kubectl create secret generic app-secret --from-literal=password=<PASSWORD> -n <NS>

更安全的做法是用 --from-file 或标准输入

按清单创建或更新资源

kubectl apply -f deployment.yaml -n <NS>

预先查看 apply 会带来哪些变更

kubectl diff -f deployment.yaml -n <NS>
高危

删除清单内全部资源,删除前先 diff 确认

kubectl delete -f deployment.yaml -n <NS>

误删的资源通常无法直接恢复

相关工具

本网站使用 Cookie 以确保您在我们的网站上获得最佳体验。 隐私政策.