Kubernetes知识篇:Kubernetes之Replicaset控制器》

本文详细介绍了Kubernetes中的ReplicaSet,作为副本控制器,它保证了Pod副本的数量,并在节点故障时自动恢复。ReplicaSet支持声明式更新,通过标签选择器和pod模板管理Pod。文章还分享了编写ReplicaSet资源清单文件的技巧,以及如何进行扩容、缩容和自动伸缩操作。最后,提到了使用HorizontalPodAutoscaler(HPA)进行自动伸缩的配置和实践。



一、Replicaset概述

ReplicaSet是kubernetes中的一种副本控制器,简称rs,是新一代的ReplicationController,相比较与ReplicationController,其Pod选择器的表达能力更强,可匹配缺少某个标签或特定标签名的Pod。

ReplicaSet能够实现以下功能
1、确保pod副本的数量始终维持在预设的个数
2、确保pod监控运行:探测到由其管控的pod对象因其所在的工作节点故障而不可用时,自动请求由调度器调度到其它工作节点创建缺失的pod副本。
3、弹性伸缩:业务规模因各种原因经常存在明显波动,在波峰或波谷期间,可以通过rs控制器动态调整相关pod资源对象数量。此外,在必要时还可以通过hpa(HroizontalPodAutoscaler)控制器实现pod资源规模的自动伸缩。

官方推荐不要直接使用ReplicaSet,用Deployments取而代之,Deployments是比ReplicaSet更高级的概念,它会管理ReplicaSet并提供很多其它有用的特性,最重要的是Deployments支持声明式更新,声明式更新的好处是不会丢失历史变更。所以Deployment控制器不直接管理Pod对象,而是由Deployment管理ReplicaSet,再由ReplicaSet负责管理Pod对象。

Replicaset控制器主要由三个部分组成
1、用户期望的pod副本数:用来定义由这个控制器管控的pod副本有几个
2、标签选择器:选定哪些pod是自己管理的,如果通过标签选择器选到的pod副本数量少于我们指定的数量,需要用到下面的组件
3、pod资源模板:如果集群中现存的pod数量不够我们定义的副本中期望的数量怎么办,需要新建pod,这就需要pod模板,新建的pod是基于模板来创建的。


二、Replicaset资源清单文件编写技巧

[root@k8s-client-17 yaml]# kubectl explain replicaset.spec
KIND:     ReplicaSet
VERSION:  apps/v1

RESOURCE: spec <Object>

DESCRIPTION:
     Spec defines the specification of the desired behavior of the ReplicaSet.
     More info:
     https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

     ReplicaSetSpec is the specification of a ReplicaSet.

FIELDS:
   minReadySeconds	<integer> #新建的pod对象,在启动后的多长时间内如果其容器未发生崩溃等异常情况即被视为就绪;默认0s,表示一旦就绪性探测成功,即被视作可用  
   replicas	<integer> #期望的pod对象副本数
   selector	<Object> -required-  #必须字段,当前控制器匹配pod对象副本的标签选择器,支持matchLabels和matchExpressions两种匹配机制。
   template	<Object> #用于补足pod副本数量时使用的pod模板资源

三、Replicaset使用案例

由于ReplicaSet是ReplicationController的代替物,因此用法基本相同,唯一的区别在于ReplicaSet除了可以使用matchLabels,也支持集合式的selector。一个典型的RS描述文件如下:

[root@k8s-client-17 yaml]# vim nginx-replicaset.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
    matchExpressions:
      - 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值