文章目录
一、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:
-

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

被折叠的 条评论
为什么被折叠?



