跨境互联网 跨境互联网
首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)

Revin

首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)
  • Docker

  • k8s

    • 基础入门-部署模式发展
    • 基础入门-k8s 概述
    • 基础入门-k8s 组件介绍
    • 基础入门-Pod使用
    • 基础入门-Pod生命周期
    • 基础入门-健康检查
    • 高级使用-Pod控制器
    • 高级使用-ReplicaSet控制器
      • 1 ReplicaSet概述
      • 2 ReplicaSet功能
        • 2.1 精确反应期望值
        • 2.2 保证高可用
        • 2.3 弹性伸缩
      • 3 创建ReplicaSet
        • 3.1 核心属性
        • 3.2 ReplicaSet示例
        • 3.2.1 创建资源清单
        • 3.2.2 创建rs控制器
        • 3.2.3查看rs控制器
        • 3.2.4查看pod容器
      • 4 更新控制器
        • 4.1 应用更新
        • 4.1.1 查看更新流程
        • 4.1.2 查看Pod版本号
        • 4.1.3 删除pod应用
        • 4.1.4 查看版本
      • 5 RS扩缩容
        • 5.1 scale命令扩容
        • 5.1.1 查看容量
        • 5.1.2 执行扩容
        • 5.1.3 查看扩容过程
        • 5.2 配置文件缩容
        • 5.2.1 查看容量
        • 5.2.2 应用配置
        • 5.2.3 查看缩容容过程
      • 6 删除rs控制器
        • 6.1 查看集群情况
        • 6.1.1 查看RS集群
        • 6.1.2 查看POD
        • 6.2 删除rs
        • 6.3 查看集群情况
        • 6.3.1 查看RS集群
        • 6.3.2 查看POD
        • 6.4 删除Pod
    • 高级使用-Deployment控制器
    • 高级使用-数据存储
    • 高级使用-pod调度策略
    • 高级使用-Service
    • 资料
  • k8s

  • Docker容器
  • k8s
Revin
2023-06-19
目录

高级使用-ReplicaSet控制器

# 1 ReplicaSet概述

ReplicaSet是取代早期版本中的ReplicationController控制器,其功能基本上与ReplicationController相同

ReplicaSet(简称RS)是Pod控制器类型的一种实现,用于确保由其管控的Pod对象副本数在任意时刻都能精确满足期望的数量,ReplicaSet控制器资源启动后会查找集群中匹配器标签选择器的Pod资源对象,当前活动对象的数量与期望的数量不吻合时,多则删除,少则通过Pod模板创建以补足。

# 2 ReplicaSet功能

ReplicaSet能够实现以下功能:

# 2.1 精确反应期望值

确保Pod资源对象的数量精确反映期望值:ReplicaSet需要确保由其控制运行的Pod副本数量精确吻合配置中定义的期望值,否则就会自动补足所缺或终止所余。

# 2.2 保证高可用

**确保Pod健康运行:**探测到由其管控的Pod对象因其所在的工作节点故障而不可用时,自动请求由调度器于其他工作节点创建缺失的Pod副本。

# 2.3 弹性伸缩

**弹性伸缩:**可通过ReplicaSet控制器动态扩容或者缩容Pod资源对象的数量,必要时还可以通过HPA控制器实现Pod资源规模的自动伸缩。

# 3 创建ReplicaSet

# 3.1 核心属性

spec字段一般嵌套使用以下几个属性字段:

字段值 类型 描述
replicas Integer 指定期望的Pod对象副本数量
selector Object 当前控制器匹配Pod对象副本的标签选择器,支持matchLabels和matchExpressions两种匹配机制
template Object 用于定义Pod时的Pod资源信息
minReadySeconds Integer 用于定义Pod启动后多长时间为可用状态,默认为0秒

# 3.2 ReplicaSet示例

# 3.2.1 创建资源清单

vi nginx-rs.yml
apiVersion: apps/v1  #api版本定义
kind: ReplicaSet  #定义资源类型为ReplicaSet
metadata:  #元数据定义
  name: nginx-rs
  namespace: default
spec:  #ReplicaSet的规格定义
  replicas: 2  #定义副本数量为2个
  selector:  #标签选择器,定义匹配Pod的标签
    matchLabels:
      app: nginx
  template:  #Pod的模板定义
    metadata:  #Pod的元数据定义
      name: nginx-pod  #自定义Pod的名称
      labels:  #定义Pod的标签,需要和上面的标签选择器内匹配规则中定义的标签一致,可以多出其他标签
        app: nginx
    spec:  #Pod的规格定义
      containers:  #容器定义
      - name: nginx  #容器名称
        image: nginx:1.12  #容器镜像
        imagePullPolicy: IfNotPresent  #拉取镜像的规则
        ports:  #暴露端口
        - name: http  #端口名称
          containerPort: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 3.2.2 创建rs控制器

kubectl apply -f nginx-rs.yaml
1

image-20210514103645504

# 3.2.3查看rs控制器

kubectl get rs
1

image-20210514103731904

# 3.2.4查看pod容器

通过查看pod可以看出pod命令是规则是前面是replicaset控制器的名称加随机生成的字符串

kubectl get pods -o wide -w
1

image-20210514103816598

# 4 更新控制器

修改上面创建的replicaset示例文件,将镜像nginx:1.12改为1.20版本

