智能
助手
最大化  清空记录 停止  历史记录
翻译选中文本
选中一段文本后进行翻译
名词解释
选中一段文本后进行名词解释
知识图谱生成
通过图谱展示知识信息
登录用户在知识浏览页面可用
答案生成
AI自动回答一个问答功能中的问题
登录用户在问答浏览页面,且问题开放回答中可用
知识摘要
自动为当前知识生成摘要
知识浏览页面可用
知识问答
针对当前知识进行智能问答
知识浏览面可用
2026-01-01 00:10:28 版本 : 5. Kubernetes kubectl常用命令及实操案例
作者: 文艺范儿 于 2026年01月01日 发布在分类 / Docker & K8S / K8S基础 下,并于 2026年01月01日 编辑
 历史版本

备注 修改日期 修改人
创建版本 2026-01-01 00:10:28[当前版本] 文艺范儿

5. Kubernetes kubectl常用命令及实操案例

5.1 基础环境与集群状态查看

目的:快速确认集群与控制平面可用性,节点健康情况。

场景 命令 实操案例 说明

查看集群核心组件状态

kubectl cluster-info

kubectl cluster-info

输出 API Server、etcd、CoreDNS 地址,确认 running表示集群正常

查看节点列表与状态

kubectl get nodes -o wide

kubectl get nodes -o wide

-o wide显示节点 IP、Kubelet 版本、OS,STATUS必须为 Ready

查看当前上下文

kubectl config current-context

kubectl config current-context

