本文基于kubernetes 1.5.2版本编写
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文件例子
apiVersion: 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
分享到:
相关推荐
DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0-RC1DirBuster-1.0...
google-collect-1.0-rc1.jar
1.将jeecms自带的jcaptcha-1.0.jar 替换成jcaptcha-all-1.0-RC6.jar 2.修改配置文件WEB-INF/config/captcha-context.xml <constructor-arg index="0" ref="imageEngine"/> <constructor-arg type="int" index="1...
“isoviewer-1.0-RC-27.jar”是一个Java Archive(JAR)文件,它是Java编程语言的归档文件,包含Java类文件和其他资源。这个特定的版本“1.0-RC-27”意味着这是一个1.0版本的候选发布版,可能已经经过了多次迭代和...
cmake-3.10.0-rc4-win64-x64.msi cmake-3.10.0-rc4-win64-x64.msi cmake-3.10.0-rc4-win64-x64.msi
google-collections-1.0-rc1.jar
android-x86-7.1-rc1.part09.rar
cmake-3.20.0-rc1-linux-x86_64.tar.gz cmake-3.20.0-rc1-linux-x86_64.tar.gzcmake-3.20.0-rc1-linux-x86_64.tar.gz cmake-3.20.0-rc1-linux-x86_64.tar.gzcmake-3.20.0-rc1-linux-x86_64.tar.gz cmake-3.20.0-rc1-...
html2canvas-1.0.0-rc.4版本
mongodb-driver-3.4.0-rc1.jar mongodb-driver-3.4.0-rc1.jar mongodb-driver-3.4.0-rc1.jar mongodb-driver-3.4.0-rc1.jar
jquery.qtip-1.0.0-rc3.js 弹出层
jython-standalone-2.5.4-rc1.jar jython-standalone-2.5.4-rc1.jar jython-standalone-2.5.4-rc1.jar jython-standalone-2.5.4-rc1.jar
1. **解压源码**:使用`tar`命令解压qt-creator-2.8.0-rc-src.tar.gz文件到指定目录,例如`/opt/source`: ``` tar -xzf qt-creator-2.8.0-rc-src.tar.gz -C /opt/source ``` 2. **配置环境**:确保系统已安装...
sensorsimulator-2.0-rc1.zip模拟的传感器有: Accelerometer(加速度计), Compass(罗盘), Orientation(方向传感器), Temperature(温度传感器), Light(光传感器), Proximity(接近传感器), Pressure(压力...
mina-core-2.0.0-RC1-sources.jar
3.1.0.RC1增强了资源处理能力,支持自定义资源处理器和策略。 9. **异步方法执行**:此版本支持通过`@Async`注解实现方法的异步执行,提升应用程序的并发性能。 10. **Maven和Gradle支持**:3.1.0.RC1提供了对构建...
Gradle各个版本即将上线,官网下载不成功的,嫌官网下载速度慢的,可以直接在这里下载。本人会做一个gradle全版本的搜集。 gradle-4.1 gradle android studio 离线包
cmake-3.4.0-rc3-win32-x86.exe cmake-3.4.0-rc3-win32-x86.exe ) cmake-3.4.0-rc3-win32-x86.exe ) cmake-3.4.0-rc3-win32-x86.exe )
用java导入导出 excel所需要的jar包,里面包含 poi-3.0-rc4-20070503.jar poi-contrib-3.0-rc4-20070503.jar poi-scratchpad-3.0-rc4-20070503.jar 这三个jar包