k8s 滚动部署学习总结

news2024/11/27 12:47:49

k8s 滚动部署学习总结

滚动发布

滚动发布配置总结

定义:
滚动升级(Rolling update) 就是指每次更新部分Pod,而不是在同一时刻将该Service下面的所有Pod shutdown,然后去更新逐个更新可以避免将业务中断

使用Deployments实现系统部署

主要配置:

minReadySeconds: 30
strategy:
   rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
   type: RollingUpdate

strategy.type

指定部署策略可以是"Recreate"或者是 “RollingUpdate”。"RollingUpdate"是默认值。

  • Recreate: 重建式更新,在创建新 Pod 之前,所有现有的 Pod 会被杀死
  • RollingUpdate:滚动更新,简单定义 更新期间pod最多有几个等。可以指定maxUnavailable 和 maxSurge 来控制 rolling update 进程
Recreate会导致站点的停机,Recreate策略适合:不面向用户,可接受少了停机时间
RollingUpdate 可以让服务在接受用户流量的情况下,部署新的版本不出现停机

minReadySeconds

minReadySeconds是一个可选字段,用于指定新创建的 Pod 在没有任意容器崩溃情况下的最小就绪时间, 只有超出这个时间 Pod 才被视为可用。(如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了)默认值为 0

例如
minReadySeconds: 30 Pod就绪30秒后视为可用

可以结合readinessProbe 就绪探针一起使用,就绪探针可参考《k8s-故障转移 livenessProbe & readinessProbe 学习总结》

strategy.rollingUpdate.maxSurge

