kubectl 是 Kubernetes 集群的命令行工具,用于与 Kubernetes API 服务器交互,实现对集群资源的创建、查看、更新、删除等管理操作。其核心用途包括:部署应用程序、查看和管理集群资源、检查集群状态、调试问题、配置集群参数等。
以下是 kubectl 常用命令的分类汇总:
一、集群信息查看
用于了解集群整体状态、节点信息等基础情况。
-
kubectl get nodes
查看集群中所有节点的状态(运行中、就绪等)。
示例:kubectl get nodes -o wide
(-o wide
显示更多详情,如节点 IP)。 -
kubectl cluster-info
查看集群的核心组件(如 API Server、etcd、kubelet 等)的地址和状态。 -
kubectl describe node <节点名称>
查看指定节点的详细信息(如资源分配、运行的 Pod、标签等)。
二、工作负载管理
工作负载是 Kubernetes 中运行的应用实例集合,包括 Pod、Deployment、StatefulSet 等。
1. 查看工作负载
-
kubectl get pods
查看当前命名空间下的所有 Pod 状态(运行中、 pending、失败等)。
示例:kubectl get pods -n <命名空间>
(-n
指定命名空间,默认是default
)。 -
kubectl get deployments
查看 Deployment 资源(用于管理无状态应用的 Pod)。 -
kubectl get statefulsets
查看 StatefulSet 资源(用于管理有状态应用的 Pod,如数据库)。 -
kubectl get replicasets
查看 ReplicaSet 资源(用于确保指定数量的 Pod 副本运行)。
2. 操作工作负载
-
kubectl apply -f <yaml文件路径>
通过 YAML/JSON 配置文件创建或更新资源(最常用的部署方式,支持 “声明式” 管理)。
示例:kubectl apply -f deployment.yaml
(部署应用)。 -
kubectl create deployment <名称> --image=<镜像名>
快速创建一个 Deployment(命令式创建,适用于临时测试)。
示例:kubectl create deployment nginx --image=nginx:1.21
。 -
kubectl delete pod <pod名称>
删除指定 Pod(若由 Deployment 管理,会自动重建新 Pod)。 -
kubectl delete deployment <deployment名称>
删除指定 Deployment(会同时删除其管理的所有 Pod)。 -
kubectl scale deployment <deployment名称> --replicas=<数量>
调整 Deployment 的 Pod 副本数量(扩缩容)。
示例:kubectl scale deployment nginx --replicas=3
(扩到 3 个副本)。
三、服务与网络
用于管理应用的网络访问(如暴露服务、查看网络规则等)。
-
kubectl get services
(缩写kubectl get svc
)
查看集群中的 Service 资源(用于暴露 Pod 供内部 / 外部访问)。 -
kubectl expose deployment <deployment名称> --port=<端口> --type=<类型>
为 Deployment 创建 Service,暴露端口供访问。
示例:kubectl expose deployment nginx --port=80 --type=NodePort
(NodePort 类型允许外部通过节点端口访问)。 -
kubectl get ingresses
(缩写kubectl get ing
)
查看 Ingress 资源(用于管理外部访问集群内服务的规则,如域名路由)。
四、配置与存储
-
kubectl get configmaps
(缩写kubectl get cm
)
查看 ConfigMap 资源(用于存储非敏感配置数据,供 Pod 挂载使用)。 -
kubectl get secrets
查看 Secret 资源(用于存储敏感信息,如密码、证书,会被加密存储)。 -
kubectl get persistentvolumes
(缩写kubectl get pv
)
查看集群中的持久卷(PV,集群级别的存储资源)。 -
kubectl get persistentvolumeclaims
(缩写kubectl get pvc
)
查看持久卷声明(PVC,Pod 对存储资源的请求,与 PV 绑定使用)。
五、资源详情与调试
-
kubectl describe pod <pod名称>
查看 Pod 的详细信息(如事件、容器状态、挂载的存储等,常用于排查 Pod 启动失败问题)。 -
kubectl logs <pod名称>
(缩写kubectl logs <pod名>
)
查看 Pod 中容器的日志(默认第一个容器)。
示例:kubectl logs <pod名> -c <容器名>
(指定容器);kubectl logs <pod名> -f
(实时跟踪日志)。 -
kubectl exec -it <pod名称> -- <命令>
进入 Pod 的容器内部执行命令(类似 SSH 登录)。
示例:kubectl exec -it nginx-pod -- /bin/bash
(进入 nginx 容器的 bash 终端)。 -
kubectl top pods
查看 Pod 的资源使用情况(CPU、内存)。 -
kubectl top nodes
查看节点的资源使用情况。
六、其他常用命令
-
kubectl config view
查看当前 kubectl 配置(集群地址、认证信息等)。 -
kubectl config use-context <上下文名称>
切换到指定的集群上下文(适用于管理多个集群)。 -
kubectl rollout history deployment <deployment名称>
查看 Deployment 的更新历史(用于回滚版本)。 -
kubectl rollout undo deployment <deployment名称>
回滚 Deployment 到上一个版本(如需指定版本,加--to-revision=<版本号>
)。 -
kubectl explain <资源类型>
查看资源类型的详细说明(如字段含义)。
示例:kubectl explain deployment.spec
(查看 Deployment 中 spec 字段的说明)。
说明
- 所有命令后可加
-h
查看帮助(如kubectl get pods -h
)。 - 命名空间相关操作需加
-n <命名空间>
,如kubectl get pods -n kube-system
(查看系统组件的 Pod)。 - 生产环境中推荐使用
kubectl apply -f <文件>
的 “声明式” 管理,而非命令式创建,便于版本控制和复用。