K8s之Replicaset控制器详解

news2024/11/24 11:31:19

文章目录

    • 一、ReplicaSet 控制器介绍
    • 二、ReplicaSet案例
      • 1、Pod副本扩缩容案例
      • 2、Pod更新版本案例

一、ReplicaSet 控制器介绍

官方中文参考文档:

ReplicaSet是k8s中一种资源对象,简写 rs用于管理Pod副本数量和健康状态,在spec.replicas 字段中可以定义Pod副本数量,ReplicaSet会始终保持Pod在指定数量,当发现Pod数量大于副本数量时,会移除多出的Pod,当发现Pod小于副本数量会自动创建Pod,使其始终维护在副本数量,此外,ReplicaSet还会监控Pod的健康状态,如果某个Pod出现故障,ReplicaSet会自动替换它

ReplicaSet特点如下:

  • 自动化管理:ReplicaSet可以自动地创建、删除和更新Pod副本,以确保指定数量的Pod副本一直在运行。
  • 健康检查:ReplicaSet会定期检查Pod的健康状态,并根据需要重启或替换不健康的Pod。
  • 水平扩展:通过增加或减少Pod副本的数量,可以实现应用程序的水平扩展,以满足不同的负载需求。
  • 选择器:ReplicaSet使用标签选择器来选择要管理的Pod副本。
  • 有状态管理:ReplicaSet可以管理有状态的应用程序,例如数据库,以确保数据的一致性和可用性。
  • 更新:不支持滚动更新,需要手动删除旧Pod实现更新

ReplicaSet常用字段解释:

apiVersion: apps/v1      # RS版本
kind: ReplicaSet         # 定义RS资源类型  
metadata:                # RS元数据
  name: nginx-replicaset # RS名称
  namespace: default     # RS命名空间
  labels:                # RS标签
    app: web
    env: uat
spec: 
  replicas: 3            # 关联Pod副本数量
  selector:              
    matchLabels:         # 关联具有app=web的Pod
      app: web
  template:              # Pod模板
    metadata:            # Pod元数据
      namespace: default # Pod命名空间
      labels:            # Pod标签
        app: web
        env: uat
    spec:
      containers:        # Pod定义容器
      - name: web-nginx  # 容器名称
        image: nginx     # 容器使用镜像
        imagePullPolicy: IfNotPresent  # 容器镜像下载策略
        ports:         
        - containerPort: 80            # 容器内端口

二、ReplicaSet案例

1、Pod副本扩缩容案例

通过修改 spec.replicas 值来进行动态扩容、缩容,使用 nginx镜像定义副本数量 3,并添加了一些必要的探测,如下:

cat replicaset.yaml 

---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3           
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 
        startupProbe:
          tcpSocket:
            port: 80
        livenessProbe:
          httpGet:
            path: /index.html
            port: 80
        readinessProbe:
          httpGet:
            path: /index.html
            port: 80

执行YAML文件:

kubectl apply -f replicaset.yaml 

查看Pod、RS状态,是否创建且正常:

kubectl get rs,pod -l app=web

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNCdEd20-1685257135299)(D:\MD归档文档\IMG\image-20230528133211004.png)]

当我们删除Pod时,RS会自动为我们创建出来,RS会始终维护Pod数量为3 删除命令如下:

kubectl delete pod nginx-replicaset-7mh2r

动态扩容副本数量,更新副本数量为5:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AHacQTU-1685257135300)(D:\MD归档文档\IMG\image-20230528133458570.png)]

重新 apply 一下 YAML文件:

kubectl apply -f replicaset.yaml 

验证,Pod数量:

kubectl get pod -l app=web

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E4AEtJpV-1685257135301)(D:\MD归档文档\IMG\image-20230528133646092.png)]

缩容也是同样操作,更改replicas数值重新apply一下即可,此处省略。

2、Pod更新版本案例

所需镜像下载地址

ReplicaSet,不支持动态更新,只能是通过删除旧Pod方式,案例演示如下:

使用 web:v1 镜像 创建ReplicaSet资源

cat replicaset.yaml 
---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3          
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: web:v1     # V1 镜像
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 

执行文件:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

查看PodIP地址,并访问:

