kubernetes学习记录(7)——弹性伸缩与滚动升级

kubernetes学习记录(7)——弹性伸缩与滚动升级。

弹性伸缩

弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源。

Pod的弹性伸缩就是修改Replication Controller的Pod副本数。可以通过Kubectl scale命令实现。

创建Replication Controller

test-rc.yaml

apiVersion: v1 kind: ReplicationController metadata: name: test-rc spec: replicas: 2 selector: app: test template: metadata: labels: app: test spec: containers: - name: test command: - sleep - "3600" image: 192.168.121.143:5000/busybox imagePullPolicy: IfNotPresent restartPolicy: Always

创建RC

# kubectl create -f test-rc.yaml

查看创建出的Pod

# kubectl get pod --selector app=test -o wide
扩容Pod的数量到4 # kubectl scale rc test-rc --replicas=4 # kubectl get pod --selector app=test -o wide
缩容Pod的数量到1 # kubectl scale rc test-rc --replicas=1 # kubectl get pod --selector app=test -o wide

把Pod的数量设为0,即可删除RC关联的所有Pod。

滚动升级

滚动升级采用逐步替换的策略。

通过一个例子进行演示,演示应用从V1版本升到V2版本。

创建V1版本的RC。

my-app-v1-rc.yaml

apiVersion: v1 kind: ReplicationController metadata: name: myapp-v1 spec: replicas: 10 selector: app: myapp version: v1 template: metadata: labels: app: myapp version: v1 spec: containers: - name: myapp command: - sleep - "3600" image: 192.168.121.143:5000/busybox:v1 imagePullPolicy: IfNotPresent restartPolicy: Always

创建RC,查看RC和Pod。

# kubectl create -f my-app-v1-rc.yaml # kubectl get rc myapp-v1 -o wide # kubectl get pods --selector app=myapp -o wide
创建V2版本的RC。

my-app-v2-rc.yaml

apiVersion: v1 kind: ReplicationController metadata: name: myapp-v2 spec: replicas: 10 selector: app: myapp version: v2 template: metadata: labels: app: myapp version: v2 spec: containers: - name: myapp command: - sleep - "3600" image: 192.168.121.143:5000/busybox:v2 imagePullPolicy: IfNotPresent restartPolicy: Always

开始滚动升级

# kubectl rolling-update myapp-v1 -f my-app-v2-rc.yaml --update-period=10s

通过–update-period=10s设置每隔10s逐步增加V2版本的RC的Pod副本数量,逐步减少V1版本的RC的Pod副本数量。
升级完成后,删除V1版本的RC,保留V2版本的RC。

在升级过程中,可以进行回退。如果升级完成,则不可以使用这条指令进行回退。

# kubectl rolling-update myapp-v1 -f my-app-v2-rc.yaml --update-period=10s --rollback

时间: 2024-08-31 15:44:13

kubernetes学习记录(7)——弹性伸缩与滚动升级的相关文章

利用GPU性能指标进行弹性伸缩

随着人工智能大潮的风起云涌, 视频识别,语音识别,图像识别,自然语言翻译,AI画匠等基于GPU的在线预测也在遍地开花.而弹性伸缩对于人工智能服务来说尤为重要,一方面是业务压力峰值时巨大的计算力需求:另一方面当业务空闲时,GPU的空耗成本也是大家很难承受的.同时在与客户的交流中,我们也发现客户对于GPU资源的弹性伸缩也有很强的定制化需求,希望能自主控制触发条件,并在此基础上和自身业务指标相结合等等. 基于这种现实,我们提供了一套容器服务所扩容触发器结合第三方监控框架influxDB+Grafana

弹性伸缩部署

本文旨在通过介绍弹性伸缩技术以及弹性伸缩系统这款中间件产品,让开发同学了解到运维自动化给我们带来的便捷与保障. 从业务生命周期而言,正处上升期的应用,访问量可能每月甚至每周成指数倍数地增长,当你在为业务快速发展.脱颖而出而畅想自high:哥写得一手牛逼代码即将要支撑起阿里未来五年的腾飞了!!啪,程序运行FGC,啪,调用方超时,啪,触发限流~也许这已经是最近第N次的报警,也许这是最近第N次调用方打电话过来投诉,也许这是最近第N次的扩容--还能不能好好玩耍,专心把代码撸到极致?!业务下降期的应用或许

日志服务新功能发布(2)--弹性伸缩(Merge/Split)

