附录B:kubectl 命令速查表 - Kubernetes 集群管理必备指南
💡 阅读提示:这份速查表整理了 Kubernetes 日常运维中最常用的 kubectl 命令,按使用场景分类,支持快速查找。建议收藏备用!
kubectl
是你与 Kubernetes 集群沟通的瑞士军刀。无论你是 Kubernetes 新手还是资深运维,掌握这些常用命令都是高效管理集群的关键。这份速查表将帮助你:
- ⚡ 快速定位所需命令
- 🎯 理解命令使用场景
- 🔧 提升故障排查效率
🚀 必知技巧:
- 📌 资源缩写 :
pods
→po
,services
→svc
,deployments
→deploy
,namespaces
→ns
- 🏷️ 命名空间 :使用
-n <namespace>
指定操作命名空间- 📊 详细信息 :使用
-o wide
输出更详细信息(如 Pod 所在节点 IP)- 👀 实时监控 :使用
-w
实时监控资源变化 (watch
)- 🎨 多种输出格式 :
-o yaml/json/wide/name
满足不同需求
🚀 5分钟快速入门:最常用的10个命令
⚡ 新手必会:这些命令覆盖了80%的日常使用场景
bash
# 1. 查看集群状态
kubectl cluster-info
# 2. 查看所有 Pod(当前命名空间)
kubectl get pods
# 3. 查看所有服务
kubectl get services
# 4. 查看 Pod 详细信息(排错必备)
kubectl describe pod <pod-name>
# 5. 查看 Pod 日志
kubectl logs <pod-name>
# 6. 实时跟踪日志
kubectl logs -f <pod-name>
# 7. 进入 Pod 容器调试
kubectl exec -it <pod-name> -- /bin/bash
# 8. 应用配置文件
kubectl apply -f <filename.yaml>
# 9. 删除资源
kubectl delete pod <pod-name>
# 10. 端口转发(本地调试)
kubectl port-forward <pod-name> 8080:80
📋 资源查看与管理 (Get & Describe)
🔍 使用场景:日常巡检、资源监控、问题定位
🔥 最常用的查看命令
bash
# 📌 基础资源查看(使用缩写更快捷)
kubectl get pods # 查看 Pod(当前命名空间)
kubectl get po -A # 查看所有命名空间的 Pod
kubectl get deploy # 查看 Deployment
kubectl get svc # 查看 Service
kubectl get ns # 查看命名空间
kubectl get nodes # 查看集群节点
# 🎯 进阶查看技巧
kubectl get pods -o wide # 显示 Pod 所在节点等详细信息
kubectl get pods -w # 实时监控 Pod 状态变化
kubectl get pods --show-labels # 显示 Pod 标签信息
kubectl get pods -l app=nginx # 按标签筛选 Pod
kubectl get all -n kube-system # 查看系统命名空间的所有资源
📊 资源详细信息查看
bash
# 🔍 describe 命令:排错必备神器
kubectl describe pod my-app-pod # 查看 Pod 详细信息和事件
kubectl describe deploy my-app # 查看 Deployment 详细信息
kubectl describe svc my-service # 查看 Service 详细信息
# 🏷️ 以不同格式输出资源定义
kubectl get pod my-app-pod -o yaml # YAML 格式(学习编写 YAML 很有用)
kubectl get pod my-app-pod -o json # JSON 格式
kubectl get pod my-app-pod -o name # 仅资源名称
🎯 更多查看技巧
bash
# 🔍 高级查询和筛选
kubectl get pods --field-selector=status.phase=Running # 按状态筛选
kubectl get pods --sort-by=.metadata.creationTimestamp # 按创建时间排序
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase # 自定义输出列
🚀 应用部署与管理 (Apply & Delete)
🎯 使用场景:应用发布、配置更新、资源清理
📦 配置文件操作
bash
# ✅ 应用配置文件(创建或更新资源)
kubectl apply -f app-deployment.yaml # 应用单个文件
kubectl apply -f ./configs/ # 应用整个目录下的所有 YAML 文件
kubectl apply -f app.yaml -f service.yaml # 同时应用多个文件
# 🔍 验证配置文件(不实际执行)
kubectl apply -f app.yaml --dry-run=client # 客户端验证
kubectl apply -f app.yaml --dry-run=server # 服务端验证
🗑️ 资源删除操作
bash
# ⚠️ 谨慎操作:删除是不可逆的
kubectl delete -f app-deployment.yaml # 根据配置文件删除资源
kubectl delete pod my-app-pod # 删除特定 Pod
kubectl delete deploy my-app # 删除 Deployment
kubectl delete svc my-service # 删除 Service
# 🚨 强制删除(慎用!)
kubectl delete pod my-app-pod --grace-period=0 --force
🛡️ 安全操作最佳实践
bash
# 🔒 使用标签精确控制删除范围
kubectl delete pods -l app=my-app # 只删除带有特定标签的 Pod
kubectl delete all -l env=test # 删除测试环境的所有资源
# ⚡ 批量操作技巧
kubectl delete pods --field-selector=status.phase=Failed # 删除所有失败的 Pod
⚙️ 应用更新与伸缩 (Rollout & Scale)
🔄 使用场景:版本发布、滚动更新、负载扩缩容
🚀 Deployment 滚动更新
bash
# 📈 查看发布历史和状态
kubectl rollout history deployment my-app # 查看发布历史
kubectl rollout status deployment my-app # 查看滚动更新状态
kubectl get rs -l app=my-app # 查看 ReplicaSet 历史版本
# ⏪ 版本回滚操作
kubectl rollout undo deployment my-app # 回滚到上一个版本
kubectl rollout undo deployment my-app --to-revision=3 # 回滚到指定版本
# 🔄 触发重新部署(如更新镜像)
kubectl set image deployment/my-app nginx=nginx:1.21 # 更新容器镜像
kubectl patch deployment my-app -p '{"spec":{"template":{"metadata":{"annotations":{"date":"'$(date +%s)'"}}}}}' # 触发重新部署
📊 手动扩缩容操作
bash
# 📈 手动调整副本数
kubectl scale deployment my-app --replicas=5 # 扩展到 5 个副本
kubectl scale deployment my-app --replicas=1 # 缩容到 1 个副本
# 🎯 基于资源指标的自动扩缩容(需要安装 metrics-server)
kubectl autoscale deployment my-app --min=2 --max=10 --cpu-percent=80 # CPU 使用率超过80%时自动扩容
# 📋 查看扩缩容状态
kubectl get hpa # 查看 HorizontalPodAutoscaler
kubectl top nodes # 查看节点资源使用情况
kubectl top pods # 查看 Pod 资源使用情况
-
查看 Deployment 的发布历史
bashkubectl rollout history deployment <deployment_name>
-
查看某次发布的详细信息
bashkubectl rollout history deployment <deployment_name> --revision=<revision_number>
-
回滚到上一个版本
bashkubectl rollout undo deployment <deployment_name>
-
回滚到指定版本
bashkubectl rollout undo deployment <deployment_name> --to-revision=<revision_number>
-
查看滚动更新的状态
bashkubectl rollout status deployment <deployment_name>
-
手动扩缩容
bash# 将 Deployment 的副本数扩展到 5 kubectl scale deployment <deployment_name> --replicas=5
🔍 调试与交互 (Logs & Exec)
🐛 使用场景:故障排查、日志分析、容器调试
📋 Pod 日志查看
bash
# 📄 基础日志查看
kubectl logs my-app-pod # 查看 Pod 日志
kubectl logs my-app-pod -c nginx # 多容器 Pod 查看特定容器日志
kubectl logs -f my-app-pod # 实时跟踪日志(类似 tail -f)
# 🕐 查看历史日志
kubectl logs my-app-pod --tail=100 # 查看最后100行日志
kubectl logs my-app-pod --since=1h # 查看最近1小时的日志
kubectl logs my-app-pod --since-time="2024-01-01T00:00:00Z" # 查看指定时间后的日志
# 🔄 查看之前容器的日志(容器重启后)
kubectl logs my-app-pod --previous # 查看上一个容器的日志
🔧 容器调试与交互
bash
# 💻 进入容器调试
kubectl exec -it my-app-pod -- /bin/bash # 进入容器交互式 Shell
kubectl exec -it my-app-pod -c nginx -- /bin/sh # 多容器指定容器进入
kubectl exec my-app-pod -- ls -la /app # 在容器中执行单个命令
# 📁 文件传输和查看
kubectl cp /local/path my-app-pod:/remote/path # 拷贝本地文件到 Pod
kubectl cp my-app-pod:/remote/path /local/path # 从 Pod 拷贝文件到本地
kubectl exec my-app-pod -- cat /etc/hosts # 查看容器内文件内容
# 🔍 网络调试
kubectl exec -it my-app-pod -- nslookup kubernetes.default # DNS 解析测试
kubectl exec -it my-app-pod -- ping 8.8.8.8 # 网络连通性测试
kubectl exec -it my-app-pod -- curl http://service-name # 服务访问测试
🌐 端口转发与代理
bash
# 🔗 端口转发(本地调试神器)
kubectl port-forward my-app-pod 8080:80 # 将本地8080转发到Pod的80端口
kubectl port-forward svc/my-service 8888:80 # 转发Service端口
kubectl port-forward my-app-pod 5000-6000:5000-6000 # 转发端口范围
# ⏱️ 后台端口转发
nohup kubectl port-forward my-app-pod 8080:80 > pf.log 2>&1 & # 后台运行端口转发
🏗️ 集群与配置 (Cluster & Config)
⚙️ 使用场景:集群管理、上下文切换、配置查看
🌐 集群信息查看
bash
# 🏢 基础集群信息
kubectl cluster-info # 查看集群基本信息
kubectl get nodes # 查看所有节点状态
kubectl get nodes -o wide # 查看节点详细信息
kubectl describe node worker-node-1 # 查看特定节点详细信息
# 📊 集群资源概览
kubectl get cs # 查看组件状态(API Server, Controller Manager, Scheduler)
kubectl get ns # 查看命名空间
kubectl api-resources # 查看支持的 API 资源类型
kubectl api-versions # 查看 API 版本信息
🔧 上下文和配置管理
bash
# 🎯 上下文操作
kubectl config current-context # 查看当前上下文
kubectl config get-contexts # 查看所有可用上下文
kubectl config use-context prod-cluster # 切换到生产环境集群
kubectl config view # 查看完整配置信息
# 🔑 用户和权限管理
kubectl config set-credentials admin --username=admin --password=secret # 设置用户凭据
kubectl auth can-i create pods # 检查当前用户权限
kubectl auth can-i "*" "*" --all-namespaces # 检查是否拥有全部权限
🚨 故障排查与高级技巧
🔧 使用场景:问题诊断、性能分析、高级调试
🔍 常用故障排查命令
bash
# ⚠️ Pod 问题排查
kubectl get events --sort-by='.lastTimestamp' # 按时间排序查看事件
kubectl get pods --all-namespaces | grep -v Running # 查找非运行状态的 Pod
kubectl describe pod my-app-pod | grep -A 5 -B 5 Error # 查找错误信息
# 🌐 网络问题排查
kubectl get endpoints my-service # 查看 Service 后端端点
kubectl get networkpolicy # 查看网络策略
kubectl exec -it my-app-pod -- netstat -tulpn # 查看网络连接
# 🔒 权限问题排查
kubectl auth can-i create pods --as=system:serviceaccount:default:my-sa # 检查 ServiceAccount 权限
🚀 高级技巧和实用命令
bash
# 📝 批量操作技巧
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{@.metadata.namespace}{"\t"}{@.metadata.name}{"\n"}{end}' # 批量获取 Pod 列表
kubectl delete pods --field-selector=status.phase=Failed --all-namespaces # 删除所有失败的 Pod
# 🏷️ 标签和注解操作
kubectl label pods my-app-pod env=production # 添加标签
kubectl annotate pods my-app-pod description="生产环境应用" # 添加注解
kubectl get pods --show-labels # 显示标签
kubectl get pods -l 'env in (production, staging)' # 标签选择器
# 📦 资源导出和备份
kubectl get deploy my-app -o yaml > my-app-backup.yaml # 导出资源配置
kubectl cluster-info dump --all-namespaces > cluster-dump.txt # 导出集群信息
📚 常用资源缩写对照表
完整名称 | 缩写 | 中文说明 |
---|---|---|
pods | po | Pod 实例 |
services | svc | 服务 |
deployments | deploy | 部署 |
namespaces | ns | 命名空间 |
nodes | no | 节点 |
configmaps | cm | 配置映射 |
secrets | sec | 密钥 |
persistentvolumes | pv | 持久化存储卷 |
persistentvolumeclaims | pvc | 存储卷声明 |
ingresses | ing | 入口网关 |
🎯 故障排查场景速查
Pod 启动失败的常见原因
- 镜像拉取失败 :
kubectl describe pod
查看 Events - 资源不足 :
kubectl describe nodes
查看资源使用情况 - 配置错误:检查 ConfigMap 和 Secret 是否存在
- 健康检查失败 :查看应用日志
kubectl logs
Service 访问问题的排查步骤
- 检查 Service 是否存在:
kubectl get svc
- 检查后端端点:
kubectl get endpoints
- 检查 Pod 标签是否匹配:
kubectl get pods --show-labels
- 网络连通性测试:
kubectl exec
进入 Pod 测试
💡 提示 :遇到问题时,首先使用
kubectl describe
查看详细信息和 Events,然后查看相关资源的日志!
-
查看集群信息
bashkubectl cluster-info
-
查看集群中的所有节点
bashkubectl get nodes
-
查看当前的上下文(连接的是哪个集群)
bashkubectl config current-context
-
查看所有可用的上下文
bashkubectl config get-contexts
-
切换上下文
bashkubectl config use-context <context_name>