Kubernetes的Replica Set和ReplicaController有什么区别

ReplicaSetReplicationController 是 Kubernetes 中用于管理应用程序副本的两种资源,它们有类似的功能,但 ReplicaSetReplicationController 的增强版本。

以下是它们的主要区别:

1. 功能的演进

  • ReplicationController 是 Kubernetes 的早期版本中用来确保一定数量的 Pod 副本运行的控制器。

  • ReplicaSetReplicationController 的增强版本,引入了更多的功能和灵活性,逐步取代了 ReplicationController

2. 标签选择器

  • ReplicationController 只支持基于 等式匹配 的标签选择器。例如:

    selector:app: myapp
    
  • ReplicaSet 支持更复杂的 集合匹配,可以使用 innotin 等操作符。例如:

    selector:matchLabels:app: myappmatchExpressions:- key: environmentoperator: Invalues:- production- staging
    

3. 推荐使用

  • Kubernetes 更推荐使用 ReplicaSet,因为它功能更强大,尤其是支持高级标签选择器。

  • 不过,ReplicationController 仍然受支持,用于与旧版本的 Kubernetes 配置兼容。

4. 与 Deployment 的关系

  • ReplicaSet 通常与 Deployment 一起使用,Deployment 会管理 ReplicaSet,从而实现滚动更新等功能。

  • ReplicationController 已经逐渐被 DeploymentReplicaSet 取代,功能上相对较弱。

示例对比

ReplicationController 配置示例:

 

apiVersion: v1
kind: ReplicationController
metadata:name: myapp-rc
spec:replicas: 3selector:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: nginx
ReplicaSet 配置示例:

apiVersion: apps/v1
kind: ReplicaSet
metadata:name: myapp-rs
spec:replicas: 3selector:matchLabels:app: myappmatchExpressions:- key: environmentoperator: Invalues:- productiontemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: nginx

 

 

Scale

总结

  • 如果是新项目,直接使用 ReplicaSetDeployment,避免使用 ReplicationController

  • 如果你的需求更复杂(比如基于集合匹配的调度策略),ReplicaSet 是更好的选择。

练习

controlplane ~ ➜  kubectl get pods
No resources found in default namespace.controlplane ~ ➜  kubectl get replicaSet
No resources found in default namespace.controlplane ~ ➜  kubectl get replicaSet
NAME              DESIRED   CURRENT   READY   AGE
new-replica-set   4         4         0       6scontrolplane ~ ➜  kubectl describe replicaSet new-replica-set
Name:         new-replica-set
Namespace:    default
Selector:     name=busybox-pod
Labels:       <none>
Annotations:  <none>
Replicas:     4 current / 4 desired
Pods Status:  0 Running / 4 Waiting / 0 Succeeded / 0 Failed
Pod Template:Labels:  name=busybox-podContainers:busybox-container:Image:      busybox777Port:       <none>Host Port:  <none>Command:sh-cecho Hello Kubernetes! && sleep 3600Environment:   <none>Mounts:        <none>Volumes:         <none>Node-Selectors:  <none>Tolerations:     <none>
Events:Type    Reason            Age   From                   Message----    ------            ----  ----                   -------Normal  SuccessfulCreate  44s   replicaset-controller  Created pod: new-replica-set-g2tmxNormal  SuccessfulCreate  44s   replicaset-controller  Created pod: new-replica-set-hjk29Normal  SuccessfulCreate  44s   replicaset-controller  Created pod: new-replica-set-dxcscNormal  SuccessfulCreate  44s   replicaset-controller  Created pod: new-replica-set-7vm2xcontrolplane ~ ➜  kubectl delete pod new-replica-set-g2tmx
pod "new-replica-set-g2tmx" deletedcontrolplane ~ ➜  kubectl describe replicaSet new-replica-set
Name:         new-replica-set
Namespace:    default
Selector:     name=busybox-pod
Labels:       <none>
Annotations:  <none>
Replicas:     4 current / 4 desired
Pods Status:  0 Running / 4 Waiting / 0 Succeeded / 0 Failed
Pod Template:Labels:  name=busybox-podContainers:busybox-container:Image:      busybox777Port:       <none>Host Port:  <none>Command:sh-cecho Hello Kubernetes! && sleep 3600Environment:   <none>Mounts:        <none>Volumes:         <none>Node-Selectors:  <none>Tolerations:     <none>
Events:Type    Reason            Age    From                   Message----    ------            ----   ----                   -------Normal  SuccessfulCreate  2m45s  replicaset-controller  Created pod: new-replica-set-g2tmxNormal  SuccessfulCreate  2m45s  replicaset-controller  Created pod: new-replica-set-hjk29Normal  SuccessfulCreate  2m45s  replicaset-controller  Created pod: new-replica-set-dxcscNormal  SuccessfulCreate  2m45s  replicaset-controller  Created pod: new-replica-set-7vm2xNormal  SuccessfulCreate  12s    replicaset-controller  Created pod: new-replica-set-p5pm4controlplane ~ ➜  kubectl get pod
NAME                    READY   STATUS             RESTARTS   AGE
new-replica-set-7vm2x   0/1     ErrImagePull       0          3m5s
new-replica-set-dxcsc   0/1     ImagePullBackOff   0          3m5s
new-replica-set-hjk29   0/1     ErrImagePull       0          3m5s
new-replica-set-p5pm4   0/1     ErrImagePull       0          32scontrolplane ~ ➜  kubectl create -f /root/replicaset-definition-1.yaml
error: resource mapping not found for name: "replicaset-1" namespace: "" from "/root/replicaset-definition-1.yaml": no matches for kind "ReplicaSet" in version "v1"
ensure CRDs are installed firstcontrolplane ~ ✖ vim /root/replicaset-definition-1.yamlcontrolplane ~ ➜  vim /root/replicaset-definition-1.yamlcontrolplane ~ ➜  cat /root/replicaset-definition-1.yaml
apiVersion: v1
kind: ReplicaSet
metadata:name: replicaset-1
spec:replicas: 2selector:matchLabels:tier: frontendtemplate:metadata:labels:tier: frontendcontainers:- name: nginximage: nginx

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

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

