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

附录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%的日常使用场景

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 的发布历史

    bash 复制代码
    kubectl rollout history deployment <deployment_name>
  • 查看某次发布的详细信息

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

    bash 复制代码
    kubectl rollout undo deployment <deployment_name>
  • 回滚到指定版本

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

    bash 复制代码
    kubectl 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 启动失败的常见原因

  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,然后查看相关资源的日志!

  • 查看集群信息

    bash 复制代码
    kubectl cluster-info
  • 查看集群中的所有节点

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

    bash 复制代码
    kubectl config current-context
  • 查看所有可用的上下文

    bash 复制代码
    kubectl config get-contexts
  • 切换上下文

    bash 复制代码
    kubectl config use-context <context_name>
相关推荐
码路工人3 小时前
附录A:常用 Docker 命令速查表
docker·云原生·容器
love530love3 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
zcz16071278214 小时前
Docker Compose 搭建 LNMP 环境并部署 WordPress 论坛
android·adb·docker
java之迷11 小时前
Windows环境下,源码启动+本地部署和启动开源项目Ragflow失败SRE模块
windows·docker·开源
致宏Rex13 小时前
Docker 实战教程(7) | 镜像管理和仓库操作
运维·docker·容器
罗技12313 小时前
不用每次都改 `easysearch.yml` 也能改启动参数 —— 用 Docker 环境变量搞定一切
docker·容器·eureka
你好龙卷风!!!14 小时前
SpringCloud,vue3应用使用AlibabaCloudToolkit自动化部署到远程服务器上的docker
云原生·自动化
落日漫游15 小时前
Kubernetes容器运行时:cri-docker vs containerd
docker·kubernetes
FIN666815 小时前
募投绘蓝图-昂瑞微的成长密码与未来布局
前端·后端·5g·云原生·信息与通信·射频工程·芯片