K8S ReplicaSet 原理 示例 HPA扩容

news2025/1/22 13:12:29

K8S ReplicaSet 基本使用

K8S ReplicaSet 对象的作用是在任意时间点保持一组稳定的副本Pod运行,因此,它通常用于保证指定数量的相同Pod的可用性。乍一看, ReplicaSet 对象的定义跟 Replication Controller 并没有什么区别,都是维护Pod运行的副本数量。但是 ReplicaSet 和 Replication Controller唯一的区别是:RS支持标签选择器(后续参数配置中有提到).

工作原理

K8S ReplicaSe使用配置文件进行对象定义,包括一个选择器,以及关联pod的副本数量,指示它应该维护多少pod副本。指定一个pod模板,根据Pod模板创建的新pod的对象,以满足副本数量标准。然后,ReplicaSet通过根据需要创建和删除Pod来实现其目的,以达到所需的数量。当ReplicaSet需要创建新的Pod时,它使用其Pod模板。

应用场景

应用场景

ReplicaSet确保在任何给定时间运行指定数量的pod副本。然而Deployments是一个更高级的概念,它管理复制集,并为Pods提供声明性更新以及许多其他有用的功能。因此,我们建议使用Deployments而不是直接使用ReplicaSet,除非您需要自定义更新编排或根本不需要更新。这实际上意味着您可能永远不需要操作ReplicaSet对象:请改用Deployments对象.

演示环境

  • OS 信息

    在这里插入图片描述

  • minikube 版本信息

    在这里插入图片描述

  • Kubectl 版本

    在这里插入图片描述

  • Dokcer 版本

    在这里插入图片描述

  • 启动minikube

    minikube start --driver=docker
    

演示示例

  • 创建配置文件

    # 创建 frontend.yaml 文件,内容如下
    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: frontend
      labels:
        app: guestbook
        tier: frontend
    spec:
      # modify replicas according to your case
      replicas: 3
      selector:
        matchLabels:
          tier: frontend
      template:
        metadata:
          labels:
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: gcr.io/google_samples/gb-frontend:v3
    
  • 创建集群

    kubectl apply -f frontend.yaml
    

    在这里插入图片描述

  • 查看集群状态

    kubectl get rs
    

    在这里插入图片描述

  • 查看集群详细状态

    kubectl describe rs/frontend
    

    在这里插入图片描述

  • 检查Pod示例信息

    kubectl get pods | grep frontend
    

    在这里插入图片描述

  • 验证Pod所属RS信息 - 开发者还可以使用以上Pod实例验证引用的ReplicaSet信息

    # 注意 frontend-pts5p 实例名称 需要跟上面三个Pod节点名称一致
    kubectl get pods frontend-pts5p -o yaml
    

    在这里插入图片描述

配置参数

  • 跟其它K8S 对象配置一样,创建ReplicaSet对象时,配置文件必须配置apiVersion、kind和 metadata 字段。对于ReplicaSetd对象,kind配置值必须为 ReplicaSet。

    当K8S为ReplicaSet创建新的Pod时,Pod实例的命名是以ReplicaSet对象定义中.metadata.name的值为基础,后面跟上随机字符串。

  • Pod Template

    .spec.template 部分定义了 Pod模板信息,该部分需要定义labels标签信息。在frontend.yaml示例中,定义了 label: tier 标签的值为:frontend。对于Pod 模板中重启策略字段 .spec.template.spec.restartPolicy,唯一允许的值为Always,如果不写,则默认为Always。

  • Pod Selector

    配置文件中的 .spec.selector 为标签选择器,该选择器用于选择匹配潜在的Pod,在frontend.yaml示例中,选择器是:

    matchLabels:
      tier: frontend
    

    在 ReplicaSet 对象定义中,.spec.template.metadata.labels 必须跟 spec.selector匹配,否则将拒绝创建对象

  • RC 副本

    用户可以通过设置.spec.replicas参数,来控制pod的运行数量。可以简单理解为该参数控制pod运行实例的节点数,该参数非常重要,如果未指定.spec.creplica,则默认值为1。

RS扩容

ReplicaSet 可以很轻松的实现HA自动扩容伸缩,动态调整RS中的Pod副本的运行数量。K8S支持两种扩容方式

配置扩容

  • 创建配置文件

    # vi ha.yaml
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: frontend-scaler
    spec:
      scaleTargetRef:
        kind: ReplicaSet
        name: frontend
      minReplicas: 3
      maxReplicas: 10
      targetCPUUtilizationPercentage: 50
    

    表示当检测到cpu资源利用率超过50%的时候,动态的添加Pod,以满足突发的业务,最大增加到10个Pod实例

  • 创建HPA扩容对象

    kubectl apply -f ha.yaml
    

    在这里插入图片描述

  • 查看HPA对象

    kubectl get hpa
    

    在这里插入图片描述

脚本扩容

此外kubectl命令行工具还提供相关脚本进行扩容,命令如下

kubectl autoscale rs frontend --max=10 --min=3 --cpu-percent=50

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI检测人员工衣工服着装不规范识别系统 yolo

AI检测人员工衣工服着装不规范识别系统基于opencvyolo网络深度学习模型对现场画面中人员着装穿戴实时监测分析。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN),用于实时进行目标检测。该算法将单个神经网络应用于完整的图像&#x…

Vivado综合属性之SRL_STYLE