相关文章

信息系统运行管理员教程3--信息系统设施运维

第3章 信息系统设施运维 信息系统设施是支撑信息系统业务活动的信息系统软硬件资产及环境。 第1节 信息系统设施运维的管理体系 信息系统设施运维的范围包含信息系统涉及的所有设备及环境&#xff0c;主要包括基础环境、硬件设备、网络设备、基础软件等。 信息系统设施运维…

如何通过Python实现自动化任务:从入门到实践

在当今快节奏的数字化时代,自动化技术正逐渐成为提高工作效率的利器。无论是处理重复性任务,还是管理复杂的工作流程,自动化都能为我们节省大量时间和精力。本文将以Python为例,带你从零开始学习如何实现自动化任务,并通过一个实际案例展示其强大功能。 一、为什么选择Pyt…

Spring Boot 与 MyBatis Plus 整合 KWDB 实现 JDBC 数据访问

​ 引言 本文主要介绍如何在 IDEA 中搭建一个使用 Maven 管理的 Spring Boot 应用项目工程&#xff0c;并结合在本地搭建的 KWDB 数据库&#xff08;版本为&#xff1a;2.0.3&#xff09;来演示 Spring Boot 与 MyBatis Plus 的集成&#xff0c;以及对 KWDB 数据库的数据操作…

Java锁等待唤醒机制

在 Java 并发编程中&#xff0c;锁的等待和唤醒机制至关重要&#xff0c;通常使用 wait()、notify() 和 notifyAll() 来实现线程间的协调。本文将详细介绍这些方法的用法&#xff0c;并通过示例代码加以说明。 1. wait()、notify() 与 notifyAll() 在 Java 中&#xff0c;Obj…

 UNIX网络编程笔记:TCP客户/服务器程序示例

服务器实例 有个著名的项目&#xff0c;tiny web&#xff0c;本项目将其改到windows下&#xff0c;并使用RAII重构&#xff0c;编写过程中对于内存泄漏确实很头疼&#xff0c;还没写完&#xff0c;后面会继续更&#xff1a; #include <iostream> #include <vector&g…

AI Agent开发大全第四课-提示语工程:从简单命令到AI对话的“魔法”公式

什么是提示语工程&#xff1f;一个让AI“听话”的秘密 如果你曾经尝试过用ChatGPT或者其他大语言模型完成任务&#xff0c;那么你一定遇到过这样的情况&#xff1a;明明你的问题是清晰的&#xff0c;但答案却离题万里&#xff1b;或者你认为自己提供的信息足够详尽&#xff0c…

系统架构设计知识体系总结

1.技术选型 1.什么是技术选型&#xff1f; 技术选型是指评估和选择在项目或系统开发中使用的最合适的技术和工具的过程。这涉及考虑基于其能力、特性、与项目需求的兼容性、可扩展性、性能、维护和其他因素的各种可用选项。技术选型的目标是确定与项目目标相符合、能够有效解…

基于3DMax与Vray引擎的轻量级室内场景渲染实践

欢迎踏入3DMAX室内渲染的沉浸式学习之旅!在这个精心设计的实战教程中,我们将携手揭开3DMAX与Vray这对黄金搭档在打造现实室内场景时的核心奥秘。无论您是渴望入门的3D新手,还是追求极致效果的专业设计师,这里都将为您呈现从场景蓝图构建到光影魔法施加的完整技术图谱。我们…

逻辑卷,vdo,(阿里加速器)