vi nginx-rs.yml
apiVersion: apps/v1  #api版本定义
kind: ReplicaSet  #定义资源类型为ReplicaSet
metadata:  #元数据定义
  name: nginx-rs
  namespace: default
spec:  #ReplicaSet的规格定义
  replicas: 2  #定义副本数量为2个
  selector:  #标签选择器,定义匹配Pod的标签
    matchLabels:
      app: nginx
  template:  #Pod的模板定义
    metadata:  #Pod的元数据定义
      name: nginx-pod  #自定义Pod的名称
      labels:  #定义Pod的标签,需要和上面的标签选择器内匹配规则中定义的标签一致,可以多出其他标签
        app: nginx
    spec:  #Pod的规格定义
      containers:  #容器定义
      - name: nginx  #容器名称
        image: nginx:1.20  #容器镜像
        imagePullPolicy: IfNotPresent  #拉取镜像的规则
        ports:  #暴露端口
        - name: http  #端口名称
          containerPort: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 4.1 应用更新

kubectl apply -f nginx-rs.yaml
1

image-20210514104954853

# 4.1.1 查看更新流程

kubectl get pods -o wide -w
1

我们发现pod没有任何更新变化

image-20210514105127649

# 4.1.2 查看Pod版本号

kubectl get pods -o custom-columns=Name:metadata.name,Image:spec.containers[0].image
1

这里并没有更新pod的nginx版本号

image-20210514105230896

# 4.1.3 删除pod应用

这里虽然重载了,但是已有的pod所使用的镜像仍然是1.12版本的,只是新建pod时才会使用1.20版本,这里测试先手动删除已有的pod。

kubectl delete pods -l app=nginx
1

image-20210514105439420

# 4.1.4 查看版本

kubectl get pods -o custom-columns=Name:metadata.name,Image:spec.containers[0].image
1

现在我们发现pod的版本已经更新正确了

image-20210514105539618

# 5 RS扩缩容

可以直接通过vim 编辑清单文件修改replicas字段,也可以通过kubect edit 命令去编辑

kubectl还提供了一个专用的子命令scale用于实现应用规模的伸缩,支持从资源清单文件中获取新的目标副本数量,也可以直接在命令行通过“--replicas”选项进行读取。

# 5.1 scale命令扩容

命令扩容一般用于短期的临时性扩容,应付完成后要记得缩容到原来水平

# 5.1.1 查看容量

可看到当前是两个节点

kubectl get pods -o wide
1

image-20210521145915206

# 5.1.2 执行扩容

使用scale命令可以对集群进行扩缩容

kubectl scale replicasets nginx-rs --replicas=4
1

image-20210514105912697

# 5.1.3 查看扩容过程

在更新前打开新窗口,监控pod的更新变化

kubectl get pods -o wide -w
1

image-20210521150359251

在更新前打开新窗口,监控RS的更新变化

kubectl get rs -o wide -w
1

我们发现扩容后只是在原来的RS集群上面增加了两个节点

image-20210521150419978

# 5.2 配置文件缩容

配置文件扩容一般用于初始容量变更,长期进行扩容

# 5.2.1 查看容量

可看到当前是四个节点

kubectl get pods -o wide
1

image-20210521150615921

# 5.2.2 应用配置

因为没有变更配置文件可以直接应用配置文件

kubectl apply -f nginx-rs.yml
1

image-20210514110613080

# 5.2.3 查看缩容容过程

在更新前打开新窗口,监控pod的更新变化

kubectl get pods -o wide -w
1

image-20210521150649864

在更新前打开新窗口,监控RS的更新变化

kubectl get rs -o wide -w
1

我们发现扩容后只是在原来的RS集群上面减少了两个节点

image-20210521150713216

# 6 删除rs控制器

使用Kubectl delete命令删除ReplicaSet对象时默认会一并删除其管控的各Pod对象,有时,考虑到这些Pod资源未必由其创建,或者即便由其创建也并非自身的组成部分,这时候可以添加“--cascade=false”选项,取消级联关系。

# 6.1 查看集群情况

# 6.1.1 查看RS集群

kubectl get rs -o wide
1

image-20210521150909585

# 6.1.2 查看POD

kubectl get pods -o wide
1

image-20210521151025032

# 6.2 删除rs

删除rs可以通过参数cascade=false设置不删除pod

kubectl delete replicasets nginx-rs --cascade=false
1

image-20210521151112600

# 6.3 查看集群情况

# 6.3.1 查看RS集群

kubectl get rs -o wide
1

image-20210521151203186

# 6.3.2 查看POD

kubectl get pods -o wide
1

image-20210521151025032

# 6.4 删除Pod

kubectl delete pods nginx-rs-7rzz6
kubectl delete pods nginx-rs-c5zrs
1
2

image-20210521151435979

上次更新: 2025/04/03, 11:07:08
高级使用-Pod控制器
高级使用-Deployment控制器

← 高级使用-Pod控制器 高级使用-Deployment控制器→

最近更新
01
tailwindcss
03-26
02
PaddleSpeech
02-18
03
whisper
02-18
更多文章>
Theme by Vdoing | Copyright © 2019-2025 跨境互联网 | 豫ICP备14016603号-5 | 豫公网安备41090002410995号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式