本文介绍综合属性SRL_STYLE取register、srl、srl_reg、reg_srl、reg_srl_reg和block中的值时,对Schematic的影响。 SRL_STYLE用于指导Vivado将SRL(移位寄存器)映射为何种形式。 目录 默认值 测试代码 原理图 SRL_STYLE配置为register …

【JavaSE】String类

目录 前言: 1.1、了解字符串构造方法 1.2、求字符串长度(xxx.length()) 1.3、isEmpty()方法 1.4、String对象的比较 1.4.1、通过(str1 str2)来比较,这样比较的是两个引用当中的地址 1.4.2、 boolea…

【ONE·C++ || vector (一)】

总言 学习笔记,慢慢补充。 文章目录总言1、整体介绍:2、常用各种接口介绍2.1、vector的基本结构:构造、析构、赋值2.1.1、总体情况预览2.1.2、各项函数使用演示2.2、vector增删查改相关2.2.1、增删查改总览2.2.2、如何在vector中插入、删除、…

Kotlin之使用协程编写高效的并发程序

文章目录1.协程的基本用法2.更多的作用域构建器3.使用协程简化回调的写法协程属于Kotlin中非常有特色的一项技术,因为大部分编程语言中是没有协程这个概念的。那么什么是协程呢?它其实和线程有点相似,可以简单地将它理解成一种轻量级的线程。…

Linux学习入门

1、Linux简介 操作系统分类:桌面操作系统、、服务器操作系统、移动端操作系统、嵌入式操作系统桌面操作系统主要针对个人电脑,Linux在桌面操作系统的应用主要有国产操作系统,Ubuntu。服务器操作系统有windows和linux以及苹果,主流…

微信小程序是如何实现快速编译的?

过往中小企业或技术团队开发一个 App 的时间成本和人力成本居高难下,但是随着微信上线小程序,更像是为这部分群体打开了一扇天窗,此后小程序呈现出井喷式发展的状态,不仅微信,支付宝、百度、抖音等超级 App 都跟上步伐…

线程进阶

常见的锁策略乐观锁 vs 悲观锁乐观锁:预测锁竞争不是很激烈悲观锁:预测锁竞争会很激烈轻量级锁 vs 重量级锁轻量级锁加锁解锁开销比较小,效率更高重量级锁加锁解锁开销比较大,效率更低多数情况下,乐观锁,也…

在CSDN年收入竟达五位数?----大学生技术自媒体成长之路

前言: Hello大家好,我是Dream。 还有不到两周就要过年了,自己也马上迈入了21岁,感慨时间飞快,从19岁开始入驻C站,到现在也已经整整两年了,把自己最好的两年青春时光留在了CSDN,超百万…

定义输出格式的使用-printf()函数

目录&#x1f4d6;printf()函数简介格式化规定符格式控制特殊规定字符示例printf()函数简介 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。 printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);这里看输出很简…

Lua入门学习

一、初识Lua脚本 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。官网&#xff1a;https://www.lua.org/ 1、HelloWorld CentOS7默认已经安装…

什么是docker

文章目录简介Docker 架构特性局限Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c…

〖产品思维训练白宝书 - 产品思维认知篇⑨〗- 像 产品经理 一样去思考解决问题

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

数据结构:算法的初步认识

算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 什么是算法 要求你写一个求 123…100 结果的程序&#xff0c;你应该怎么写呢? 大多数人会马上写出下面的C语言代码(或者其他语言的代码): int a,…

seata的AT模式

seata 分布式事务解决方案 官网 &#xff1a; seata.io 事务模式&#xff1a; 名词 TC &#xff1a; transaction coordinator 事务协调者 维护全局事务 和 分支事务的状态&#xff0c;驱动全局事务提交或者回滚TM &#xff1a; transaction manager 事务管理器 定义全局事…

(考研湖科大教书匠计算机网络)第一章概述-第三节:计算机网络的定义、功能分类

文章目录一&#xff1a;计算机网络的定义&#xff08;1&#xff09;最简单定义&#xff08;2&#xff09;较好定义二&#xff1a;计算机网络功能三&#xff1a;计算机网络的分类&#xff08;1&#xff09;按照“覆盖范围”分类&#xff08;2&#xff09;按照“使用者”分类&…

【Linux学习】进程控制

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 在前面&#xff0c;我们学习了进程的相关概念&#xff0c;在这里本喵会给大家介绍如何控制进程。…

私人影院微信小程序源码,采用腾讯小程序云开发,包括影院动态,最新影讯,房间预约,后台预约管理,导出预约表格Excel数据等功能

功能介绍 私人影院是很多年轻人比较喜欢的地方&#xff0c;虽然空间小&#xff0c;但是他们喜欢在这样的空间里享受休闲的时光&#xff0c;通过提前预约订位&#xff0c;可以使商家和消费者节省时间&#xff0c;减少人力成本&#xff0c;大大方便业务的拓展&#xff0c;同时也…

Word控件Spire.Doc 【Table】教程(4):如何在C#、VB.NET中设置Word表格样式

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

备战蓝桥杯数学基础:位运算理论

[TOC](目录)位运算概述位运算就是基于整数的二进制表示进行的运算&#xff0c;由于计算机内部就是以二进制来村塾数据&#xff0c;位运算是相当快的。基本的位运算共6种&#xff0c;分别为按位与、按位或、按位异或、按位取反、左移和右移与、或、异或这三者都是两数间的运算&a…