一份非常全面和实用的 Kubernetes (k8s) 常用命令合集
·

一份非常全面和实用的 Kubernetes (k8s) 常用命令合集,涵盖了从集群管理到故障排查的各个方面。

一、集群信息与上下文管理
这些命令用于查看集群状态和切换操作的目标集群/命名空间。
| 命令 | 说明 |
|---|---|
kubectl cluster-info |
显示集群主节点和服务的地址 |
kubectl version |
显示客户端和服务器端的版本信息 |
kubectl config view |
显示当前的 kubeconfig 配置 |
kubectl config get-contexts |
显示所有上下文(context)列表 |
kubectl config current-context |
显示当前正在使用的上下文 |
kubectl config use-context <context_name> |
切换到指定的上下文(集群/用户/命名空间) |
kubectl config set-context --current --namespace=<ns> |
为当前上下文设置默认的命名空间 |

二、资源查看 (Get & Describe)
这是最常用的命令组,用于获取资源的状态和详细信息。
| 命令 | 说明 |
|---|---|
kubectl get nodes |
查看所有节点状态 |
kubectl get nodes -o wide |
查看节点详细信息(IP、OS等) |
kubectl get pods |
查看默认命名空间下的所有 Pod |
kubectl get pods -n <namespace> |
查看指定命名空间下的所有 Pod |
kubectl get pods -A 或 --all-namespaces |
查看所有命名空间的 Pod |
kubectl get pods -o wide |
查看 Pod 的详细信息(IP、所在节点等) |
kubectl get svc |
查看 Service |
kubectl get deployments |
查看 Deployment |
kubectl get ingress |
查看 Ingress |
kubectl get all |
查看当前命名空间下的所有资源(Pod, Service, Deployment 等) |
kubectl get <resource> -o yaml |
以 YAML 格式显示资源定义 |
kubectl get <resource> -o json |
以 JSON 格式显示资源定义 |
kubectl describe node <node_name> |
查看节点的详细描述(事件、资源等) |
kubectl describe pod <pod_name> |
查看 Pod 的详细描述(状态、事件、容器等) |
kubectl describe svc <svc_name> |
查看 Service 的详细描述(Endpoints、Selector 等) |
三、创建与删除资源 (Apply & Delete)
通过声明式 YAML 文件或命令式创建资源。
| 命令 | 说明 |
|---|---|
kubectl apply -f <file.yaml> |
应用一个 YAML 配置文件(创建或更新资源) |
kubectl apply -f <directory/> |
应用某个目录下的所有 YAML 配置文件 |
kubectl create deployment <name> --image=<image> |
命令式创建一个 Deployment |
kubectl delete -f <file.yaml> |
删除通过 YAML 文件创建的资源 |
kubectl delete pod <pod_name> |
删除一个 Pod(Deployment 管理的会重建) |
kubectl delete deployment <deploy_name> |
删除一个 Deployment(其管理的 Pod 也会被删除) |
kubectl delete svc <svc_name> |
删除一个 Service |
四、Pod 故障排查与交互 (Logs & Exec)
当 Pod 出现问题时,这些命令是排查的关键。
| 命令 | 说明 |
|---|---|
kubectl logs <pod_name> |
查看 Pod 中第一个容器的日志 |
kubectl logs <pod_name> -c <container_name> |
查看 Pod 中指定容器的日志(多容器场景) |
kubectl logs -f <pod_name> |
实时流式输出 Pod 的日志(类似 tail -f) |
kubectl logs -f <pod_name> --previous |
查看上一个容器实例的日志(用于容器崩溃重启) |
kubectl exec -it <pod_name> -- /bin/sh |
在 Pod 的第一个容器中打开一个交互式 Shell |
kubectl exec -it <pod_name> -c <container_name> -- /bin/bash |
在 Pod 的指定容器中打开一个交互式 Bash |
kubectl port-forward <pod_name> <local_port>:<pod_port> |
将本地端口转发到 Pod 的端口,用于本地访问调试 |
五、部署与扩缩容 (Rollout & Scale)
管理 Deployment 的更新、回滚和副本数量。
| 命令 | 说明 |
|---|---|
kubectl scale deployment/<deploy_name> --replicas=3 |
将 Deployment 的副本数扩缩到 3 个 |
kubectl rollout status deployment/<deploy_name> |
查看 Deployment 的滚动更新状态 |
kubectl rollout history deployment/<deploy_name> |
查看 Deployment 的修订历史 |
kubectl rollout undo deployment/<deploy_name> |
回滚到上一个版本 |
kubectl rollout undo deployment/<deploy_name> --to-revision=2 |
回滚到指定的修订版本 |
六、标签与选择器 (Label & Selector)
使用标签来筛选和管理资源。
| 命令 | 说明 |
|---|---|
kubectl get pods --show-labels |
查看 Pod 及其标签 |
kubectl label pods <pod_name> env=prod |
给 Pod 添加标签 env=prod |
kubectl get pods -l app=nginx |
筛选带有标签 app=nginx 的 Pod |
kubectl get pods -l 'env in (prod, dev)' |
筛选带有标签 env=prod 或 env=dev 的 Pod |
七、高级命令与故障排查
| 命令 | 说明 |
|---|---|
kubectl top node |
显示节点的资源(CPU/Memory)使用情况 |
kubectl top pod |
显示 Pod 的资源使用情况 |
kubectl api-resources |
查看所有可用的 API 资源类型 |
kubectl api-versions |
查看所有可用的 API 版本 |
kubectl explain <resource> |
查看某个资源(如 Pod)的字段定义说明,写 YAML 时的好帮手 |
kubectl cp <pod_name>:/path/to/file . |
从 Pod 中拷贝文件到本地 |
kubectl auth can-i create deployments |
检查当前用户是否有创建 Deployments 的权限 |
实用技巧与组合命令
- 快速排序和查询
# 按重启次数排序查看 Pod(常用于找有问题的 Pod)
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'
# 按 CPU 使用率排序
kubectl top pods --sort-by=cpu
# 查看所有运行的 Pod
kubectl get pods --field-selector=status.phase=Running
- 强制删除卡在 Terminating 状态的 Pod/Namespace
# 注意:这是一个危险操作,仅在确定需要时使用
kubectl delete pod <pod_name> --grace-period=0 --force
- 一键进入 Pod 的 Shell(常用别名)
可以将以下别名添加到你的~/.bashrc或~/.zshrc中:
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgd='kubectl get deployments'
alias kaf='kubectl apply -f'
alias kexec='kubectl exec -it'
alias klogs='kubectl logs -f'
然后就可以使用 kexec my-pod -- /bin/sh 这样的短命令了。
更多推荐

所有评论(0)