【重识云原生】第四章云网络6.4.5.2节——Deployment配置详细说明

news/2024/5/7 1:32:52/文章来源:https://blog.csdn.net/junbaozi/article/details/127204256

1 deployment配置说明

1.1 deployment的资源清单文件

主要字段说明:

全量字段说明:

apiVersion: apps/v1 #版本号 
kind: Deployment #类型 
metadata: #元数据 name: #rs名称 namespace: #所属命名空间 labels: #标签 controller: deploy 
spec: #详情描述 replicas: #副本数量 revisionHistoryLimit: #保留历史版本,默认是10 paused: #暂停部署,默认是false progressDeadlineSeconds: #部署超时时间(s),默认是600 strategy: #策略 type: RollingUpdates #滚动更新策略 rollingUpdate: #滚动更新 maxSurge: #最大额外可以存在的副本数,可以为百分比,也可以为整数 maxUnavaliable: #最大不可用状态的pod的最大值,可以为百分比,也可以为整数 selector: #选择器,通过它指定该控制器管理哪些pod matchLabels: #Labels匹配规则 app: nginx-pod matchExpressions: #Expression匹配规则 - {key: app, operator: In, values: [nginx-pod]} template: #模板,当副本数量不足时,会根据下面的模板创建pod副本 metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80

1.2 编写 Deployment Spec

        在所有的 Kubernetes 配置中,Deployment 也需要 apiVersion,kind 和 metadata 这些配置项。配置文件的通用使用说明查看 部署应用,配置容器,和使用 kubeclt 管理资源 文档。

Deployment 也需要 .spec section.

1.2.1 Pod Template

        .spec.template 是 .spec 中唯一要求的字段。

        .spec.template 是 pod template. 它跟 Pod 有一模一样的 schema,除了它是嵌套的并且不需要 apiVersion 和 kind 字段。

        另外为了划分 Pod 的范围,Deployment 中的 pod template 必须指定适当的 label(不要跟其他 controller 重复了,参考 selector)和适当的重启策略。

.spec.template.spec.restartPolicy 可以设置为 Always , 如果不指定的话这就是默认配置。

1.2.2 Replicas

        .spec.replicas 是可以选字段,指定期望的 pod 数量,默认是 1。

1.2.3 Selector

        .spec.selector 是可选字段,用来指定 label selector ,圈定 Deployment 管理的 pod 范围。

        如果被指定, .spec.selector 必须匹配 .spec.template.metadata.labels,否则它将被 API 拒绝。如果 .spec.selector 没有被指定, .spec.selector.matchLabels 默认是 .spec.template.metadata.labels。

        在 Pod 的 template 跟 .spec.template 不同或者数量超过了 .spec.replicas 规定的数量的情况下,Deployment 会杀掉 label 跟 selector 不同的 Pod。

注意:你不应该再创建其他 label 跟这个 selector 匹配的 pod,或者通过其他 Deployment,或者通过其他 Controller,例如 ReplicaSet 和 ReplicationController。否则该 Deployment 会被把它们当成都是自己创建的。Kubernetes 不会阻止你这么做。

        如果你有多个 controller 使用了重复的 selector,controller 们就会互相打架并导致不正确的行为。

1.2.4 策略

        .spec.strategy 指定新的 Pod 替换旧的 Pod 的策略。 .spec.strategy.type 可以是 "Recreate" 或者是 "RollingUpdate"。"RollingUpdate" 是默认值。

1.2.4.1 Recreate Deployment

        .spec.strategy.type==Recreate 时,在创建出新的 Pod 之前会先杀掉所有已存在的 Pod。

