
Kubernetes(K8S)常用命令的整理集合,按功能场景分类,涵盖集群管理、资源操作、故障排查等核心场景。

一、集群基础管理
1. 查看集群基本信息
命令 |
说明 |
示例 |
kubectl cluster-info |
查看集群节点、控制平面(Master)及服务端点信息 |
kubectl cluster-info |
kubectl version |
查看客户端(kubectl)和服务端(K8S API Server)版本 |
kubectl version --short (简洁模式) |
kubectl get nodes |
列出所有集群节点(Node) |
kubectl get nodes -o wide (显示详细信息,如IP、标签) |
kubectl describe node <node-name> |
查看节点详细信息(资源、状态、事件) |
kubectl describe node node-1 |
2. 集群配置与日志
命令 |
说明 |
示例 |
kubectl config view |
查看当前kubeconfig配置(集群、用户、上下文) |
kubectl config view --minify (仅显示当前上下文) |
kubectl config current-context |
查看当前使用的集群上下文(Context) |
- |
kubectl config use-context <context-name> |
切换集群上下文 |
kubectl config use-context dev-cluster |
kubectl logs -f <pod-name> -n <namespace> |
实时跟踪Pod日志(生产环境调试用) |
kubectl logs -f my-pod -n default |
二、核心资源操作(Pod/Deployment/Service等)
1. Pod(容器组)管理
命令 |
说明 |
示例 |
kubectl get pods [-n <namespace>] |
列出Pod列表 |
kubectl get pods -o wide (显示节点、IP、状态) |
kubectl get pods -l <label-key>=<label-value> |
按标签筛选Pod |
kubectl get pods -l app=my-app |
kubectl describe pod <pod-name> [-n <namespace>] |
查看Pod详细信息(事件、容器状态、重启次数) |
kubectl describe pod my-pod-123 |
kubectl logs <pod-name> [-c <container-name>] [-n <namespace>] |
查看Pod内容器日志(单容器Pod可省略-c) |
kubectl logs my-pod -c sidecar-container |
kubectl exec -it <pod-name> [-c <container-name>] [-n <namespace>] -- <command> |
进入Pod容器执行命令(交互式终端) |
kubectl exec -it my-pod -- bash (进入bash) |
kubectl delete pod <pod-name> [-n <namespace>] |
删除指定Pod(若由Deployment管理,会自动重建) |
kubectl delete pod my-pod-123 |
2. Deployment(应用部署)管理
命令 |
说明 |
示例 |
kubectl get deployments [-n <namespace>] |
列出Deployment列表 |
kubectl get deployments -o wide (显示副本数、镜像) |
kubectl create deployment <deployment-name> --image=<image> [-n <namespace>] |
创建Deployment(简化版) |
kubectl create deployment nginx-deploy --image=nginx:alpine |
kubectl apply -f <deployment-yaml-file> |
通过YAML文件创建/更新Deployment |
kubectl apply -f ./deployment.yaml |
kubectl edit deployment <deployment-name> [-n <namespace>] |
编辑Deployment配置(直接修改YAML) |
kubectl edit deployment nginx-deploy |
kubectl scale deployment <deployment-name> --replicas=<num> [-n <namespace>] |
手动扩缩容Deployment副本数 |
kubectl scale deployment nginx-deploy --replicas=3 |
kubectl rollout status deployment <deployment-name> [-n <namespace>] |
查看滚动更新/回滚状态 |
kubectl rollout status nginx-deploy |
kubectl rollout undo deployment <deployment-name> [-n <namespace>] |
回滚Deployment到上一版本 |
kubectl rollout undo nginx-deploy |
3. Service(服务暴露)管理
命令 |
说明 |
示例 |
kubectl get services [-n <namespace>] |
列出Service列表 |
kubectl get svc -o wide (显示类型、集群IP、外部IP) |
kubectl create service clusterip <service-name> --tcp=<port>:<target-port> [-n <namespace>] |
创建ClusterIP类型Service |
kubectl create service clusterip my-svc --tcp=80:8080 |
kubectl create service nodeport <service-name> --tcp=<port>:<target-port> --node-port=<port-range> [-n <namespace>] |
创建NodePort类型Service(指定节点端口) |
kubectl create service nodeport my-svc --tcp=80:8080 --node-port=30001 |
kubectl create service externalname <service-name> --external-name=<external-dns> [-n <namespace>] |
创建ExternalName类型Service(映射外部服务) |
kubectl create service externalname my-external-svc --external-name=db.example.com |
kubectl edit service <service-name> [-n <namespace>] |
编辑Service配置(如修改端口、选择器) |
kubectl edit service my-svc |
4. Ingress(外部流量路由)管理
命令 |
说明 |
示例 |
kubectl get ingress [-n <namespace>] |
列出Ingress规则 |
- |
kubectl create ingress <ingress-name> --rule=<host-path>=<service>:<port> |
创建Ingress规则(简化版) |
kubectl create ingress my-ingress --rule=example.com-=my-svc:80 |
kubectl apply -f <ingress-yaml-file> |
通过YAML文件管理Ingress(推荐) |
kubectl apply -f ./ingress.yaml |
三、配置与密钥管理(ConfigMap/Secret)
1. ConfigMap(非敏感配置)
命令 |
说明 |
示例 |
kubectl create configmap <configmap-name> --from-file=<key>=<file-path> |
从文件创建ConfigMap(键为文件名,值为文件内容) |
kubectl create configmap app-config --from-file=settings.properties=./config/settings.properties |
kubectl create configmap <configmap-name> --from-literal=<key>=<value> |
从键值对创建ConfigMap |
kubectl create configmap app-env --from-literal=API_URL=http://api.example.com |
kubectl get configmaps [-n <namespace>] |
列出ConfigMap列表 |
kubectl get cm (简写) |
kubectl describe configmap <configmap-name> [-n <namespace>] |
查看ConfigMap详细信息(数据内容) |
kubectl describe cm app-config |
kubectl delete configmap <configmap-name> [-n <namespace>] |
删除ConfigMap |
- |
2. Secret(敏感配置,如密码、Token)
命令 |
说明 |
示例 |
kubectl create secret docker-registry <secret-name> --docker-server=<registry-url> --docker-username=<user> --docker-password=<pass> |
创建Docker镜像仓库认证Secret |
kubectl create secret docker-registry regcred --docker-server=docker.io --docker-username=admin --docker-password=123456 |
kubectl create secret generic <secret-name> --from-literal=<key>=<value> |
创建通用Secret(键值对) |
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=secret |
kubectl get secrets [-n <namespace>] |
列出Secret列表 |
kubectl get secrets (内容默认加密显示) |
kubectl describe secret <secret-name> [-n <namespace>] |
查看Secret元数据(实际值需解码) |
`kubectl get secret db-secret -o jsonpath=‘{.data.password}’ |
四、存储资源管理(PV/PVC/StorageClass)
命令 |
说明 |
示例 |
kubectl get pv |
列出持久卷(Persistent Volume) |
- |
kubectl get pvc [-n <namespace>] |
列出持久卷声明(Persistent Volume Claim) |
kubectl get pvc -n default |
kubectl create pvc <pvc-name> --capacity=<size> --storageclass=<sc-name> |
创建PVC(绑定StorageClass) |
kubectl create pvc my-pvc --capacity=10Gi --storageclass=standard |
kubectl delete pvc <pvc-name> [-n <namespace>] |
删除PVC(自动释放PV,若未设置回收策略) |
- |
kubectl describe pvc <pvc-name> [-n <namespace>] |
查看PVC绑定状态(是否绑定PV、容量) |
kubectl describe pvc my-pvc |
五、故障排查常用命令
场景 |
命令 |
说明 |
查看集群事件 |
kubectl get events [-n <namespace>] --sort-by='.metadata.creationTimestamp' |
按时间排序显示集群事件(如Pod调度失败、容器启动错误) |
查看Pod状态详情 |
kubectl describe pod <pod-name> [-n <namespace>] |
关键信息:Events(事件)、Status(状态)、Containers(容器状态) |
检查Service端点 |
kubectl get endpoints <service-name> [-n <namespace>] |
查看Service关联的Pod IP:Port(若未关联,说明标签选择器不匹配) |
实时监控资源 |
kubectl top pods [-n <namespace>] |
查看Pod CPU/内存使用量(需安装metrics-server) |
排查网络问题 |
kubectl exec <pod-name> -- curl <service-name>.<namespace>.svc.cluster.local |
从Pod内部访问其他Service(验证集群内部DNS) |
检查镜像拉取问题 |
kubectl describe pod <pod-name> [-n <namespace>] |
查看Events中的Failed to pull image 错误(可能是镜像不存在或权限问题) |
六、高级操作
场景 |
命令 |
说明 |
滚动更新Deployment |
kubectl set image deployment/<deployment-name> <container-name>=<new-image> [-n <namespace>] |
直接更新容器镜像触发滚动更新 |
批量删除资源 |
kubectl delete pods,svc -l app=my-app [-n <namespace>] |
按标签批量删除Pod和服务 |
导出资源配置YAML |
kubectl get deployment <deployment-name> -o yaml > deployment.yaml |
导出Deployment的YAML文件(用于备份或迁移) |
调试临时Pod |
kubectl run debug-pod -it --rm --image=busybox -- sh |
启动一个临时交互式Pod(用于测试集群网络、存储) |
附:常用参数速查
-n <namespace>
:指定命名空间(如-n kube-system
)。
-o <format>
:输出格式(如-o wide
宽格式、-o yaml
YAML格式、-o json
JSON格式)。
--all-namespaces
(或-A
):跨所有命名空间查询。
-f <file>
:通过YAML/JSON文件操作资源。
-l <label-selector>
:按标签筛选资源(如-l app=my-app,env=prod
)。