K8s: 如何通过kubectl命令实时监控滚动更新的详细过程?

在 Kubernetes 中实时监控滚动更新的详细过程,可以通过组合使用多个 kubectl命令来实现。下面这个表格汇总了最核心的命令及其用途,你可以根据不同的监控需求来选择。

监控命令 主要用途 关键参数 / 说明
kubectl rollout status deployment/<部署名称> 核心进度监控:实时显示更新整体进度,直到完成或失败。 无特殊参数,专注于进度状态。
kubectl get pods -w -l <标签> Pod级别详情:动态显示Pod的新旧替换、状态变化等详细过程。 -w用于实时监视;-l按标签筛选特定Deployment的Pod。
kubectl describe deployment <部署名称> 事件与配置洞察:查看更新触发原因、ReplicaSet变化及关键事件日志。 输出信息详细,适合在更新停滞或出错时深挖原因。
kubectl get replicasets -w 幕后视角:观察为新旧版本创建的ReplicaSet及其副本数量的变化。 了解Deployment控制器如何通过管理ReplicaSet来完成滚动更新。

🧩 理解监控的关键节点

在监控时,理解一些关键状态的含义能让你更清楚更新进行到了哪一步:

  • UP-TO-DATE:显示当前已更新到新版本的 Pod 数量。
  • AVAILABLE:显示当前可供用户使用的 Pod 数量,这些 Pod 已经处于就绪(Ready)状态。
  • Pod 的状态 :在 kubectl get pods的输出中,ContainerCreating表示Pod正在创建,Terminating表示旧Pod正在终止。

🛠️ 综合监控实战示例

假设你要监控一个名为 my-app的 Deployment 的更新过程。

  1. 触发更新:首先执行更新命令,例如更新镜像版本。

    perl 复制代码
    kubectl set image deployment/my-app my-app=my-app:v2.0.0
  2. 开启多个终端标签页进行综合监控

    • 标签页1:启动核心进度监控

      bash 复制代码
      kubectl rollout status deployment/my-app

      这个命令会持续输出类似 Waiting for rollout to finish: 2 out of 3 new replicas have been updated...的信息,并在成功后提示 deployment "my-app" successfully rolled out

    • 标签页2:启动Pod详情监控

      ini 复制代码
      kubectl get pods -w -l app=my-app

      这里你可以清晰地看到Kubernetes如何逐步启动新Pod(状态从 PendingContainerCreating再到 Running),并终止旧Pod(状态变为 Terminating)。

    • 标签页3(可选):启动幕后视角监控

      arduino 复制代码
      kubectl get replicasets -w

      此命令可让你观察到,Deployment 会创建一个新的 ReplicaSet 来管理新版本的 Pod(其副本数从0逐步增加),而旧的 ReplicaSet 的副本数则逐渐缩减到0。

  3. 遇到问题时进行深度排查 :如果更新卡住或失败,使用 describe命令查看详细信息和事件。

    perl 复制代码
    kubectl describe deployment my-app

    在输出结果的 Events部分,包含了关于滚动更新过程的详细日志,例如 Scaled up replica set my-app-7c54d5c99 to 1(扩容新ReplicaSet)和 Scaled down replica set my-app-7d47f45c6 to 2(缩容旧ReplicaSet)等,这对于排查就绪探针失败、资源不足等问题非常有帮助。

💡 进阶技巧与注意事项

  • 就绪探针的重要性 :为了使 rollout status命令能准确判断新Pod是否可用,你的Pod定义中必须配置有效的 readinessProbe(就绪探针)。Kubernetes 只有在新Pod的就绪探针检查通过后,才会认为该Pod已就绪,然后继续替换下一个旧Pod。

  • 进度期限 :Deployment 有一个 progressDeadlineSeconds配置(默认为600秒)。如果更新过程超过此时间仍未完成,Kubernetes 会将其标记为失败。你可以通过 kubectl describe deployment命令的结果来查看状态。

  • 一键回滚:如果发现新版本有问题,可以快速回滚到上一个版本。

    bash 复制代码
    kubectl rollout undo deployment/my-app
相关推荐
牛奶咖啡1331 分钟前
k8s容器编排技术实践——OpenEuler安装部署k8s
kubernetes·信创·containerd配置加速器·openeuler安装k8s·k8s的常见安装方式·彻底关闭swap·工作节点使用kubectl
老码观察1 小时前
K8s 容器化部署的宿主机资源规划的踩坑实录
docker·容器·kubernetes
密瓜智能1 小时前
HAMi 正式接入 Kubernetes DRA:下一代 GPU 资源模型实践指南
云原生·容器·kubernetes
李李李li2 小时前
debian13.3安装k8s
云原生·容器·kubernetes
牛奶咖啡1316 小时前
k8s容器编排技术实践——使用containerd作为容器运行时部署k8s集群
kubernetes·k8s的安装部署·开启系统的ipvs支持·安装containerd·containerd配置加速器·安装k8s的工具·安装calico网络插件
2301_7807896617 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
珂玥c18 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
佳杰云星19 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心
比特森林探险记20 小时前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin
汪汪大队u21 小时前
基于 K8s 的物联网平台运维体系:Ansible+Zabbix 自动化监控与故障自愈(三)—— Zabbix Server 启动排错记
运维·kubernetes·ansible