kubernetes资源对象--RC和RS
Replication Controller(RC)
应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作内容。
主要功能
确保pod数量:RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会 根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反之则杀死多余的。
确保pod健康:当pod不健康,运行出错或者无法提供服务时,RC也会杀死不健康的pod,重新创建新的。
弹性伸缩 :在业务高峰或者低峰期的时候,可以通过RC动态的调整pod的数量来提高资源的利用率。同时,配置相应的监控功能(Hroizontal Pod Autoscaler),会定时自动从监控平台获取RC关联pod的整体资源使用情况,做到自动伸缩。
滚动升级:滚动升级为一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始化升级的时候就可以及时发现和解决问题,避免问题不断扩大。
弹性伸缩
弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源。反映到K8S中,指的是可根据负载的高低动态调整Pod的副本数量。调整Pod的副本数是通过修改RC中Pod的副本是来实现的,示例命令如下:
扩容Pod的副本数目到10 kubectl scale relicationcontroller lykops --replicas=10
缩容Pod的副本数目到1 kubectl scale relicationcontroller lykops --replicas=1
滚动升级
滚动升级是一种平滑过渡的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始升级的时候就可以及时发现、调整问题,以保证问题影响度不会扩大。
升级方式
使用配置文件升级
kubecl rolling-update lykops-rc-v1 -f lykops-rc.yaml --update-period=10s
直接使用images
kubectl rolling-update lykops-rc --image=webapache:v3
升级过程
升级开始后,首先依据提供的定义文件创建v2版本的RC,然后每隔10s(--update-period=10s)逐步的增加v2版本的Pod副本数,逐步减少v1版本Pod的副本数。升级完成之后,删除v1版本的RC,保留v2版本的RC,及实现滚动升级。
升级回滚
升级过程中,发生了错误中途退出时,可以选择继续升级。K8S能够智能的判断升级中断之前的状态,然后紧接着继续执行升级。当然,也可以进行回退,命令如下:
kubectl rolling-update lykops-v1 -f lykops-v2-rc.yaml --update-period=10s -–rollback
yaml文件例子
升级之前的yaml文件为
apiVersion: v1 kind: ReplicationController metadata: name: lykops-rc labels: app: apache version: v1 spec: replicas: 5 selector: app: apache version: v1 template: metadata: labels: app: apache version: v1 spec: containers: - name: apache-rc image: web:apache command: [ "sh", "/etc/run.sh" ] ports: - containerPort: 80 name: http protocol: TCP
升级用的yaml文件内容为
apiVersion: v1 kind: ReplicationController metadata: name: test-rc-v2 labels: app: apache version: v1 spec: replicas: 5 selector: app: apache version: v2 template: metadata: labels: app: apache version: v2 spec: containers: - name: apache-rc-v2 image: web:apache command: [ "sh", "/etc/run.sh" ] ports: - containerPort: 80 name: http protocol: TCP
注意事项
要求新的RC需要使用旧的RC的Namespace。
RC的名字(name)不能与旧的RC的名字相同;
在selector中应至少有一个Label与旧的RC的Label不同,以标识其为新的RC。
metadata与之前相同,否则升级后service无法对应上。
replica set(RS)
被认为 是“升级版”的RC。RS也是用于保证与label selector匹配的pod数量维持在期望状态。
区别在于,
1、RC只支持基于等式的selector(env=dev或environment!=qa),但RS还支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa)),这对复杂的运维管理很方便。 2、升级方式 RS不能使用kubectlrolling-update进行升级 kubectl rolling-update专用于rc RS升级使用deployment或者kubectl replace命令
社区引入这一API的初衷是用于取代vl中的RC,也就是说当v1版本被废弃时,RC就完成了它的历史使命,而由RS来接管其工作。
yaml文件例子
本文转自开源中国- kubernetes资源对象--RC和RSapiVersion: extensions/v1beta1 kind: ReplicaSet metadata: name: lykops-rs labels: software: apache project: lykops app: lykops-rs version: v1 spec: replicas: 2 selector: matchLabels: name: lykops-rs software: apache project: lykops app: lykops-rs version: v1 template: metadata: labels: name: lykops-rs software: apache project: lykops app: lykops-rs version: v1 spec: containers: - name: lykops-rs image: web:apache command: [ "sh", "/etc/run.sh" ] ports: - containerPort: 80 name: http proto
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes on ARM,基于HypriotOS
Kubernetes是一个基于Docker的集群管理系统,现在也可以在ARM集群上运行。这 里介绍基于HypriotOS操作系统的Kubernetes安装和使用过程(基于树莓派)。也可以在多种基于ARMbian操作系统 (https://www.armbian.com/)的ARM板上运行(参见 https://www.armbian.com/download/)。 1、烧录操作系统固件 HypriotOS 到 SD cards 硬件上, 至少两个Raspberry Pis 能够相互连接,并且连接到Internet。 首先, 我们需要一个操作系统,下载和烧写 HypriotOS。最快速的方式是使用 flash tool,如下: flash --hostname node01 https://github.com/hypriot/image-builder-rpi/releases/download/v1.4.0/hypriotos-rpi-v1.4.0.img.zip 对所有的树莓派执行上面的操作,然后启动。 然后, SSH进入Raspberry Pis: ssh pirate@node...
- 下一篇
Kubernetes Dashboard on Ubuntu 16.04安装记录
Kubernetes Dashboard on Ubuntu 16.04安装记录 以下内容在Kubernetes 1.9.3 + Ubuntu 16.04.4(Server & Desktop)上试验通过。 Kubernetes Dashboard(https://github.com/kubernetes/dashboard)是Kubernetes的Web UI管理工具,可以 支持多种K8s运行环境,在Docker for Mac上可以快速安装使用(https://my.oschina.net/u/2306127/blog/1606599),但在Ubuntu上有一些区别,这里是安装过程的记录。 1、安装flannel网络驱动 执行下面的命令,安装flannel网络驱动(是不同pod互访必须的驱动,可选其它的网络驱动): kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml !!!安装flannel网络出现pending挂起问...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度