【kubernetes】Replicaset介绍和应用

一,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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值