1.2.4.2 Rolling Update Deployment

        .spec.strategy.type==RollingUpdate 时,Deployment 使用 rolling update 的方式更新 Pod 。你可以指定 maxUnavailable 和 maxSurge 来控制 rolling update 进程。

  • Max Unavailable

        .spec.strategy.rollingUpdate.maxUnavailable 是可选配置项,用来指定在升级过程中不可用 Pod 的最大数量。该值可以是一个绝对值(例如 5),也可以是期望 Pod 数量的百分比(例如 10%)。通过计算百分比的绝对值向下取整。如果 .spec.strategy.rollingUpdate.maxSurge 为 0 时,这个值不可以为 0。默认值是 1。

        例如,该值设置成 30%,启动 rolling update 后旧的 ReplicaSet 将会立即缩容到期望的 Pod 数量的 70%。新的 Pod ready 后,随着新的 ReplicaSet 的扩容,旧的 ReplicaSet 会进一步缩容,确保在升级的所有时刻可以用的 Pod 数量至少是期望 Pod 数量的 70%。

  • Max Surge

        .spec.strategy.rollingUpdate.maxSurge 是可选配置项,用来指定可以超过期望的 Pod 数量的最大个数。该值可以是一个绝对值(例如 5)或者是期望的 Pod 数量的百分比(例如 10%)。当 MaxUnavailable 为 0 时该值不可以为 0。通过百分比计算的绝对值向上取整。默认值是 1。

        例如,该值设置成 30%,启动 rolling update 后新的 ReplicaSet 将会立即扩容,新老 Pod 的总数不能超过期望的 Pod 数量的 130%。旧的 Pod 被杀掉后,新的 ReplicaSet 将继续扩容,旧的 ReplicaSet 会进一步缩容,确保在升级的所有时刻所有的 Pod 数量和不会超过期望 Pod 数量的 130%。

1.2.5 Progress Deadline Seconds

        .spec.progressDeadlineSeconds 是可选配置项,用来指定在系统报告 Deployment 的 failed progressing ——表现为 resource 的状态中 type=Progressing、Status=False、 Reason=ProgressDeadlineExceeded 前可以等待的 Deployment 进行的秒数。Deployment controller 会继续重试该 Deployment。未来,在实现了自动回滚后, deployment controller 在观察到这种状态时就会自动回滚。

        如果设置该参数,该值必须大于 .spec.minReadySeconds。

1.2.6 Min Ready Seconds

        .spec.minReadySeconds 是一个可选配置项,用来指定没有任何容器 crash 的 Pod 并被认为是可用状态的最小秒数。默认是 0(Pod 在 ready 后就会被认为是可用状态)。进一步了解什么时候 Pod 会被认为是 ready 状态,参阅 Container Probes。

1.2.7 Rollback To

        .spec.rollbackTo 是一个可以选配置项,用来配置 Deployment 回退的配置。设置该参数将触发回退操作,每次回退完成后,该值就会被清除。

1.2.7.1 Revision

        .spec.rollbackTo.revision 是一个可选配置项,用来指定回退到的 revision。默认是 0,意味着回退到上一个 revision。

1.2.8 Revision History Limit

        Deployment revision history 存储在它控制的 ReplicaSets 中。

        .spec.revisionHistoryLimit 是一个可选配置项,用来指定可以保留的旧的 ReplicaSet 数量。该理想值取决于新 Deployment 的频率和稳定性。如果该值没有设置的话,默认所有旧的 Replicaset 或会被保留,将资源存储在 etcd 中,使用 kubectl get rs 查看输出。每个 Deployment 的该配置都保存在 ReplicaSet 中,然而,一旦你删除的旧的 RepelicaSet,你的 Deployment 就无法再回退到那个 revison 了。

        如果你将该值设置为 0,所有具有 0 个 replica 的 ReplicaSet 都会被删除。在这种情况下,新的 Deployment rollout 无法撤销,因为 revision history 都被清理掉了。

1.2.9 Paused

        .spec.paused 是可选配置项,boolean 值。用来指定暂停和恢复 Deployment。Paused 和非 paused 的 Deployment 之间的唯一区别就是,所有对 paused deployment 中的 PodTemplateSpec 的修改都不会触发新的 rollout。Deployment 被创建之后默认是非 paused。

