一,Replicaset介绍
1,概述
ReplicaSet是kubernetes中的一种副本控制器,简称rs,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。
2,工作原理
Replicaset核心作用,在于代用户创建指定数量的pod副本,并确保pod副本一直处于满足用户期望的数量, 起到多退少补的作用,并且还具有自动扩容缩容等机制。
3,组成部分(3个)
1、用户期望的pod副本数
2、标签选择器
3、pod资源模板:pod数量不够时,新建的pod是要基于模板来创建。
4,Replicaset资源文件编写技巧
kubectl explain rs
apiVersion <string> #当前资源使用的api版本,跟VERSION: apps/v1保持一致
kind <string> #资源类型,跟KIND: ReplicaSet保持一致
metadata <Object> #元数据,定义Replicaset名字的
spec <Object> #定义副本数、定义标签选择器、定义Pod模板
minReadySeconds <integer>
replicas <integer> #定义的pod副本数,根据我们指定的值创建对应数量的pod
selector <Object> -required- #用于匹配pod的标签选择器
template <Object> #定义Pod的模板,基于这个模板定义的所有pod是一样的
metadata <Object>
spec <Object>
status <Object> #状态信息,不能改
【注意】:ReplicaSet资源中有两个spec字段:
第一个spec声明的是ReplicaSet定义多少个Pod副本(默认将仅部署1个Pod)、匹配Pod标签的选择器、创建pod的模板。
第二个spec是spec.template.spec:主要用于Pod里的容器属性等配置。
.spec.template里的内容是声明Pod对象时要定义的各种属性,所以这部分也叫做PodTemplate(Pod模板)。
还有一个值得注意的地方是:
在.spec.selector中定义的标签选择器,必须能够匹配到spec.template.metadata.labels里定义的Pod标签,否则Kubernetes将不允许创建ReplicaSet。
二,Replicaset应用
管理pod:
-
扩容:修改配置文件replicaset.yaml里的replicas的值,增大。然后执行
kubectl apply -f replicaset.yaml
-
缩容:修改配置文件replicaset.yaml里的replicas的值,减小。然后执行
kubectl apply -f replicaset.yaml
-
更新:将镜像地址更改后,执行
kubectl apply -f replicaset.yaml
,并没有更新。需要手工单独删除pod,才能实现镜像的更新。
三,Replicaset案例参考
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
namespace: default
spec:
replicas: 5
selector:
matchLabels:
tier1: frontend1
template:
metadata:
labels:
tier1: frontend1
spec:
containers:
- name: php-redis
image: docker.io/ikubernetes/myapp:v2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
startupProbe:
periodSeconds: 5
initialDelaySeconds: 20
timeoutSeconds: 10
httpGet:
scheme: HTTP
port: 80
path: /
livenessProbe:
periodSeconds: 5
initialDelaySeconds: 20
timeoutSeconds: 10
httpGet:
scheme: HTTP
port: 80
path: /
readinessProbe:
periodSeconds: 5
initialDelaySeconds: 20
timeoutSeconds: 10
httpGet:
scheme: HTTP
port: 80
path: /
restartPolicy: Always