多集群环境下确认当前操作的集群(如 prod-cluster


5.2 资源列表与详情查询

目的:全局视野掌握资源分布,快速定位具体资源状态与事件。

5.2.1 查看资源列表

场景 命令 实操案例 说明

查看所有命名空间资源概览

kubectl get all -A

kubectl get all -A

快速了解 Pod、Service、Deployment 等分布情况

按标签过滤 Pod

kubectl get pods -l <key=value> -n <ns>

kubectl get pods -l app=nginx -n prod

标签用于资源分组,方便批量操作

查看 Service 详情

kubectl get svc -o wide

kubectl get svc -o wide

显示 ClusterIP、NodePort、关联的 Endpoints

5.2.2 查看资源详情与日志

场景 命令 实操案例 说明

查看 Pod 详细信息(含事件)

kubectl describe pod <name> -n <ns>

kubectl describe pod nginx-pod-abc -n default

Events段可看到调度、拉镜像、OOM 等关键信息

查看 Pod 日志

kubectl logs <pod> [-c <container>]

kubectl logs nginx-pod-abc -n default

多容器 Pod 需加 -c指定容器名

实时跟踪日志

kubectl logs <pod> -f

kubectl logs nginx-pod-abc -f

类似 tail -f,用于调试实时问题

查看上一次崩溃日志

kubectl logs <pod> —previous

kubectl logs nginx-pod-abc —previous

容器崩溃时获取最后一次启动日志

5.2.3 查看资源使用率

需安装并运行 metrics-server

# 安装方式,需科学上网
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl apply -f components.yaml
场景 命令 实操案例 说明

查看节点资源使用

kubectl top nodes

kubectl top nodes —sort-by=memory

找出高负载节点,CPU/内存 > 80% 需关注

查看 Pod 资源使用

kubectl top pods

kubectl top pods -l app=nginx -n prod

判断是否接近 limits,预防 OOM 或 CPU 限流


5.3 资源创建与管理(声明式优先)

SRE 原则:优先 apply(声明式、幂等、可追踪),避免 create/replace

场景 命令 实操案例 说明

从 YAML 创建/更新资源

kubectl apply -f <file.yaml>

kubectl apply -f deployment.yaml

推荐方式,配置文件纳入 Git

快速创建临时测试 Pod

kubectl run <name> —image=<img> —rm -it — <cmd>

kubectl run test —image=busybox —rm -it — /bin/sh

--rm退出自动删除,适合调试

扩缩容 Deployment

kubectl scale deployment <name> —replicas=<n>

kubectl scale deployment nginx-deploy —replicas=5 -n prod

应对流量高峰

滚动更新镜像版本

kubectl patch deployment <name> -p ‘<json>‘

kubectl patch deployment nginx-deploy -p ‘{“spec”:{“template”:{“spec”:{“containers”:[{“name”:”nginx”,”image”:”nginx:1.22”}]}}}}’

避免 downtime

回滚 Deployment

kubectl rollout undo deployment <name>

kubectl rollout undo deployment nginx-deploy -n prod

发布失败时快速恢复

查看滚动更新状态

kubectl rollout status deployment <name>

kubectl rollout status deployment nginx-deploy

确认更新完成再继续操作


5.4 故障排查(必备)

思路:事件 → 资源状态 → 日志 → 调试容器。

场景 命令 实操案例 说明

查看集群事件(按时间排序)

kubectl get events —sort-by=.lastTimestamp

kubectl get events -n prod —sort-by=.lastTimestamp

Warning事件优先分析,如 FailedSchedulingOOMKilling

查看 Pod 详细状态

kubectl describe pod <name>

kubectl describe pod nginx-pod-abc

找 Events 中的错误信息

实时跟踪日志

kubectl logs <pod> -f

kubectl logs nginx-pod-abc -f

观察运行期错误

调试 Pod(创建临时容器)

kubectl debug <pod> -it —image=<debug-img> —target=<container>

kubectl debug nginx-pod-abc -it —image=busybox —target=nginx

排查网络/存储问题(K8s ≥1.20)

进入容器调试

kubectl exec -it <pod> — <cmd>

`kubectl exec -it nginx-pod-abc — /bin/bash

手动检查配置、进程


5.5 配置与命名空间管理

场景 命令 实操案例 说明

创建命名空间

kubectl create namespace <ns>

kubectl create namespace prod

环境隔离

给资源打标签

kubectl label <type> <name> <key=value>

kubectl label pod nginx-pod-abc env=prod

用于分组、选择器匹配

验证用户权限

kubectl auth can-i <verb> <resource> —as=<user>

kubectl auth can-i create pods —as=dev-user -n prod

RBAC 权限校验


5.6 综合实操案例:Nginx 部署与排障全流程

5.6.1 编写 Deployment YAML ( nginx-deploy.yaml )

注意:国内需要先docker pull nginx:1.21 镜像。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 512Mi


# 注释版本

# API版本声明:表示该资源使用的Kubernetes API版本(apps/v1是Deployment的稳定版本,适用于K8s 1.9+)
apiVersion: apps/v1

# 资源类型:声明这是一个Deployment资源(用于管理无状态应用的副本生命周期)
kind: Deployment

# 元数据:定义资源的标识信息
metadata:
  # 资源名称:Deployment的唯一标识(同一命名空间内需唯一,小写字母、数字、短横线组合)
  name: nginx-deploy
  # 命名空间:资源所属的命名空间(此处为default,生产环境建议使用prod/dev等隔离环境)
  namespace: default
  # (可选)标签:用于资源分组或选择器匹配(示例中未显式定义,可通过kubectl label添加)

# 规格:定义Deployment的具体行为(核心配置)
spec:
  # 副本数:期望维持的Pod副本数量(生产环境需根据流量评估,避免资源浪费或不足)
  replicas: 3

  # 标签选择器:定义Deployment管理的Pod范围(必须与template.metadata.labels一致,否则无法关联Pod)
  selector:
    matchLabels:
      app: nginx  # 匹配标签为app=nginx的Pod(Deployment通过此选择器监控Pod状态并自愈)

  # Pod模板:定义Pod的"蓝图",Deployment根据该模板创建具体Pod
  template:
    metadata:
      # Pod标签:Pod自身的标识(需与selector.matchLabels一致,否则Deployment无法管理)
      labels:
        app: nginx  # 标签用于Service选择、资源过滤(如kubectl get pods -l app=nginx)

    # Pod规格:定义Pod内容器的详细配置
    spec:
      # 容器列表:Pod内的容器定义(至少一个容器,可多个紧密耦合的容器如Sidecar)
      containers:
      - name: nginx  # 容器名称(同一Pod内唯一,用于日志、调试时标识容器)
        # 镜像地址:容器启动时拉取的镜像(必须指定版本,避免使用latest导致不可控)
        image: nginx:1.21
        # 端口声明:容器暴露的端口(仅声明,不实际映射,供Service关联)
        ports:
        - containerPort: 80  # 容器内应用监听的端口(Nginx默认HTTP端口)

        # 资源限制:定义容器的资源请求与上限(SRE容量规划的核心,避免资源争抢或OOM)
        resources:
          # 资源请求(requests):容器启动时K8s调度器保证的最小资源(必须满足,否则Pod无法调度)
          requests:
            cpu: 100m      # CPU请求:0.1核(1核=1000m,根据应用实际CPU使用量设置,避免高估)
            memory: 128Mi  # 内存请求:128兆字节(根据应用常驻内存设置,避免节点资源碎片化)

          # 资源限制(limits):容器运行时可使用的最大资源(超限会被K8s限制或杀死)
          limits:
            cpu: 500m      # CPU限制:0.5核(预留20%缓冲,避免突发流量导致CPU节流)
            memory: 512Mi  # 内存限制:512兆字节(根据应用峰值内存设置,超限触发OOMKilled)

5.6.2 部署并验证

kubectl apply -f nginx-deploy.yaml
kubectl get deployments nginx-deploy
kubectl get pods -o wide
kubectl top pods -l app=nginx

5.6.3 模拟滚动更新

kubectl patch deployment nginx-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.25"}]}}}}'
kubectl rollout status deployment nginx-deploy

5.6.4 模拟 OOM 故障并排查

# 缩小内存限制触发 OOM
kubectl patch deployment nginx-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","resources":{"limits":{"memory":"90Mi"}}}]}}}}'

# 观察 Pod 状态
kubectl get pods -w

# 查看事件
kubectl get events --sort-by=.lastTimestamp

# 查看 Pod 详情找 OOM 原因
kubectl describe pod <oom-pod-name>

# 修复:恢复内存限制
kubectl patch deployment nginx-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","resources":{"limits":{"memory":"512Mi"}}}]}}}}'

5.7 最佳实践小结

  1. 声明式管理kubectl apply+ Git 管理 YAML,确保可重复、可追溯。
  2. 标签驱动:统一标签体系(appenvversion),配合 -l高效过滤。
  3. 事件优先排障kubectl get eventsWarningdescribe看细节 → logs定位根因。
  4. 资源隔离:命名空间隔离环境,RBAC 限制权限。
  5. 监控结合kubectl top+ Prometheus 长期指标存储,提前预警资源瓶颈。
历史版本-目录  [回到顶端]
    文艺知识分享平台 -V 5.2.5 -wcp