kubectl describe pod nginx-replicaset-wht6q|grep IP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xeRqOgj6-1685257135302)(D:\MD归档文档\IMG\image-20230528144500659.png)]

根据以上更新使用 web:v2 镜像:

编辑上面 YAML 文件 只更改镜像版本即可如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uWGTenzq-1685257135302)(D:\MD归档文档\IMG\image-20230528144647385.png)]

执行文件:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

注意,此时curl Pod返回内容依旧是 旧版Pod内容,需要手动删除旧Pod资源,RS会自动创建Pod,自动创建的Pod才会使用新的镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXMdKw2n-1685257135302)(D:\MD归档文档\IMG\image-20230528145222569.png)]

删除Pod,根据自己当前环境pod名称进行删除:

kubectl delete pod nginx-replicaset-ff5pl nginx-replicaset-rvr9k nginx-replicaset-wht6q

删除后,RS会自动创建,查看新的Pod:

kubectl get pod -l app=web

访问Pod:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfXPHJsB-1685257135303)(D:\MD归档文档\IMG\image-20230528145620136.png)]

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

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

相关文章

MySQL如何导入大量数据?

有时我们会遇到需要将大量数据导入MySQL的需求,一般数据存储在csv或者txt中,数据由","分隔。这里提供两种方案供大家选择。 一、创建测试表 为了测试,我们先创建数据库和表,并创建一个用户。 create database loadda…

js的BOM对象中的window、location使用

说明:BOM的全称是Browser Object Model,浏览器对象模型,有Window(浏览器窗口)、Navigator(浏览器)、Screen(屏幕)、History(历史记录)和Location&…

js函数、Array和String的定义和使用

函数 js中的函数&#xff0c;类似java中的方法 <script>// 定义函数方式一function addA(x, y) {return x y;}// 定义函数方式二&#xff0c;注意addB是函数的名称&#xff0c;不是返回值let addB function(x, y) {return x * y;}</script><script>docume…

vscode语音插件开发-在nodejs里面转换音频文件格式并压缩导出zip格式

继我的上一篇文章&#xff1a;&#xff01;vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件 踩坑日记 音频格式转换这里我使用的是ffmpeg第三方库&#xff0c;官网文档。 ffmpeg简介 FFmpeg是一个跨平台的自由软件&#xff0c;用于实时音频、视频流以及音频、视频…

Vue电商项目--详情页面--产品售卖属性

滚动行为 开发某一个产品的详情页面&#xff1f; 1.静态组件 但是这个详情页&#xff0c;我们还没有注册为路由 当点击商品图片的时候&#xff0c;跳转到详情页面&#xff0c;在路由跳转的时候需要带上产品的ID给详情页面 干掉a标签换成router-link标签 这里要注意的一点是…

MybatisPlus处理业务数据新思路

文章目录 [toc] 1.问题2.新姿势3.总结 1.问题 由于之前搞了一个停车场的项目&#xff0c;有一个区域的停车场收费被投诉了被举报没有按照政府要求来计费&#xff0c;所以需要将之前的那些停车计费的数据重新计算&#xff0c;将多缴费的钱拿去交罚款&#xff0c;这个就很坑&…

MongoDB—Indexes

一、Indexes 索引支持在MongoDB中高效执行查询。没有 索引&#xff0c;MongoDB必须执行集合扫描&#xff0c;即扫描每个 集合中的文档&#xff0c;以选择与 查询语句。如果查询存在适当的索引&#xff0c; MongoDB可以使用索引来限制它必须的文档数量 检查。 索引是特殊的数据…

近期群晖容器查询注册表失败,无法下载镜像

前言 本以为是群晖的问题&#xff0c;后来发现大家也都遇到了类似的问题&#xff0c;查询注册表出现错误&#xff0c;无法搜索和下载docker镜像&#xff0c;本期就来介绍几个可平替的方案。 方案一&#xff1a;SSH拉取 使用SSH拉取首先要打开群晖的SSH功能&#xff1a;在【…

数据结构(C语言):顺序循环队列的基本操作

一、题目 设队列的元素类型为char&#xff0c;实现顺序循环队列的各种基本操作的程序&#xff1a; ① 初始化队列Q&#xff1b; ② 判断队列Q是否为空&#xff1b; ③ 入队操作。循环调用入队操作&#xff0c;将若干元素&#xff08;不少于10个&#xff09;入队&#xff1b…

LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/group-anagrams/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个字符串数组&#x…

如何使用ChatGPT?初学者简单指南

Chat GPT 风靡全球&#xff0c;并在短时间内成为世界上增长最快的应用程序。随着所有关于其潜在影响的讨论&#xff0c;你可能会想知道&#xff1a;如何使用 ChatGPT&#xff1f; 使用 ChatGPT需要准备&#xff1a;一个 OpenAI 帐户和一个网络浏览器。 访问chat.openai.com并…

ICV报告:中国的数字经济与5G市场研究报告

近日&#xff0c;专注于前沿科技领域的国际咨询机构ICV发布了《中国的数字经济与5G市场研究报告》。报告指出&#xff0c;随着5G商用的发展&#xff0c;5G对经济社会的影响逐步显现&#xff0c;其影响突出体现在对数字产业发展的带动上。随着5G应用的不断创新与扩散&#xff0c…

网络公开课1

网络公开课1 概念* 常见面试题 输入URL发生哪些事 https http1.0 2.0的区别…… OSI七层模型 协议DNS 传输层 三次握手 四次挥手 http 物理层&#xff1a;并不是指光纤电缆那些&#xff0c;那些是设备。只关心如何传输数据&#xff0c;传输的是比特流 0 1。 应用层&#xff1a;…

汇编物理地址计算与段地址认识

1.物理地址概念: 所有内存单元构造的存储空间是一个一维性空间.每个内存单元在这个空间都有一个唯一的地址,这个唯一的地址称为物理地址. CPU通过地址总线送入存储器的必须是一个内存单元的物理地址. 不同的CPU有不同形式的物理地址形成方式. 物理地址计算公式: 物理地址 …

微服务的演变史(单体式、分布式、SOA架构、微服务架构)

单体式架构 从架构层面来考虑:一个应用只部署一个服务,或该应用由多个服务组成的时候,只部署在一台服务器上 把一种系统的所有功能全部耦合在一个应用中的框架方式 这种开发方式简单,但是只适合体量较小的业务,一旦业务体量增加到一定程度的时候,单机的硬件资源将没办法满足…

JOSEF约瑟 JDL-1001A 电流继电器 导轨式安装 批发价格

名称&#xff1a;电流继电器品牌&#xff1a;JOSEF约瑟型号&#xff1a;JDL-1001A触点容量&#xff1a;250V2A整定范围&#xff1a;0.03-9.99A返回系数&#xff1a;≥0.9特点&#xff1a;交直流两用、消耗小、返回系数高。 型号说明 JD L -1 XXX X/ XXX / XXX 系列型号 JDL…

首发Yolov5/Yolov7优化:Adam该换了!斯坦福最新Sophia优化器,比Adam快2倍 | 2023.5月斯坦福最新成果

1.Sophia优化器介绍 斯坦福2023.5月发表的最新研究成果,他们提出了「一种叫Sophia的优化器,相比Adam,它在LLM上能够快2倍,可以大幅降低训练成本」。 论文:https://arxiv.org/pdf/2305.14342.pdf 本文介绍了一种新的模型预训练优化器:Sophia(Second-order Clippe…

vue2_模版语法

目录 模版语法 react用jsx语法编译后的null作用 插值表达式{{}} v-bind和{{}} 关于国内谷歌自带翻译停用如何解决&#xff08;额外&#xff09; 会一点的插值表达式&#xff0c;也有限制 模版语法 更接近原生js的写法jsx语法 jsx是react提出的&#xff1b;后很多前端框架…

LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 往期回顾&#xff1a;LeetCode 单周赛第 346 场 仅 68 人 AK 的最短路问题 周赛 347 概览 T1. 移除字符串中的尾随零&#xff08;Easy&#xff09; 标签&#xff1a;模拟、…

HTTP协议深入理解+如何使用Fiddler抓包

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、HTTP概述 1.1 什么是HTTP 1.2 理解应用层协议 二、抓包工具fiddler的使用 2.1 几个需要注意的点 2.2 fiddler的原理 2.3 fiddler的使用技巧 三、HTTP请求&#xff08;Re…