[置顶] kubernetes资源类型--RC和RS
Replication Controller(RC)
RC是K8S中的另一个核心概念,应用托管在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 scalerelicationcontroller yourRcName --replicas=10
缩容Pod的副本数目到1
kubectl scalerelicationcontroller yourRcName --replicas=1
滚动升级
滚动升级是一种平滑过渡的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始升级的时候就可以及时发现、调整问题,以保证问题影响度不会扩大。
升级方式
使用配置文件升级
kubectlrolling-update test-rc-v1 -f test-rc.yaml --update-period=10s
直接使用images
kubectlrolling-update test-rc --image=webapache:v3
升级过程
升级开始后,首先依据提供的定义文件创建v2版本的RC,然后每隔10s(--update-period=10s)逐步的增加v2版本的Pod副本数,逐步减少v1版本Pod的副本数。升级完成之后,删除v1版本的RC,保留v2版本的RC,及实现滚动升级。
升级回滚
升级过程中,发生了错误中途退出时,可以选择继续升级。K8S能够智能的判断升级中断之前的状态,然后紧接着继续执行升级。当然,也可以进行回退,命令如下:
kubectlrolling-update my-rcName-v1 -f my-rcName-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
protocol: TCP
[置顶] kubernetes资源类型--RC和RS的更多相关文章
- [置顶]
kubernetes资源类型--PetSets/StatefulSet
PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet.除了改了名字之外,这一API对象并没有太大变化. 注意:以下内容的验证环境为CentOS7.K8S版本1.5.2,并部署Sk ...
- [置顶]
kubernetes资源类型--持久化存储Persistent Volume和Persistent Volume Claim
概念 存储管理跟计算管理是两个不同的问题.理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据. 为了简化对存储调度,K8S对存储的供应 ...
- [置顶]
kubernetes资源类型--ingress
Ingress在K8S1.1之前还没有. 概念 Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端. Ingress是一个允许入 ...
- [置顶]
kubernetes资源类型--DaemonSet
概念 DaemonSet能够让所有(或者特定)的节点运行同一个pod. 当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调 ...
- [置顶]
kubernetes资源类型--secret和Service Account
secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...
- [置顶]
kubernetes资源类型--pod和job
pod Pod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成:整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod.如何保证Pod的数量.如何访问Pod等. 特点 Pod是能够被创 ...
- [置顶]
kubernetes资源类型--deployment
Deployment(中文意思为部署.调度)提供了一种更加简单的更新RC和Pod的机制,K8S版本1.2实现的.通过在Deployment中描述所期望的集群状态,Deployment Controll ...
- [置顶]
kubernetes资源类型--Volume
在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失.如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中.在K8S中,当Pod重建的时候 ...
- [置顶]
kubernetes资源类型--Service
为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持.K8S中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构. 实现原理 S ...
随机推荐
- canvas 基础
1.<canvas>元素 <canvas id="tutorial" width="150" height="150"&g ...
- 【R】多元线性回归
R中的线性回归函数比较简单,就是lm(),比较复杂的是对线性模型的诊断和调整.这里结合Statistical Learning和杜克大学的Data Analysis and Statistical I ...
- Codeforces Round #384 (Div. 2) 734E(二分答案+状态压缩DP)
题目大意 给定一个序列an,序列中只有1~8的8个整数,让你选出一个子序列,满足下列两个要求 1.不同整数出现的次数相差小于等于1 2.子序列中整数分布是连续的,即子序列的整数必须是1,1,1.... ...
- HDU 6165 FFF at Valentine(Tarjan缩点+拓扑排序)
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- [bzoj] 3263 陌上花开 洛谷 P3810 三维偏序|| CDQ分治 && CDQ分治讲解
原题 定义一个点比另一个点大为当且仅当这个点的三个值分别大于等于另一个点的三个值.每比一个点大就为加一等级,求每个等级的点的数量. 显然的三维偏序问题,CDQ的板子题. CDQ分治: CDQ分治是一种 ...
- 洛谷 P1903 [国家集训队]数颜色 解题报告
P1903 [国家集训队]数颜色 题目描述 墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1.Q L R代表询问你从第\(L\) ...
- JavaScript的团队编程规范
本规范是针对javascript函数式编程风格与公司严重依赖于jQuery进行编码的现实制定出来. 禁止使用eval,with与caller(ecma262 v5 的use strict要求).eva ...
- AGC019-E Shuffle and Swap
给定两个长度为\(n\le 10^5\)的\(01\)串 \(A, B\), 满足 \(1\) 的数量相等 求通过下列方式将\(A\)变成\(B\)的概率 (mod意义下) 构造序列\(a,b\). ...
- linux缺页异常处理--用户空间【转】
转自:http://blog.csdn.net/vanbreaker/article/details/7870769 版权声明:本文为博主原创文章,未经博主允许不得转载. 用户空间的缺页异常可以分为两 ...
- [BZOJ4990][Usaco2017 Feb]Why Did the Cow Cross the Road II dp
4990: [Usaco2017 Feb]Why Did the Cow Cross the Road II Time Limit: 10 Sec Memory Limit: 128 MBSubmi ...