滚动升级过程中最多可以比原始Deployments中的replicas设置多出的POD数量(注意maxSurge值不能为0 默认值为 25%

例如:
maxSurage=1,replicas=2,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,
整个升级过程中最多会有2+1个POD。也可以使用百分比例如:10%

strategy.rollingUpdate.maxUnavaible

用来指定滚动升级过程中最多有多少个POD处于无法提供服务的状态,该值可以是绝对数字(例如,5),也可以是所需 Pod 的百分比(例如,10%)(注意maxUnavaible值不能为0 默认值为 25%

例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态,
可以保证有足够的pod(或者认为是足够的性能)提供服务。

滚动发布实例

Deployment 配置文件如下

apiVersion: apps/v1
kind: Deployment
metadata:
   name: order-service-deployment

spec:
    replicas: 2
    selector:
       matchLabels: #定义匹配的标签,必须要设置 只能配置一个(template.metadata.labels 中的一个)
          app: order-service #匹配的目标标签,
    strategy:
       rollingUpdate:
          maxSurge: 1 #整个升级过程中最多会有2+1个POD replicas=2
          maxUnavailable: 1 #最多只能有一个Pod不能使用
       type: RollingUpdate     #指定策略为滚动升级
    template:
       metadata:
           labels:
              app: order-service 
              version: "2ffff22"  #注意version 可以实现apply -f 镜像latest
      
    #定义pod信息 
       spec:
            imagePullSecrets:
                - name: myaliyunsecret     
            containers:
                - name: order-service-runtime #容器名称(自定义)
                  image: registry.cn-hangzhou.aliyuncs.com/jimliu/order-service:latest
                  # 就绪探测  控制Pod是否就绪 Service是否能够使用Pod
                  readinessProbe:
                    # 会访问localhost:5555/startok 这个http请求
                    httpGet: 
                   #scheme: http https 默认http
                       path: /startok
                       port: 5555
                   # 可以自定义请求头
                       httpHeaders:
                         - name: Custom-Header
                           value: Awesome
                    initialDelaySeconds: 5 #延迟探测时间
                    timeoutSeconds: 1
                    periodSeconds: 5 #访问频率
                    failureThreshold: 3

注意给template添加一个version自定义label,这样可以使用helm或者其他模板方式更新此字段 否则如果镜像是latest apply -f 会提示 unchanged

在这里插入图片描述

开始部署前

在这里插入图片描述

当前版本
在这里插入图片描述

重新创建镜像并推送

docker build -t order-service .
docker tag order-service registry.cn-hangzhou.aliyuncs.com/jimliu/order-service
docker push registry.cn-hangzhou.aliyuncs.com/jimliu/order-service:latest

开始滚动部署

可以看到此时已经停掉了一个pod 并正在创建两个新的pod

  • 满足maxSurage=1,replicas=2整个升级过程中最多会有2+1=3个POD
  • 满足maxUnavaible=1 最多只能有1个POD不可用

在这里插入图片描述

访问 http://192.168.0.160:5555/version 系统整体还是可以访问,并未中断服务

在这里插入图片描述

使用 kubectl rollout status deployment order-service-deployment 可以看到滚动部署的状态

在这里插入图片描述

部署完成后可以看到原来的pod已经被替换为新的pod
在这里插入图片描述

访问 http://192.168.0.160:5555/version 版本已经更新

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GEE初学者笔记之快速上手篇

1.基础概念 (1)谷歌云平台 整个GEE是基于Google Cloud云平台的一整套API开发环境。因此整个数据的处理全部都是在Google Cloud平台上实现的,无需本地机器参与运算。一般开发流程是在线/离线编辑代码,然后提交服务器端运行,完成之后会输出给我…

【Jenkins 2.x 实践指南】1.4 软件工程生产力--章节小结

目录 一、生产力三要素 1. 生产力 2. IT 中的生产力 二、Devops 和 Jenkins 1. DevOps 模式定义(AWS官方定义) 2. DevOps 实践经验 2.1 持续集成 2.2 持续交付 2.3 微服务 2.4 基础设施即代码 2.5 监控和日志记录 2.6 沟通与合作 一、生产力三要素 1. 生产力 劳动…

GPT系列简介与gpt训练(nanoGPT)

generateivelt pre-trained transformer ,GPT使用transformer做特征提取行,单项语言模型作为训练任务 gpt 1.0 通过自左向右生成式的构建预训练任务,然后得到一个通用的预训练模型,这个模型和BERT一样都可用来做下游任务的微调。GPT-1当时在…

Firefly-rk3288 开发板Linux系统编译

前言 手上的一块Firefly-RK3288开发板,看了下Firefly提供的SDK,压缩包就有15个多G,直接吓退。还好最近看到了韦东山老师提供的教学资料。记下学习步骤及遇到的问题解决办法。 1、开发环境 资料提供的有百问网制作的 ubuntu18.04 虚拟机镜像…

卷积计算转换为矩阵乘计算的几种场景和方法

本文默认卷积的输入输出数据格式为NHWC。 1x1卷积 输入shape为[N, H, W, C] , filter为[Hf, Wf, Ci, Co] FH, FW都为1,直接把输入shape reshape为[N, H * W, C], filter reshape为[[Hf * Wf * Ci, Co],然后进行矩阵乘得到[N, H * W, Co],再reshape为卷…

ChatGPT 本地部署及搭建

这篇简要说下清华开源项目 ChatGLM 本地部署的详细教程。清华开源项目 ChatGLM-6B 已发布开源版本,这一项目可以直接部署在本地计算机上做测试,无需联网即可体验与 AI 聊天的乐趣。 项目地址:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B&#xf…

一次小破站JS代码审计出XSS漏洞思路学习

今天看了小破站一个大佬的分析,感觉思路很有意思,感兴趣的xdm可以到大佬视频下提供的链接进行测试(传送门)这类社交平台的XSS漏洞利用起来其实危害是特别大的,利用XSS能在社交平台上呈现蠕虫式的扩散,大部分…

redis内存回收——过期、淘汰

DB结构删除策略惰性删除周期删除SLOWFAST淘汰策略redis内存设置过大时会增加同步等操作的复杂度 DB结构 /* Redis database representation. There are multiple databases identified* by integers from 0 (the default database) up to the max configured* database. The …

es 搜索中同时包含 “query“ 和 “filter“ 子句

Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询。 一、Query DSL 与 Filter DSL DSL查询语言中存在两种:查询DSL(query DSL)和过滤DSL(filter DSL…

数据库管理-第六十八期 Oracle 23c的其他(20230417)

数据库管理 2023-04-17第六十八期 Oracle 23c的其他1 DGPDB2 无锁并发总结第六十八期 Oracle 23c的其他 由于Oracle 23c的文档相对较少,一是当前文档主要面向开发人员,二是感觉实际内容还在不断增加,主要还有一点就是各种新特性的在官方文档…

几分种学会React Router v6使用

React路由可以实现页面间的切换。 传送门:英文文档 中文教程: https://www.reactrouter.cn/docs/getting-started/tutorial 1.基础使用 react 需求:实现一个普通的底部导航切换 1.安装react-router npm i react-router-dom62.配置根组件…

C#调试与测试 | DebuggerDisplay使用技巧

DebuggerDisplay使用技巧 文章目录DebuggerDisplay使用技巧前言DebuggerDisplay介绍示例代码前言 当你在开发一个大型的应用程序时,调试是一个不可避免的任务。调试器是你的好朋友,但是有时候它并不能直接给你所需的信息。这时,就需要使用 C…

线上问题排查异闻录

如何解决堆内存溢出问题 OOM有很多种情况啊,这里就先讲解最常见也是最容易观测的java.lang.OutOfMemoryError: Java heap space,也就是堆内存溢出。 发现 启动Java程序的时候,最好参数加上-XX:HeapDumpOnOutOfMemoryError,该参…

【RabbitMQ】RabbitMQ控制台的使用

一、访问控制台页面 如果在本机上装了RabbitMQ则在浏览器访问127.0.0.1:15672,如果在服务器装了RabbitMQ则通过在浏览器输入urlip:15762来访问 登录后进入主页 二、添加RabbitMQ用户 进入主页后选择Admin,对应找到添加用户选择输入信息后即可完成添加 三、添加Rab…

GROUP BY 与 聚合函数、 HAVING 与 ORDER BY-MySQL数据库 - 分组选择数据(头歌实践教学平台)

文章目的初衷是希望学习笔记分享给更多的伙伴,并无盈利目的,尊重版权,如有侵犯,请官方工作人员联系博主谢谢。 目录 第1关:GROUP BY 与 聚合函数 任务描述 相关知识 GROUP BY与聚合函数的使用 编程要求 第2关&…

交通 | 应用Benders分解方法解决多车生产路由问题

论文解读​ 曲晨辉,王飞龙 1 知识补充和文章贡献 2.1 IRP (Inventory routing problems) IRP关注的是在一个给定的规划范围内,从一个设施到一组客户的单一产品分配。客户以给定的速度消费产品,并可将产品的库存维持在一个特定的水平上。一组…

HTB-SolidState

HTB-SolidState信息收集80端口Apache Jamesmindyrbash绕过mindy -> root总结信息收集 80端口 目录扫描 从/README.txt文件里知道他们在捣鼓一个新的秘密项目,这个新的秘密项目就是一个新的网页外观。 80端口先点到为止,免得进兔子洞。 Apache James …

基于SpringBoot技术点餐系统的设计与实现(论文+源码)_kaic

摘 要 饮食行业的发展推动了服务的提升,在线点餐服务模式随之产生。相比于传统点餐,在线点餐更加方便地浏览菜品,挑选菜品,有更好的用餐体验。系统的使用减少了人工成本,方便数据统计,便于提供更优质的服务…

大数据学习路线图(2023完整版)适合收藏

大数据开发是一门涉及处理和分析大规模数据的技术领域,随着大数据技术的不断发展和应用,对大数据开发人员的需求也在逐渐增加。就业前景相对较好,尤其在科技行业和数据驱动型企业中。大数据开发的前景还是有很多优势的,就业范围广…

Ubuntu14.04+ROS-indigo版本安装教程

ROS之indigo版本安装教程 1、Ubuntu14.04安装(indigo对应的ubuntu版本是14.04) Ubuntu14.04 的下载地址https://www.releases.ubuntu.com/14.04/ 64位的电脑下载如下图 在虚拟机上配置了该镜像(我用的是VMware虚拟机) 2、ROS …