附录B:kubectl 命令速查表 - Kubernetes 集群管理必备指南

221 阅读9分钟

附录B:kubectl 命令速查表 - Kubernetes 集群管理必备指南

💡 阅读提示:这份速查表整理了 Kubernetes 日常运维中最常用的 kubectl 命令,按使用场景分类,支持快速查找。建议收藏备用!

kubectl 是你与 Kubernetes 集群沟通的瑞士军刀。无论你是 Kubernetes 新手还是资深运维,掌握这些常用命令都是高效管理集群的关键。这份速查表将帮助你:

  • ⚡ 快速定位所需命令
  • 🎯 理解命令使用场景
  • 🔧 提升故障排查效率

🚀 必知技巧:

  • 📌 资源缩写podsposervicessvcdeploymentsdeploynamespacesns
  • 🏷️ 命名空间:使用 -n <namespace> 指定操作命名空间
  • 📊 详细信息:使用 -o wide 输出更详细信息(如 Pod 所在节点 IP)
  • 👀 实时监控:使用 -w 实时监控资源变化 (watch)
  • 🎨 多种输出格式-o yaml/json/wide/name 满足不同需求

🚀 5分钟快速入门:最常用的10个命令

新手必会:这些命令覆盖了80%的日常使用场景

# 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)

🔍 使用场景:日常巡检、资源监控、问题定位

🔥 最常用的查看命令

# 📌 基础资源查看(使用缩写更快捷)
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      # 查看系统命名空间的所有资源

📊 资源详细信息查看

# 🔍 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    # 仅资源名称

🎯 更多查看技巧

# 🔍 高级查询和筛选
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)

🎯 使用场景:应用发布、配置更新、资源清理

📦 配置文件操作

# ✅ 应用配置文件(创建或更新资源)
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   # 服务端验证

🗑️ 资源删除操作

# ⚠️ 谨慎操作:删除是不可逆的
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

🛡️ 安全操作最佳实践

# 🔒 使用标签精确控制删除范围
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 滚动更新

# 📈 查看发布历史和状态
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)'"}}}}}'  # 触发重新部署

📊 手动扩缩容操作

# 📈 手动调整副本数
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 的发布历史

    kubectl rollout history deployment <deployment_name>
    
  • 查看某次发布的详细信息

    kubectl rollout history deployment <deployment_name> --revision=<revision_number>
    
  • 回滚到上一个版本

    kubectl rollout undo deployment <deployment_name>
    
  • 回滚到指定版本

    kubectl rollout undo deployment <deployment_name> --to-revision=<revision_number>
    
  • 查看滚动更新的状态

    kubectl rollout status deployment <deployment_name>
    
  • 手动扩缩容

    # 将 Deployment 的副本数扩展到 5
    kubectl scale deployment <deployment_name> --replicas=5
    

🔍 调试与交互 (Logs & Exec)

🐛 使用场景:故障排查、日志分析、容器调试

📋 Pod 日志查看

# 📄 基础日志查看
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        # 查看上一个容器的日志

🔧 容器调试与交互

# 💻 进入容器调试
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    # 服务访问测试

🌐 端口转发与代理

# 🔗 端口转发(本地调试神器)
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)

⚙️ 使用场景:集群管理、上下文切换、配置查看

🌐 集群信息查看

# 🏢 基础集群信息
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 版本信息

🔧 上下文和配置管理

# 🎯 上下文操作
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  # 检查是否拥有全部权限

🚨 故障排查与高级技巧

🔧 使用场景:问题诊断、性能分析、高级调试

🔍 常用故障排查命令

# ⚠️ 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 权限

🚀 高级技巧和实用命令

# 📝 批量操作技巧
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  # 导出集群信息

📚 常用资源缩写对照表

完整名称缩写中文说明
podspoPod 实例
servicessvc服务
deploymentsdeploy部署
namespacesns命名空间
nodesno节点
configmapscm配置映射
secretssec密钥
persistentvolumespv持久化存储卷
persistentvolumeclaimspvc存储卷声明
ingressesing入口网关

🎯 故障排查场景速查

Pod 启动失败的常见原因

  1. 镜像拉取失败kubectl describe pod 查看 Events
  2. 资源不足kubectl describe nodes 查看资源使用情况
  3. 配置错误:检查 ConfigMap 和 Secret 是否存在
  4. 健康检查失败:查看应用日志 kubectl logs

Service 访问问题的排查步骤

  1. 检查 Service 是否存在:kubectl get svc
  2. 检查后端端点:kubectl get endpoints
  3. 检查 Pod 标签是否匹配:kubectl get pods --show-labels
  4. 网络连通性测试:kubectl exec 进入 Pod 测试

💡 提示:遇到问题时,首先使用 kubectl describe 查看详细信息和 Events,然后查看相关资源的日志!

  • 查看集群信息

    kubectl cluster-info
    
  • 查看集群中的所有节点

    kubectl get nodes
    
  • 查看当前的上下文(连接的是哪个集群)

    kubectl config current-context
    
  • 查看所有可用的上下文

    kubectl config get-contexts
    
  • 切换上下文

    kubectl config use-context <context_name>