DevOps 入门系列:kubectl 常用命令
2026/6/9 11:30:08 网站建设 项目流程

kubectl 常用命令(概念篇)—— 如何与 K8s 集群交互

前置知识:已掌握 Kubernetes 核心资源:Pod、Deployment、Service、Ingress、ConfigMap、Secret、PVC
文档说明:本文只讲解命令概念、用途、适用场景,无命令执行输出示例

1. 什么是 kubectl?

kubectl 是 Kubernetes 官方命令行客户端工具,通过向集群 API Server 发送 HTTP 请求实现集群交互,核心能力:

  1. 查看各类集群资源运行状态

  2. 声明式创建、更新、删除集群资源

  3. 查看容器运行日志、交互式进入容器内部

  4. 管理命名空间、集群节点等底层集群资源

docker管控单机容器;kubectl集群级容器管理工具,管控跨多台宿主机的 Pod 与各类 K8s 资源。

2. 基础命令:查看资源状态(get)

2.1 命令作用

K8s 采用声明式 API,YAML 定义期望状态kubectl get用来查询资源实际运行状态,是日常排查、巡检最高频命令。

2.2 资源查看常用指令

命令功能说明
kubectl get pods查询当前命名空间下所有 Pod
kubectl get pods -o wide拓展输出:Pod IP、所属节点、控制器信息
kubectl get deployments查询 Deployment 控制器列表
kubectl get services查询 Service 资源列表
kubectl get configmap查询配置字典 ConfigMap
kubectl get secret查询密文配置 Secret
kubectl get pvc查询存储申请 PVC
kubectl get nodes查询集群所有节点状态
kubectl get events查询集群事件(资源变更、异常记录)
kubectl get all汇总查看 Pod/Deploy/SVC 等主流资源

2.3 通用高频参数

参数作用
-n指定目标命名空间,缺省使用 default
-A / --all-namespaces全集群所有命名空间资源
-o wide扩展字段输出
-o yaml以 YAML 格式输出资源完整配置
-w / --watch实时监听资源变化,动态刷新

示例概念

# 默认default命名空间查询Podkubectl get pods# 查看系统组件命名空间kube-system的Podkubectl get pods-nkube-system# 全集群所有命名空间Podkubectl get pods-A# 查看Pod拓展信息kubectl get pods-owide

资源异常排查第一步永远先用get确认运行状态。

3. 查看资源详情(describe)

3.1 命令作用

get仅展示资源简略信息,Pod 出现Pending/CrashLoopBackOff/ImagePullBackOff等异常时,kubectl describe输出完整配置 + 生命周期事件,是定位异常关键指令。
输出内容包含:资源全量配置(容器、环境变量、存储挂载)、Events 事件清单(排错核心)

3.2 常用指令

命令作用
kubectl describe podPod 详情 + 生命周期事件
kubectl describe deploymentDeployment 控制器详情
kubectl describe serviceService 详情 + 后端 Endpoints 列表
kubectl describe node节点资源、调度、污点详情

3.3 Events 常见异常释义

事件关键字故障原因
FailedSchedulingPod 调度失败:节点资源不足、亲和 / 污点策略不匹配
FailedPullImage镜像拉取失败:镜像地址错误、私有仓库密钥缺失、节点外网不通
BackOff容器反复异常退出,需结合日志排查
Liveness probe failed存活探针失败,应用卡死 / 启动异常

Pod 异常优先执行describe,重点翻阅 Events 区块。

4. 查看容器运行日志(logs)

4.1 命令作用

Pod 状态显示 Running,但业务报错 / 无响应时,通过容器标准输出日志定位应用代码异常;kubectl logs,可跨节点统一拉取集群容器日志,无需登录宿主机。

4.2 常用指令

命令功能
kubectl logs单容器 Pod 查看全量日志
kubectl logs -c多容器 Pod 指定容器查看日志
kubectl logs --tail=100仅输出末尾 100 行日志
kubectl logs -f实时流式跟踪日志(tail -f)
kubectl logs --previous查看上一轮崩溃容器历史日志

4.3 使用场景

  1. 应用启动报错:日志检索异常堆栈信息

  2. CrashLoopBackOff 反复重启:--previous查看崩溃前日志

  3. 业务接口异常:实时跟踪请求链路日志

5. 进入容器交互调试(exec)

5.1 命令作用

日志无法定位故障时,交互式进入运行中容器,校验环境变量、挂载配置、网络连通性。

5.2 常用指令

命令说明
kubectl exec -- whoami非交互执行单条命令
kubectl exec -it -- /bin/sh交互式进入容器终端(bash/sh)
kubectl exec -c -- ls /app多容器指定容器执行命令

5.3 容器内调试常用操作

  • 进程查询:ps aux

  • 环境变量校验:env

  • 连通性测试:curl service-namenslookup

  • 配置校验:cat 挂载配置文件路径

备注:我们之前使用的 alpine 精简镜像无 bash/curl,优先使用 /bin/sh,临时安装工具仅限调试场景。

6. 资源生命周期管理:apply /delete/edit

6.1 apply:声明式创建 & 更新

核心:遵循 K8s 声明式设计,基于 YAML 文件定义集群期望状态。

命令作用
kubectl apply -f deployment.yaml单个 YAML 创建 / 更新资源
kubectl apply -f ./manifests/目录下所有 yaml 批量生效
kubectl apply -f https://xxx/deploy.yaml远程 URL 加载 yaml 部署

create VS apply:
create 仅支持新建资源,重复执行报资源已存在;apply 资源不存在则创建、已存在则增量更新变更字段。

6.2 delete:资源删除