一、逻辑卷 10 20 30 1.逻辑卷的2个特点 &#xff08;1&#xff09;逻辑卷可以将多个分区或者磁盘整合成一个更大的逻辑磁盘&#xff0c;然后可以从逻辑磁盘上划分出分区&#xff08;逻辑磁盘的大小等于整合的物理磁盘大小之和。&#xff09; &#xff08;2&#xff09;能…

检索增强生成(2)本地PDF 本地嵌入模型

from langchain_community.document_loaders import PyPDFLoader from pathlib import Pathdef load_local_pdf(file_path):if not Path(file_path).exists():raise FileNotFoundError(f"文件 {file_path} 不存在&#xff01;")loader PyPDFLoader(file_path)try:do…

安全守护:反光衣检测技术的革新之路

视觉分析助力船上工人反光衣检测 在现代工业生产与作业环境中&#xff0c;安全始终是首要考虑的因素。对于水上作业&#xff0c;如船舶维护、海上施工等场景&#xff0c;工人穿戴反光衣是预防事故、提高可见性的重要措施。然而&#xff0c;传统的人工检查方式不仅效率低下&…

【Scrapy】Scrapy教程8——处理子链接

通过前面几篇文章,已经了解了如何去爬取网页内容并存储到数据库,但是目前只是存储了一个页面的内容,现在想要获取每篇文章链接内的文章内容,我们来看看怎么获取。 生成新请求 首先我们肯定要先拿到链接,所以第一步都获取文章标题和链接肯定少不了,然后再爬取获取到到子…

Centos6配置yum源

Centos6配置yum源 为Centos6配置CentOS Vault源—防止yum源过期为Centos6配置epel源为Centos6配置ELRepo源---已ELRepo被官方清空Centos6安装dockerdocker配置国内镜像加速 为Centos6配置CentOS Vault源—防止yum源过期 参考&#xff1a;https://mirrors.ustc.edu.cn/help/cen…

“智改数转”新风口,物联网如何重构制造业竞争力?

一、政策背景 为深化制造业智能化改造、数字化转型、网络化联接&#xff0c;江苏省制定了《江苏省深化制造业智能化改造数字化转型网络化联接三年行动计划&#xff08;2025&#xff0d;2027年&#xff09;》&#xff0c;提出到2027年&#xff0c;全省制造业企业设备更新、工艺…

制作Oracle11g Docker 镜像

基于Linux系统&#xff0c;宿主主机要设置如下环境变量&#xff0c;oracle为64位版本 dockerfile中需要的数据库安装包可从csdn下载内找到 #!/bin/bash # 在宿主机上运行以设置Oracle所需的内核参数 # 这些命令需要root权限cat > /etc/sysctl.d/99-oracle.conf << EO…

从GTC2025首次量子日看英伟达量子AI融合算力网络前景与趋势

GTC2025 Quantum Day 最新内容全部汇总: 技术名称描述合作伙伴/开发者应用场景/目标量子模拟器优化方案NVIDIA与IonQ、D-Wave合作,针对量子模拟器进行性能优化,提升量子计算任务效率。IonQ、D-Wave量子算法开发、复杂系统模拟混合量子-经典计算架构结合量子计算与经典GPU加速…

UE4学习笔记 FPS游戏制作12 添加第二把枪,制作枪的父类,动态生成物体,切换武器

我们添加一个发射器类型的枪 我们目前有了一个Rifle的枪械蓝图&#xff0c;我们在添加Launcher时&#xff0c;需要为他们添加一个父类&#xff0c;将公共方法放到父类里&#xff0c;方法体由子类实现 添加父类 方法1 新建一个Gun的蓝图&#xff0c;Gun继承Actor&#xff0c;…

【原创首发】开源基于AT32 SIP/VOIP电话

前言 本次为了反馈各位粉丝的关注&#xff0c;特此分享 AT32_VOIP 工程&#xff0c;此功能其实跟我之前发过的《STM32F429的VOIP功能》是一样的&#xff0c;只是用了AT32F437。 其实那个工程是一个比较Demo中的Demo&#xff0c;很多功能和硬件依赖性太大了。后面项目中发现AT…

通俗易懂搞懂@RequestParam 和 @RequestBody

&#x1f4cc; 博主简介: &#x1f4bb; 努力学习的 23 级科班生一枚 &#x1f680;&#x1f3e0; 博主主页 &#xff1a; &#x1f4ce; 灰阳阳&#x1f4da; 往期回顾 &#xff1a;Session和Cookie我不允许你不懂&#x1f4ac; 每日一言&#xff1a; 「流水不争先&#xff0c…

dubbo版本与分组

Dubbo服务中&#xff0c;接口并不能唯一确定一个服务&#xff0c;只有 接口分组版本号 的三元组才能唯一确定一个服务。 当同一个接口针对不同的业务场景、不同的使用需求或者不同的功能模块等场景&#xff0c;可使用服务分组来区分不同的实现方式。同时&#xff0c;这些不同实…