以下是 kubectl 常用命令的全面总结,适用于日常 Kubernetes 集群管理、故障排查和应用部署。
🔧 一、基础命令(8个核心命令)
| 命令 | 说明 |
|---|---|
kubectl create |
创建资源(如 deployment、service) |
kubectl get |
获取资源列表(pod、deployment、service 等) |
kubectl describe |
查看资源详细信息(事件、状态、配置) |
kubectl delete |
删除资源 |
kubectl apply |
应用 YAML 配置文件(创建或更新) |
kubectl edit |
编辑运行中的资源(直接修改) |
kubectl logs |
查看 Pod 日志 |
kubectl exec |
进入 Pod 执行命令 |
📋 二、常用命令示例
kubectl 是 Kubernetes 的命令行工具,用于部署、管理、监控和故障排除 Kubernetes 集群中的应用。以下是 kubectl 的常用命令,按功能分类整理,方便日常使用:
一、基础信息查看 (Get)
# 查看所有命名空间下的 Pod
kubectl get pods -A
# 查看指定命名空间的 Pod
kubectl get pods -n <namespace>
# 查看所有节点
kubectl get nodes
# 查看所有命名空间
kubectl get namespaces
# 查看所有服务
kubectl get services -A
# 查看所有部署 (Deployments)
kubectl get deployments -A
# 查看所有副本集 (ReplicaSets)
kubectl get replicasets -A
# 查看所有 DaemonSets
kubectl get daemonsets -A
# 查看所有 StatefulSets
kubectl get statefulsets -A
# 查看所有 ConfigMaps 和 Secrets
kubectl get configmaps -A
kubectl get secrets -A
# 以宽格式查看(显示更多信息)
kubectl get pods -o wide
二、资源创建与应用
# 应用 YAML/JSON 文件(创建或更新资源)
kubectl apply -f <file.yaml>
# 创建 Deployment 或 Service 等资源(不推荐用于生产,建议用 apply)
kubectl create deployment <name> --image=<image>
# 从文件创建
kubectl create -f <file.yaml>
三、资源删除
# 删除 Pod(注意:Deployment 管理的 Pod 会被重建)
kubectl delete pod <pod-name> -n <namespace>
# 删除 Deployment
kubectl delete deployment <deployment-name> -n <namespace>
# 删除 Service
kubectl delete service <service-name> -n <namespace>
# 删除整个命名空间(慎用!会删除其中所有资源)
kubectl delete namespace <namespace-name>
# 通过标签删除资源
kubectl delete pods -l app=myapp -n <namespace>
四、查看资源详情与状态
# 查看 Pod 详细信息(包括事件、IP、容器等)
kubectl describe pod <pod-name> -n <namespace>
# 查看 Deployment 详情
kubectl describe deployment <deployment-name> -n <namespace>
# 查看节点详情
kubectl describe node <node-name>
五、日志与调试
# 查看 Pod 日志
kubectl logs <pod-name> -n <namespace>
# 查看指定容器的日志(多容器 Pod)
kubectl logs <pod-name> -c <container-name> -n <namespace>
# 实时查看日志(类似 tail -f)
kubectl logs -f <pod-name> -n <namespace>
# 查看上一个崩溃容器的日志
kubectl logs <pod-name> -p -n <namespace>
# 进入 Pod 容器(交互式 shell)
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
# 在 Pod 中执行单条命令
kubectl exec <pod-name> -n <namespace> -- ls /tmp
六、集群与配置管理
# 查看当前上下文(context)
kubectl config current-context
# 列出所有上下文
kubectl config get-contexts
# 切换上下文
kubectl config use-context <context-name>
# 查看集群信息
kubectl cluster-info
# 查看 kubectl 配置
kubectl config view
七、扩展与滚动更新
# 扩展 Deployment 的副本数
kubectl scale deployment <deployment-name> --replicas=5 -n <namespace>
# 滚动更新镜像
kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n <namespace>
# 查看滚动更新状态
kubectl rollout status deployment/<deployment-name> -n <namespace>
# 查看发布历史
kubectl rollout history deployment/<deployment-name> -n <namespace>
# 回滚到上一个版本
kubectl rollout undo deployment/<deployment-name> -n <namespace>
# 回滚到指定版本
kubectl rollout undo deployment/<deployment-name> --to-revision=2 -n <namespace>
八、端口转发与代理
# 将本地端口映射到 Pod
kubectl port-forward pod/<pod-name> 8080:80 -n <namespace>
# 将本地端口映射到 Service
kubectl port-forward svc/<service-name> 8080:80 -n <namespace>
# 启动本地代理访问 Kubernetes API
kubectl proxy
九、其他实用命令
# 查看资源使用情况(CPU/Memory)
kubectl top nodes
kubectl top pods -n <namespace>
# 标记节点为不可调度(用于维护)
kubectl cordon <node-name>
# 解除不可调度状态
kubectl uncordon <node-name>
# 排空节点(驱逐所有 Pod)
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
# 临时禁止调度(drain 的轻量版)
kubectl taint node <node-name> key=value:NoSchedule
十、常用选项 (Flags)
-
-n <namespace>:指定命名空间 -
-A或--all-namespaces:作用于所有命名空间 -
-l <label>:根据标签筛选资源 -
-o wide:显示更多列信息 -
-o yaml:以 YAML 格式输出 -
--dry-run=client:试运行(不实际执行)
| 目的 | 命令 |
|---|---|
| 查看 Pod | kubectl get pods -A |
| 查看日志 | kubectl logs -f pod-name |
| 进入容器 | kubectl exec -it pod-name -- /bin/sh |
| 查看详情 | kubectl describe pod pod-name |
| 回滚 | kubectl rollout undo deploy/deploy-name |
| 扩容 | kubectl scale deploy/my-app --replicas=3 |
| 端口转发 | kubectl port-forward svc/my-svc 8080:80 |
掌握这些命令,你已经可以应对 90% 的 Kubernetes 日常操作了!建议结合 kubectl --help 和 kubectl explain pod 等命令深入学习。