命令说明
kubectl delete pod直接删除 Pod,Deployment 控制器自动重建新 Pod
kubectl delete deployment删除控制器,关联 Pod 同步销毁
kubectl delete -f deployment.yaml删除对应 yaml 定义的全部资源
kubectl delete pod --all删除当前命名空间所有 Pod(高危操作)
kubectl delete ns删除整个命名空间,内部资源全销毁(高危)

风险提醒:删除 PVC 可能连带后端云存储盘销毁(由 PV 回收策略决定),谨慎操作。

6.3 edit:在线直接编辑集群资源

无需修改本地 YAML,直接编辑集群内运行资源配置,保存立即生效;

kubectl edit deployment<deploy-name>kubectl editservice<svc-name>

规范建议:正式环境使用 Git+YAML+apply 做版本管控,edit 仅限紧急临时修复。

7. 命名空间 Namespace 管理

7.1 命名空间概念

K8s 集群资源隔离机制,类比系统目录,同一集群内不同命名空间可存在同名资源。
使用场景:

  1. 环境隔离:dev/test/prod 三套环境拆分命名空间

  2. 团队隔离:多业务团队资源隔离

  3. 配额管控:按命名空间限制 CPU / 内存资源上限

  4. 权限管控:RBAC 绑定用户,限制仅能操作指定 NS 资源

类比:集群 = 整栋大楼,命名空间 = 楼层,同房间号在不同楼层互不冲突。

7.2 命名空间常用命令

命令功能
kubectl get ns / kubectl get namespaces查看全集群命名空间
kubectl create namespace创建命名空间
kubectl delete namespace删除命名空间(高危)
kubectl get pods -n查询指定命名空间 Pod
kubectl get pods -A全集群所有命名空间 Pod

kube-system 存放集群核心组件(CoreDNS、Ingress 控制器),禁止随意删除修改;日常业务部署优先自定义命名空间。

8. 通用故障排查标准流程(排错三板斧)

业务异常固定排查顺序:get → describe → logs → exec

8.1 第一步:get 查看全量资源状态

kubectl get pods kubectl get deployments kubectl get services kubectl get pvc kubectl get events --sort-by='.lastTimestamp'
Pod 异常状态对照表
状态含义下一步操作
Running运行正常业务异常直接查看日志
Pending调度失败 / 镜像拉取阻塞describe 查看 Events
ImagePullBackOff镜像拉取失败校验镜像地址、私有仓库密钥、节点网络
CrashLoopBackOff容器反复崩溃重启logs --previous 查看崩溃历史日志
ErrImagePull镜像拉取失败同 ImagePullBackOff

8.2 第二步:describe 定位事件根源

kubectl describe pod<异常Pod名称>

重点读取 Events 区块,捕获调度失败、镜像异常、健康探针失败信息。

8.3 第三步:logs 读取应用运行日志

kubectl logs<pod-name>kubectl logs<pod-name>--previouskubectl logs--tail=100-f<pod-name>

8.4 第四步:exec 进入容器深度调试

kubectlexec-it<pod-name>-- /bin/sh

排错逻辑流程图

业务异常 │ ▼ kubectl get pods → 状态异常?──是→ kubectl describe pod → 分析Events故障点 │ 正常 │ ▼ kubectl logs → 日志报错?──是→ 根据日志修复配置/代码 │ 无报错 │ ▼ kubectl exec 进入容器手动核查配置、网络、环境变量

9. kubectl 分类速查表

9.1 集群基础信息

命令作用
kubectl version查看 kubectl 客户端 + 集群 API 服务端版本
kubectl cluster-info查看集群 API 地址、集群管控信息
kubectl get nodes集群节点状态
kubectl api-resources列出集群支持的所有资源种类

9.2 资源查询

命令作用
kubectl get pods [-n ns] [-o wide]查询 Pod
kubectl get deployments [-n ns]查询 Deployment
kubectl get services [-n ns]查询 Service
kubectl get configmap [-n ns]查询 ConfigMap
kubectl get secret [-n ns]查询 Secret
kubectl get pvc [-n ns]查询 PVC
kubectl get events --sort-by=‘.lastTimestamp’时序化查看集群事件
kubectl get all [-n ns]主流资源汇总

9.3 资源详情

命令作用
kubectl describe pod [-n ns]Pod 详情 + 事件
kubectl describe deployment [-n ns]Deployment 详情
kubectl describe svc [-n ns]Service + 后端 Endpoint 详情

9.4 日志 & 容器交互

命令作用
kubectl logs [-c container]查看容器日志
kubectl logs --previous查看崩溃历史日志
kubectl logs -f实时日志跟踪
kubectl exec -it -- /bin/sh交互式进入容器
kubectl exec -- cmd容器内执行单次命令

9.5 资源 CRUD 操作

命令作用
kubectl apply -f yaml创建 / 更新资源
kubectl delete -f yaml删除 yaml 定义资源
kubectl delete pod删除单个 Pod
kubectl delete deployment删除控制器
kubectl edit deployment在线编辑配置
kubectl port-forward pod/ 8080:5000本地端口转发访问 Pod

9.6 命名空间操作

命令作用
kubectl get ns查看命名空间
kubectl create ns创建命名空间
kubectl delete ns删除命名空间
kubectl get pods -n指定 NS 查 Pod
kubectl get pods -A全集群查 Pod

10. 文档总结

核心命令分类汇总

分类核心指令核心用途
资源概览get快速查看资源运行状态
详情排错describe读取配置 + 事件,定位底层异常
应用日志logs查看应用标准输出,排查业务报错
容器调试exec进入容器,手动验证配置、网络
资源管理apply/delete/edit资源创建、删除、配置修改
资源隔离-n/-A按命名空间隔离筛选资源

必背排错三板斧

  1. kubectl get pods:确认资源运行状态

  2. kubectl describe pod <pod名>:查看事件定位异常根源

  3. kubectl logs <pod名>:查看应用运行日志

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询