Kubernetes(简称K8s)作为容器编排领域的核心工具,其基础命令是运维人员和开发者必须掌握的核心技能,通过命令行与K8s集群交互,可以实现对容器应用的部署、管理、监控和调试,以下从集群信息查看、资源管理、应用部署与调试、配置与密钥管理四个维度,详细解析K8s基础命令的使用场景和操作方法。

集群信息查看命令
在操作K8s集群前,需先确认集群状态和节点信息。kubectl
作为K8s的命令行工具,提供了多种命令用于获取集群概览。
kubectl cluster-info
:显示集群控制平面和服务的访问地址,用于快速验证集群是否正常运行,输出会包含Kubernetes API服务器的地址和kubernetes-dashboard
的访问链接。kubectl get nodes
:列出集群中所有节点的状态,包括节点名称、角色(Master/Worker)、状态(Ready/NotReady)、版本等信息,通过kubectl get nodes -o wide
可扩展显示节点的IP地址、kubelet版本等更多细节。kubectl version
:显示kubectl
客户端和K8s服务端的版本信息,用于检查版本兼容性,若需查看更详细的版本信息(如Git commit ID、构建日期),可使用kubectl version --short=false
。
通过kubectl get componentstatuses
(或简写kubectl get cs
)可查看集群核心组件(如etcd、kube-apiserver、kube-controller-manager)的健康状态,帮助排查集群级故障。
资源管理命令
K8s中所有对象(如Pod、Deployment、Service等)均被视为资源,kubectl
提供了统一的增删改查操作。
资源查询
kubectl get <资源类型> [名称] -n <命名空间>
:查询指定类型的资源。kubectl get pods -n default
查看default命名空间下的所有Pod;kubectl get deployments -A
(-A
表示所有命名空间)查看集群中所有Deployment。kubectl describe <资源类型> <名称> -n <命名空间>
:显示资源的详细信息,包括事件、标签、注解、容器状态等。kubectl describe pod nginx-pod -n default
可查看Pod的启动日志、容器镜像拉取状态、资源限制等,常用于排查Pod异常。kubectl get <资源类型> -o <输出格式>
:以指定格式输出结果。kubectl get pods -n default -o yaml
输出YAML格式的Pod配置;kubectl get nodes -o jsonpath={.items[*].status.addresses[0].address}
仅提取节点的IP地址。
资源操作
- 创建资源:
kubectl create -f <yaml文件>
:通过YAML/JSON文件创建资源,例如kubectl create -f deployment.yaml
。kubectl apply -f <yaml文件>
:声明式创建或更新资源(推荐使用,支持多次应用而不报错)。
- 删除资源:
kubectl delete <资源类型> <名称> -n <命名空间>
:删除指定资源,例如kubectl delete pod nginx-pod -n default
。kubectl delete -f <yaml文件>
:根据文件删除所有资源。
- 编辑资源:
kubectl edit <资源类型> <名称> -n <命名空间>
:直接编辑资源的YAML配置并保存,例如kubectl edit deployment nginx-deployment -n default
会打开编辑器修改Deployment的副本数或镜像版本。
应用部署与调试命令
应用部署
以Nginx应用为例,通过Deployment和Service实现部署和暴露:

- 创建Deployment:
kubectl create deployment nginx --image=nginx:latest --replicas=3 -n default
,创建一个包含3个副本的Nginx Deployment。 - 暴露Service:
kubectl expose deployment nginx --port=80 --target-port=80 -n default
,将Deployment的80端口通过ClusterIP Service暴露给集群内部访问。
应用调试
- 查看Pod日志:
kubectl logs <Pod名称> -n <命名空间>
:查看Pod的标准输出日志,例如kubectl logs nginx-5f7d7d8f9b-abcde -n default
。kubectl logs <Pod名称> -n <命名空间> --follow
(-f
):实时跟踪日志输出,适合调试实时应用问题。kubectl logs <Pod名称> -n <命名空间> --previous
:查看之前已终止容器的日志(适用于Pod重启场景)。
- 进入Pod容器:
kubectl exec -it <Pod名称> -n <命名空间> -- /bin/bash
:进入容器的交互式shell,例如kubectl exec -it nginx-5f7d7d8f9b-abcde -n default -- /bin/bash
。
- 扩缩容与更新:
kubectl scale deployment <Deployment名称> --replicas=<数量> -n <命名空间>
:手动扩缩容,例如kubectl scale deployment nginx --replicas=5 -n default
。kubectl set image deployment/<Deployment名称> <容器名>=<新镜像> -n <命名空间>
:滚动更新镜像,例如kubectl set image deployment/nginx nginx=nginx:1.21 -n default
。
配置与密钥管理命令
ConfigMap管理
ConfigMap用于存储非敏感的配置数据,可通过文件或命令行创建:
- 从文件创建:
kubectl create configmap app-config --from-file=config.yaml -n default
,将config.yaml
存入ConfigMap。 - 从字面量创建:
kubectl create configmap app-config --from-literal=key1=value1 --from-literal=key2=value2 -n default
。 - 查看ConfigMap:
kubectl get configmap app-config -n default -o yaml
。
Secret管理
Secret用于存储敏感数据(如密码、Token),支持Base64编码:
- 创建Secret:
kubectl create secret generic db-secret --from-literal=password=yourpassword -n default
,密码会被自动Base64编码。 - 查看Secret:
kubectl get secret db-secret -n default -o yaml
,需通过echo 'yourpassword' | base64 -d
解码查看实际内容。
常见资源类型及操作示例
资源类型 | 缩写 | 示例命令 | 说明 |
---|---|---|---|
Pod | po | kubectl get pods -n default |
查询Pod列表 |
Deployment | deploy | kubectl get deployments -n default |
查询Deployment列表 |
Service | svc | kubectl get services -n default |
查询Service列表 |
ConfigMap | cm | kubectl get configmaps -n default |
查询ConfigMap列表 |
Secret | kubectl get secrets -n default |
查询Secret列表 | |
Namespace | ns | kubectl create namespace test |
创建命名空间 |
相关问答FAQs
Q1: 如何排查Pod一直处于Pending
状态?
A: Pod处于Pending
状态通常是因为资源不足或镜像无法拉取,可通过以下步骤排查:
- 使用
kubectl describe pod <Pod名称> -n <命名空间>
查看事件,检查是否有FailedScheduling
事件(节点资源不足)或ImagePullBackOff
事件(镜像拉取失败)。 - 若节点资源不足,可通过
kubectl describe node <节点名称>
查看节点的CPU、内存使用情况,或考虑增加节点资源。 - 若镜像拉取失败,检查镜像名称是否正确、是否有权限访问镜像仓库(如需配置镜像拉取密钥,可通过
kubectl create secret docker-registry
创建)。
Q2: 如何更新Deployment的镜像版本并回滚?
A: 更新和回滚Deployment镜像的步骤如下:

- 更新镜像:使用
kubectl set image deployment/<Deployment名称> <容器名>=<新镜像版本> -n <命名空间>
,例如kubectl set image deployment/nginx nginx=nginx:1.21 -n default
,K8s会自动触发滚动更新。 - 查看更新状态:通过
kubectl rollout status deployment/<Deployment名称> -n <命名空间>
确认更新进度,或kubectl get pods -n default
查看Pod是否使用新镜像。 - 回滚版本:若更新后出现问题,可通过
kubectl rollout undo deployment/<Deployment名称> -n <命名空间>
回滚到上一个版本;若需回滚到指定版本(如revision=2),使用kubectl rollout undo deployment/<Deployment名称> --to-revision=2 -n <命名空间>
。