一份非常全面和实用的 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=prodenv=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 的权限

实用技巧与组合命令

  1. 快速排序和查询
    # 按重启次数排序查看 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
  1. 强制删除卡在 Terminating 状态的 Pod/Namespace
    # 注意:这是一个危险操作,仅在确定需要时使用
    kubectl delete pod <pod_name> --grace-period=0 --force
  1. 一键进入 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 这样的短命令了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