参考链接

Deployment

k8s中的deployment_遂言的博客-CSDN博客_deployment k8s

k8s之deployment详解 - 王叫兽 - 博客园

k8s之Deployment 资源详解 - 知乎

k8s之Deployment详解_Jeremy_Lee123的博客-CSDN博客_deployment k8s

k8s deployment

k8s之deployment - 路过的柚子厨 - 博客园

K8S-pod之Deployment - 简书

每天5分钟|轻松掌握开发工作必会的k8s-deployment与rs

kubernetes-Deployment部署无状态服务的原理详解(二十五) - Andya_net - 博客园

详解 Kubernetes Deployment 的实现原理 - 面向信仰编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_20741.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux自动挂载 (autofs)

个人主页:💗wei_shuo的个人主页 🏀 Hello World !🏀 文章目录实现自动挂载-autofsautofs工具简单使用autofs配置详细说明自动挂载资源有两种格式:相对路径挂载法绝对路径挂载法优化 Linux 系统性能安装 Tun…

动态代理详解

想要更加透彻的理解动态代理,首先要熟悉下静态代理 一、静态代理 总结来说:目标类和代理类实现了相同的接口,在代理类中依赖了目标类,代理类的方法中调用了目标类的方法,并做了一些增强性的工作。 1、实现静态代理&…

ROS|乌龟TF变换案例分析

1. 相关源码内容 1.1 turtle_df_demo.launch <launch><!-- Turtlesim Node--><node pkg"turtlesim" type"turtlesim_node" name"sim"/><node pkg"turtlesim" type"turtle_teleop_key" name"tel…

如何快速创建 GCDW 实例

GCDW 实例需云用户注册 GCDW 租户成功后&#xff0c; GBASE 云服务系统给租户分配独 立的实例&#xff0c; 同时创建租户的数据库根用户&#xff0c; 根用户即为该实例的超户&#xff0c; 拥有该实例 的最高权限&#xff0c; 租户可以通过根用户登录自己的实例管理数据&#xf…

Centos7 单机单网卡 RDO 安装 OpenStack

文档 OpenStack 涵盖太多知识量&#xff0c;总是找不到一个称心的官方文档 OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS 这个是中文版的&#xff0c;但是 UPDATED: 2017-06-12 11:14 &#xff0c;很古老了&#xff01;基本概念和思想还是一样的 h…

SiO2/罗丹明B荧光杂化纳米微球/硅钼比核壳结构二氧化硅微球钼酸钙荧光粉的性能

SiO2/罗丹明B荧光杂化纳米微球性能制备&#xff1a; 在甲苯存在下的反相微乳液体系中,将γ-缩水甘油醚氧丙基三甲氧基硅烷(KH560)与罗丹明B进行预反应&#xff1b;再与正硅酸乙酯( TEOS)经原位溶胶-凝胶反应,制备SiO2/罗丹明B荧光杂化纳米微球.通过FTIR、UV-Vis、TEM、TG和光致…

聚焦 | 电力行业国产操作系统迎来大市场,麒麟信安积极承接发展新机遇

近年来&#xff0c;针对信息安全的外部环境不确定性加剧&#xff0c;作为关系到国计民生的电力行业&#xff0c;加速了自主创新的步伐。 从2009年起&#xff0c;电力行业就开始采用拥有自主核心技术的软硬件设施&#xff0c;到如今&#xff0c;整个电力行业已普遍完成了调度自动…

4.<tag-排序和TopK问题的三种典型解法>补充: 面试题 17.14. 最小K个数 + lt.215-数组中的第K个最大元素 dbc

面试题 17.14. 最小K个数 [案例需求] TopK问题很普遍, 解题套路也很简单, 无非就是排序, 运用最基础的排序(如Array.sort(nums))复杂度为nlogn, 或者使用堆, 复杂度为nlogk, 或者在快排的基础上进行减治 详细参见此文: 点我 [思路分析一, 直接排序] 对原数组从小到大排序后取出…

