一、Replication Controller(RC)

是pod的复制抽象,用于解决pod的扩容缩容问题,保证应用能够持续运行。

1. 作用

a.确保pod数量:

RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反之则杀死多余的。

b.确保pod健康:

当pod不健康,运行出错或者无法提供服务时,RC也会杀死不健康的pod,重新创建新的。

c.弹性伸缩 :

在业务高峰或者低峰期的时候,可以通过RC动态的调整pod的数量来提高资源的利用率。同时,配置相应的监控功能(Hroizontal Pod Autoscaler),会定时自动从监控平台获取RC关联pod的整体资源使用情况,做到自动伸缩。

d.滚动升级:

滚动升级为一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始化升级的时候就可以及时发现和解决问题,避免问题不断扩大。

2. RC和pod关系

RC中selector设置一个label,去关联pod的label,selector的label与pod的label相同,那么该pod就是该rc的一个实例;

RC中Replicas设置副本数大小,系统根据该值维护pod的副本数。
Replicaset在继承Pod的所有特性的同时, 它可以利用预先创建好的模板定义副本数量并自动控制, 通过改变Pod副本数量实现Pod的扩容和缩容

缺点: 无法修改template模板, 也就无法发布新的镜像版本

3. RC模块(内置pod模块)的yaml文件

{"kind": "ReplicationController","apiVersion": "v1","metadata": {"name": "app-tomcat","namespace": "default","labels": {"name": "app-tomcat"}},"spec": {"replicas": 2(副本数),"selector": {"name": "app-tomcat(选择的pod的label)"},"template": {"metadata": {"labels": {"name": "app-tomcat(pod的label)"}},"spec": {"containers": [{"name": "kaifa2-group-tomcat","image": "192.168.54.64:5000/tomcat-248:V1.0","command": ["/bin/bash","/opt/apache-tomcat-7.0.57/bin/catalina.sh","run"],"env": [{"name": "url_addr","value": "http://192.168.54.64:8080/paas/jsp/index.jsp"}],"resources": {"limits": {"cpu": "1","memory": "1073741824"},"requests": {"cpu": "100m","memory": "104857600"}},"imagePullPolicy": "Always"}],"restartPolicy": "Always","nodeSelector": {"group": "node1"}}}}
}

二、replicaset(RS)

被认为 是“升级版”的RC,在新版本的 Kubernetes 中建议使用 ReplicaSet(简称为RS )来取代 ReplicationController。

ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,RS也是用于保证与label selector匹配的pod数量维持在期望状态。

但ReplicaSet 支持集合式的 selector(ReplicationController 仅支持等式)。

Kubernetes官方强烈建议避免直接使用ReplicaSet,而应该通过Deployment来创建RS和Pod。

1. 创建Replicaset

vi replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: frontendlabels:app: guestbooktier: frontend
spec:# this replicas value is default# modify it according to your casereplicas: 3selector:matchLabels:tier: frontendmatchExpressions:- {key: tier, operator: In, values: [frontend]}template:metadata:labels:app: guestbooktier: frontendspec:containers:- name: php-redisimage: gcr.io/google_samples/gb-frontend:v3resources:requests:cpu: 100mmemory: 100Mienv:- name: GET_HOSTS_FROMvalue: dns# If your cluster config does not include a dns service, then to# instead access environment variables to find service host# info, comment out the 'value: dns' line above, and uncomment the# line below.# value: envports:- containerPort: 80
kubectl create -f replicaset.yaml

以上RS描述文件中,selector除了可以使用matchLabels,还支持集合式的操作:

   matchExpressions:- {key: tier, operator: In, values: [frontend]}

2. 查看replicaset

kubectl get replicaset
kubectl describe replicaset

3.删除replicaset

使用kubectl delete命令会删除此RS以及它管理的Pod。在Kubernetes删除RS前,会将RS的replica调整为0,等待所有的Pod被删除后,在执行RS对象的删除。

如果希望仅仅删除RS对象(保留Pod),请使用kubectl delete命令时添加--cascade=false选项。

kubectl delete replicaset demo-rc

4. ReplicaSet的伸缩

通过修改.spec.replicas的值可以实时修改RS运行的Pod数量。

5. Horizontal Pod Autoscaler(HPA)

RS可以通过HPA来根据一些运行时指标实现自动伸缩,下面是一个简单的例子:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: frontend-scaler
spec:scaleTargetRef:kind: ReplicaSetname: frontendminReplicas: 3maxReplicas: 10targetCPUUtilizationPercentage: 50

