当前位置: 首页 > news >正文

【Kubernetes】Deployment 的状态

Deployment 的状态

在这里插入图片描述

Deployment 控制器在整个生命周期中存在 3 3 3 种状态:

  • 已完成Complete
  • 进行中Progressing
  • 失败Failed

通过观察 Deployment 的当前特征,可以判断 Deployment 的状态。下表展示了不同状态时 Deployment 的特征。

Deployment 的状态
Deployment 的特征
已完成Complete(1)Deployment 管理的所有 Pod 副本都已更新到指定的版本了。
(2)Deployment 管理的所有 Pod 副本都可用。
(3)所有旧的 Pod 副本都已停止。
进行中Progressing(1)Deployment 正在通过 ReplicaSet 创建 Pod。
(2)Deployment 正在通过 ReplicaSet 进行扩容 / 缩容。
(3)Deployment 管理的 Pod 已经就绪或者可用。
失败Failed(1)就绪探针检测失败。
(2)资源的配额不足。
(3)镜像下载错误。
(4)权限与应用配置错误。

下面通过一个例子来验证 Deployment 在生命周期内的不同状态。

修改 deployment-demo.yaml 文件,将其副本数设置为 1。完整的 YAML 文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-demolabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9imagePullPolicy: IfNotPresentports:- containerPort: 80

运行以下命令创建 Deployment。

kubectl apply -f deployment-demo.yaml

运行以下命令获取 Deployment 的详细信息。

kubectl describe deploy deployment-demo

输出的信息如下:

在这里插入图片描述

🚀 从输出的信息可以看出,Deployment 的 ProgressingAvailable 都是 True。这说明 Deployment 已经满足 已完成Complete)状态的特征,因此此时 Deployment 已经进入 已完成Complete)状态。

执行 Deployment 的扩容操作,将其副本数设置为 5

kubectl scale deployment deployment-demo --replicas=5

使用 kubectl rollout status 命令监视 Deployment 扩容的进度。

kubectl rollout status deployment deployment-demo

输出的信息如下:

在这里插入图片描述

在 Deployment 扩容过程中,运行以下命令获取 Deployment 的详细信息。

kubectl describe deploy deployment-demo

输出的信息如下:

Conditions:Type           Status  Reason----           ------  ------Progressing    True    NewReplicaSetAvailableAvailable      False   MinimumReplicasAvailable

🚀 从参数 ProgressingAvailable 的值(Progressing=TrueAvailable=False)可以看出,Deployment 正处于 进行中Progressing)状态。

更新 Nginx 的版本为 nginx:1.123

kubectl set image deployment deployment-demo nginx=nginx:1.123

nginx:1.123 是一个不存在的版本,所以会导致 Deployment 更新失败。

为了尽快看到 Deployment 的出错信息,可以将 .spec.progressDeadineSeconds 字段设置得小一些,例如 120 s 120 s 120s

kubectl patch deployment deployment-demo \
-p '{"spec": {"progressDeadlineSeconds":120}}'

🚀 .spec.progressDeadlineSeconds 字段表示在 Deployment 完成前需要等待的最长时间,默认值是 600 s 600 s 600s

等待 120 s 120s 120s 后,运行以下命令获取 Deployment 的详细信息。

kubectl describe deploy deployment-demo

输出的信息如下:

在这里插入图片描述

⭕ 由于 Deployment 无法下载镜像信息,因此进入 失败Failed)状态。这时参数 Processing 的值是 False

使用 kubectl rollout status 命令监视 Deployment 的更新进度。

kubectl rollout status deployment deployment-demo

输出的信息如下:

在这里插入图片描述

http://www.lryc.cn/news/414973.html

相关文章:

  • 新手学习Gazebo+ros仿真控制小车-----易错和自己理解
  • jdbc(mysql)
  • 【Linux】搜索log在哪个文件中执行的方法
  • web小游戏开发:2048(完)移动操作及动画效果
  • Redis学习笔记——第20章 Lua脚本
  • MySQL--日志管理
  • 【Nuxt】内置组件和全局样式使用
  • Java中spring boot validation 自定义注解使用
  • Android笔试面试题AI答之广播(1)
  • 微软商店无法加载,检查你的连接-解决方案
  • 数据结构实验报告-树与二叉树
  • 基于Django+MySQL球馆场地预约系统的设计与实现(源码+论文+部署讲解等)
  • 8 MQTT
  • 【文件系统】抽象磁盘的存储结构 CHS寻址法 | sector数组 | LAB数组
  • 基于python旅游推荐系统(源码+论文+部署讲解等)
  • Mysql大单表JSON优化
  • 电脑开机启动项管理小工具,绿色免安装
  • 一例AutoHotkey语言生成的文件夹病毒分析
  • 【机器学习第7章——贝叶斯分类器】
  • C++ QT开发 学习笔记(3)
  • 【Python实战】如何优雅地实现文字 二维码检测?
  • 行为型设计模式3:模板方法/备忘录/解释器/迭代器
  • 思源笔记软件的优缺点分析
  • 追问试面试系列:Dubbo
  • 动手学深度学习V2每日笔记(卷积层)
  • qcom ucsi probe
  • flask和redis配合
  • 深度学习中的早停法
  • 科普文:JUC系列之多线程门闩同步器CountDownLatch的使用和源码
  • foreach循环和for循环在PHP中各有什么优势