毕业设计 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过…

Airflow学习笔记

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 项目中解决的问题 使用airflow调度hive脚本跑批任务 视频教程上整理知识点 学习视频&#xff1a;https://www.bilibili.com/video/BV1V7411K7Gy?p40&vd_sourceb002288652bae647c598ddf77f79a7b8 Airflow基本概念 Airfl…

【VUE2开发20221004】-day1.0

目录测试案例1&#xff1a;Vue常见指令&#xff1a;1、插值表达式2、v-bind指令v-bind指令注意事项简写v-bindv-bind属于单向绑定&#xff08;JS修改->HTML修改&#xff09;3、v-model指令v-model常用标签4、v-for指令5、v-on事件前端开发教程链接 vuejs官方教程 框架&…

刷题笔记-栈帧

例题1 阅读如下C代码片段&#xff08;其中Y表示代码指令地址&#xff09;&#xff1a; void overflow(char* pShellcode, int iLen) { Y1&#xff1a;char buffer[8]; Y2: memcpy(buffer, pShellcode, dwLen); Y3: „„ } Y4: int main() { Y5: „„ Y6: overflow("123…

多处理机的基本概念

本文内容是作者在进行计算机组成原理复习的时候&#xff0c;用王道的视频做笔记或者保存图的内容。后续如果看了其他书或者有其他理解会进行增加内容。 SISD&#xff08;单指令流数据流&#xff09; 特性&#xff1a;各指令序列只能并发、不能并行&#xff0c;每条指令处理一…

Prophet算法

Prophet简介 Prophet是FaceBook公司在2017年开源的一款时间序列建模工具。Prophet的方法是将时间序列看成是关于t的一个函数&#xff0c;用你和函数曲线的方法进行预测&#xff0c;所以这和传统的时间序列模型有本质上的区别&#xff0c;他更倾向于机器学习的建模方式。 Prop…

PO/PI

典型集成场景 PI总体架构

浅学设计模式(二)

目录&#xff1a; &#xff08;1&#xff09;工厂模式 简单工厂&#xff1a; 工厂方法模式&#xff1a; &#xff08;2&#xff09;抽象工厂模式 &#xff08;1&#xff09;工厂模式 简单工厂&#xff1a; 原来的方式使用new&#xff1a; 需要关心细节&#xff0c;如何创建对…

独家分享 圆梦阿里之后,我得到了这份SpringCloud Alibaba源码文档

Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件&#xff0c;可以轻松地使用Spring Cloud开发应用程序。 使用Spring Cloud Alibaba&#xff0c;只需添加一些注解和少量配置&#xff0c;即可将Spring Cloud应用连接到Alib…

Spring 4 IOC 相关内容 4.2 bean 实例化 3 实例工厂实例化

Spring 【黑马程序员2022新版SSM框架教程_SpringSpringMVCMaven高级SpringBootMyBatisPlus企业实用开发技术】 4 IOC 相关内容 文章目录Spring4 IOC 相关内容4.2 bean 实例化4.2.5 实例工厂与FactoryBean4.2.6 bean 实例化小结4.2 bean 实例化 4.2.5 实例工厂与FactoryBean …

Python学习笔记(四)——字符串与文本处理2

目录 字符串函数大合集 两端删除函数strip() 删除空白字符 删除两端指定字符 右端删除函数rstrip() 左端删除函数 字符串对齐 返回指定宽度字符串center() 原字符串居中对齐、左对齐、右对齐 字符串开始或结束符判定startswith()、endswith() 内置函数eval()&#x…

web期末作业设计网页 html+css+js制作非物质文化遗产坝漆国漆 2页

&#x1f329;️ 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f482; 作者主页: 【进入主页—&#x1f680;获取更多源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;HTML5网页期末作业 (1000套…