适合对象:云原生工程师、运维工程师、DevOps 工程师、新手学习者
目的:掌握 K8s 高级命令与应用场景,实现快速排障与高效管理集群
一、集群级管理命令(Cluster Scope)
|
场景 |
命令 |
说明 |
|
查看所有集群上下文 |
kubectl config get-contexts |
查看 kubeconfig 中的所有集群上下文 |
|
切换集群上下文 |
kubectl config use-context <context_name> |
快速切换不同集群 |
|
查看当前上下文 |
kubectl config current-context |
确认当前操作集群 |
|
查看集群信息 |
kubectl cluster-info |
集群健康状态、API Server 等 |
|
查看节点及状态 |
kubectl get nodes -o wide |
获取节点 IP、角色、版本等 |
|
获取节点详细信息 |
kubectl describe node <node_name> |
查看节点 CPU/内存资源详情 |
|
标记节点不可调度 |
kubectl cordon <node_name> |
临时停止在此节点调度 |
|
解除不可调度 |
kubectl uncordon <node_name> |
恢复调度 |
|
排空节点 |
kubectl drain <node_name> –ignore-daemonsets |
升级或维护前排空节点 |
|
获取集群版本 |
kubectl version –short |
查看客户端/服务端版本 |
二、Pod 高级管理命令
|
场景 |
命令 |
说明 |
|
查看所有命名空间 Pod |
kubectl get pods –all-namespaces -o wide |
全局 Pod 状态 |
|
查看 Pod 详细信息 |
kubectl describe pod <pod_name> |
深入调试 |
|
查看 Pod 日志(单容器) |
kubectl logs <pod_name> |
输出容器日志 |
|
查看 Pod 日志(多容器) |
kubectl logs <pod_name> -c <container_name> |
指定容器日志 |
|
实时查看日志 |
kubectl logs -f <pod_name> |
持续输出日志 |
|
进入 Pod 容器交互 |
kubectl exec -it <pod_name> — /bin/bash |
调试容器内部 |
|
复制文件到 Pod |
kubectl cp ./file <namespace>/<pod_name>:/path |
快速传文件 |
|
Pod 滚动重启 |
kubectl rollout restart deployment <deployment_name> |
无停机更新 Pod |
|
查看 Pod 事件 |
kubectl get events –sort-by=.metadata.creationTimestamp |
定位异常 |
|
删除异常 Pod |
kubectl delete pod <pod_name> –grace-period=0 –force |
强制删除 |
三、Deployment & ReplicaSet 高级命令
|
场景 |
命令 |
说明 |
|
查看所有 Deployment |
kubectl get deployment -o wide |
应用部署概览 |
|
查看 Deployment 历史版本 |
kubectl rollout history deployment <deployment_name> |
查看历史修订 |
|
回滚到上一个版本 |
kubectl rollout undo deployment <deployment_name> |
回滚 |
|
缩容 |
kubectl scale deployment <deployment_name> –replicas=2 |
改副本数 |
|
滚动更新状态 |
kubectl rollout status deployment <deployment_name> |
监控更新进度 |
|
强制更新镜像 |
kubectl set image deployment/<deployment_name> <container>=<new_image> |
快速更新 |
四、Service & Ingress 高级命令
|
场景 |
命令 |
说明 |
|
查看所有 Service |
kubectl get svc -o wide |
服务概览 |
|
查看 Endpoints |
kubectl get endpoints |
关联 Pod |
|
查看 Ingress |
kubectl get ingress |
查看入口流量规则 |
|
查看 Service YAML |
kubectl get svc <service_name> -o yaml |
导出配置 |
|
强制刷新 DNS 缓存 |
kubectl exec -it <pod_name> — nslookup <service_name> |
测试服务解析 |
五、命名空间 & RBAC 管理
|
场景 |
命令 |
说明 |
|
查看所有命名空间 |
kubectl get ns |
查看资源隔离 |
|
创建命名空间 |
kubectl create ns <namespace_name> |
|
|
删除命名空间 |
kubectl delete ns <namespace_name> |
|
|
查看角色 |
kubectl get role -n <namespace> |
查看权限控制 |
|
查看角色绑定 |
kubectl get rolebinding -n <namespace> |
六、资源 YAML 快速操作
|
场景 |
命令 |
说明 |
|
导出资源到文件 |
kubectl get <resource> <name> -o yaml > file.yaml |
|
|
直接应用 YAML |
kubectl apply -f file.yaml |
快速更新 |
|
强制重新创建资源 |
kubectl replace –force -f file.yaml |
七、排障与调试
|
场景 |
命令 |
说明 |
|
查看事件 |
kubectl get events -A |
集群异常信息 |
|
查看 Pod Metrics |
kubectl top pod -A |
需安装 metrics-server |
|
查看节点 Metrics |
kubectl top nodes |
CPU/内存 |
|
端口转发调试 |
kubectl port-forward <pod_name> 8080:80 |
本地访问 Pod |
|
测试网络连通性 |
kubectl exec -it <pod_name> — curl <service_name>:<port> |
八、常见自动化与脚本化
批量重启所有 Deployment:
for deploy in $(kubectl get deploy -n myns -o jsonpath='{.items[*].metadata.name}'); do
kubectl rollout restart deploy $deploy -n myns
done
批量删除 CrashLoopBackOff Pod:
kubectl get pods –all-namespaces | grep CrashLoopBackOff | awk '{print $2,$1}' | xargs -n2 sh -c 'kubectl delete pod $0 -n $1'
九、工具推荐
|
工具 |
说明 |
|
kubectx |
快速切换上下文和命名空间 |
|
stern |
多 Pod 日志聚合查看 |
|
k9s |
终端图形化管理 K8s |
|
Lens |
桌面 GUI 工具管理 K8s |
十、总结
- 通过掌握以上 100 条命令,可以覆盖日常 90% 的 Kubernetes 管理需求
- 配合工具(如 k9s、Lens)能大幅提升排障效率
- 多使用 kubectl explain 和 kubectl get -o yaml 深入理解资源


















- 最新
- 最热
只看作者