在之前的文章<日志服务(原SLS)新功能发布(1)--支持保序写入和消费>中,我们提到了Shard支持Key映射的特性,通过这个特性能够支持对序有需求的应用场景.今天我们给大家介绍一个在削峰填谷或流量突增情况下的功能:弹性伸缩.在生产中我们往往会面临峰值和低值的情况,也会遇到因业务层映射不均衡,导致某一个分区(shard)有非常大流量的场景,弹性伸缩(Merge/Split)就是为此设计的利器. 使用弹性伸缩的应用场景 场景1(视频类):根据峰值.底值弹性扩容,控制成本 用户A是一个视频类网站

如何实现Docker应用的自定义弹性伸缩

简介 现在有很多客户很关心应用的自动弹性伸缩,有些客户也有自己的监控框架,并希望能跟阿里云容器服务进行集成.阿里云容器服务提供了服务弹性伸缩触发器,并能够跟监控框架集成来实现自定义的服务自动弹性伸缩. 阿里云容器服务会自动采集容器的监控数据,并可以通过集成将监控数据发送到三方的监控框架中.有了监控数据,我们可以在监控框架中定义自己的报警规则,当指标发生报警的时候调用阿里云容器服务提供的触发器来进行容器的扩容或者缩容. 下面用Influxdb,Kapacitor来介绍怎样通过触发器跟监控框架集成实

ROS 助你轻松实现应用的弹性伸缩

资源编排ROS 是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维等目的. 了解更多 当应用上线以后,我们就万事大吉了吗?非也非也,可能日常情况下,你的应用利用现有的资源能很容易的处理用户的请求,但是如果是节日,热点事件,双十一或者促销活动导致的流量暴涨呢,我们应该怎么去处理,相信大家肯定会说加资源啊,伸缩应用集群啊.是,这是一个好方法,但是说起来容易,做起来难,怎么能很快速的扩资源呢?当流量逐

在阿里云上进行Docker应用的自动弹性伸缩

简介 上次介绍了通过监控集成实现容器的自定义弹性伸缩.最近阿里云Docker容器服务发布了自动弹性伸缩的支持,可以非常方便的支持容器的自动弹性伸缩,从而更好的支持应用的弹性管理.能够自动的监控容器应用的指标,并根据配置的自动弹性伸缩的规则进行扩缩容.在业务增长超过监控指标阀值的时候自动增加容器应用的实例数目,并在业务下降的时候自动收缩容器数目.从而简化容器应用的管理,提高应用的可用性,提高资源的利益效率. 设置方法 使用镜像创建应用 在创建应用时,选择"使用镜像创建",这里我们部署一个

在阿里云上进行Docker集群的自动弹性伸缩

简介 在刚刚结束的云栖大会上,阿里云容器服务演示了容器的自动弹性伸缩,能够从容应对互联网应用的峰值流量.关于阿里云上容器的自动弹性伸缩,可以参考文章在阿里云上进行Docker应用的自动弹性伸缩. 同时在流量变大的时候自动进行容器的弹性伸缩,要求容器集群有很好的容量规划,必须有多余的集群资源以支持弹性扩容.但问题是当流量变大,容器扩容导致集群资源不够的时候怎么办呢,是否需要手工进行容器集群的扩容?实际阿里云容器服务不仅支持容器级别的自动弹性伸缩,也支持集群节点级别的自动弹性伸缩.从而真正做到从容应

一分钟了解阿里云产品:弹性伸缩之体验

知道弹性伸缩开始公测,马上申请了公测资格,开始体验传说中的弹性伸缩.在此之前,笔者都是靠手动完成ECS数量的增加或者删除的.现在,就让我们先用为爽吧!   第一步,当然是要开通弹性伸缩服务.   在此先把我已开通的需要叠加弹性伸缩服务的资源给大家介绍下: 一个SLB实例,将HTTP请求按照会话保持的方式分发到后台ECS服务器. 两台ECS实例,安装了wordpress. 一个RDS实例,为多个wordpress应用服务器提供共享数据库服务.   在整个测试系统的部署位置如下图红色虚线内所示. 红

弹性伸缩服务1-2-3

弹性伸缩是根据用户的业务需求自动调整弹性计算资源的服务,即能够根据应用负载情况自动扩张和收缩应用环境所使用的计算资源.在请求增加时,弹性伸缩能够为自动分配更多的计算资源,在请求下降时,弹性伸缩能够自动回收过量的资源.这样,带来一个好处是在满足客户需求的情况下,我们只需要为短期使用的资源来付费,即Pay as you go.如果我们的业务请求模式具有较大的波动性,如广告.游戏和直播等,使用弹性伸缩打造高可用高弹性的应用是非常好的选择. 从特性来看,弹性伸缩服务为构建弹性可扩展的应用开发提供了以下两