上面的描述文件会创建一个名为frontend-scaler的HorizontalPodAutoscaler,它会根据CPU的运行参数来对名为frontend的RS进行自动伸缩。

https://blog.csdn.net/liyingke112/article/details/76549048

https://blog.csdn.net/bbwangj/article/details/81812675

https://www.jianshu.com/p/fd8d8d51741e

kubernetes RC(Replication Controller)和RS(Replicaset)的作用和区别相关推荐

  1. Kubernetes(k8s)的RC(Replication Controller)副本控制器

    1.RC(Replication Controller)副本控制器,Replication Controller的作用. 应用托管在kubernetes之后,kubernetes需要保证应用能够持续运 ...

  2. Kubernetes对象之Replication Controller(RC)和Replica Sets(RS)

    关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! 作者:ChenVast: 原文链接: https:/ ...

  3. 容器编排技术 -- Kubernetes Replication Controller

    容器编排技术 -- Kubernetes Replication Controller 1 ReplicationController 工作原理 1.1 示例: 1.2 删除ReplicationCo ...

  4. Kubernetes基础:资源扩缩容方法(Replication Controller)

    Kubernetes提供了多种方式对于资源的扩缩容进行操作,这篇文章以RC(Replication Controller)为例进行说明. 常用方法 方法1: 使用kubectl scale进行扩缩容 ...

  5. k8s学习笔记(10)--- kubernetes核心组件之controller manager详解

    kubernetes核心组件之controller manager详解 一.Controller Manager简介 1.1 Replication Controller 1.2 Node Contr ...

  6. Replication Controller、Replica Set

    假如我们现在有一个Pod正在提供线上的服务,我们来想想一下我们可能会遇到的一些场景: 某次运营活动非常成功,网站访问量突然暴增 运行当前Pod的节点发生故障了,Pod不能正常提供服务了 第一种情况,可 ...

  7. kubernetes 核心组件之 Controller Manager

    文章目录 Controller Manager 简介 Controller Manager 架构设计 Reflactor Informer Controller Replication Control ...

  8. Kubernetes 编写自定义 controller

    原文链接:Kubernetes编写自定义controller 来自kubernetes官方github的一张图: 如图所示,图中的组件分为client-go和custom controller两部分: ...

  9. 一阶的RC高低通电路和微积分电路有什么区别

    一阶的RC高低通电路和微积分电路有什么区别啊?就比如积分电路和低通电路,感觉在传递函数上是一样的啊,我用积分电路写个程序,时域上的波形按公式积分,怎么得不到想要的结果呢,可能是程序写错了,但是还是对这 ...

  10. Kubernetes探索学习005--Kubernetes的Controller模型和ReplicaSet伸缩

    1.Kubernetes的controller pattern 需要认识到Kubernetes操作Pod的逻辑,都是由控制器来完成的. 查看之前写过的nginx-deployment的YAML文件 [ ...

最新文章

  1. python归一化代码_python中的快速图像归一化
  2. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件
  3. FFmpegInterop 库在 Windows 10 应用中的编译使用
  4. 张艾迪(创始人): 梦想与未来
  5. asp.net 图片 上传 打水印 高质量缩略图
  6. 如何优化WebRTC提升直播体验?
  7. mock模拟接口测试 vue_在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟...
  8. 网站域名检测是否被QQ/微信拦截工具
  9. spring boot初步
  10. POJ-1426-Find The Multiple
  11. 知行之桥EDI系统中那些你忽略的功能
  12. windos10专业版激活(可用)
  13. python django文档_翻译:Django官方文档-前言
  14. js vue 获取 (昨天、今天、明天) 时间
  15. linux mysql 光盘安装教程_Linux上mysql安装详细教程
  16. 世界著名设计公司-网址介绍
  17. 小型土路肩摊铺机施工步骤与工作原理的特点
  18. 对文本文件的加密解密
  19. 免费开源CDN jsDelivr使用
  20. 4. 卷积神经网络CNN

热门文章

  1. Linux 防火墙配置
  2. 我错了——虚拟光驱 for linux
  3. JavaWeb学习笔记7--JSP脚本元素、指令元素、动作元素
  4. 用户推广成果总结会议
  5. android原生browser分析(一)--Application
  6. [leetcode] Excel Sheet Column Title
  7. spring AOP的方式监控方法的执行时间
  8. A*算法(最佳优先搜索)
  9. python discover()没有加载测试用例_Python系统学习 - Unittest
  10. (1)numpy.power