首页 > 其他分享 >在K8S中,replicaset 和deploy有何区别?

在K8S中,replicaset 和deploy有何区别?

时间:2024-07-26 10:56:26浏览次数:18  
标签:副本 replicaset ReplicaSet app 有何 Deployment Pod K8S my

在 Kubernetes (K8S) 中,ReplicaSetDeployment 是两种非常重要的资源对象,它们都用于管理 Pod 的副本数量。尽管它们有一些相似之处,但在功能和用途上还是存在显著差异。下面详细介绍它们之间的区别:

1. ReplicaSet
  1. 定义

    • ReplicaSet 是一种确保运行指定数量的 Pod 副本的 Kubernetes 资源。
    • 它保证任何时候都有一个特定数量的 Pod 复制运行。
  2. 主要功能

    • 副本管理:保持指定数量的 Pod 副本处于运行状态。
    • Pod 标签选择器:通过标签选择器(label selectors)来确定哪些 Pod 属于该 ReplicaSet。
  3. 使用场景

    • 用于简单的副本管理场景,比如确保一个应用始终有 N 个实例运行。
    • 通常不直接用于生产环境中的应用部署,而是作为 Deployment 控制器的一部分使用。
  4. YAML 示例

    apiVersion: apps/v1
    kind: ReplicaSet
    metadata:
      name: my-replicaset
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-container
            image: my-image
    
2. Deployment
  1. 定义

    • Deployment 是一种更高级别的抽象,它用于管理 ReplicaSet 并提供声明式的更新机制。
    • Deployment 可以用来创建和管理 ReplicaSet,并且支持滚动更新和回滚。
  2. 主要功能

    • 副本管理:类似于 ReplicaSet,也维护指定数量的 Pod 副本。
    • 滚动更新:允许你更新应用容器镜像版本,同时确保应用始终可用。
    • 回滚:如果新版本出现问题,可以轻松回滚到旧版本。
    • 健康检查:支持配置健康检查来确保新 Pod 正常运行后再替换旧 Pod。
  3. 使用场景

    • 用于需要高级部署策略的应用程序,如滚动更新、蓝绿部署等。
    • 生产环境中推荐使用 Deployment,因为它提供了更丰富的特性和更高的可靠性。
  4. YAML 示例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-container
            image: my-image
    
3. 主要区别
  • 目的

    • ReplicaSet 主要是为了一组 Pod 提供副本管理。
    • Deployment 不仅提供了副本管理,还提供了更复杂的部署策略,如滚动更新和回滚。
  • 使用场景

    • ReplicaSet 通常用于需要简单副本管理的场景。
    • Deployment 更适合需要高级部署策略的应用场景。
  • 管理方式

    • Deployment 实际上会创建并管理一个或多个 ReplicaSet,而 ReplicaSet 则直接管理 Pod。
    • 你可以直接修改 Deployment 的配置文件来更新应用,而不需要直接修改底层的 ReplicaSet
  • 高级特性

    • Deployment 支持滚动更新和回滚,而 ReplicaSet 不支持这些特性。

综上所述,在实际使用中,Deployment 是更常见且推荐的选择,因为除了基本的副本管理之外,它还提供了更强大的功能集,有助于简化应用程序的部署和维护过程。

标签:副本,replicaset,ReplicaSet,app,有何,Deployment,Pod,K8S,my
From: https://www.cnblogs.com/huangjiabobk/p/18324875

相关文章

  • 在K8S中,calico有哪些组件?都是做什么的?
    Calico是一个广泛使用的Kubernetes网络插件,它提供了一个高性能、可扩展的网络解决方案,用于连接和保护容器化的应用。Calico支持多种网络模型,包括BGP(BorderGatewayProtocol)和eBPF(ExtendedBerkeleyPacketFilter)技术,使其成为企业级应用的理想选择之一。以下是Cal......
  • 在K8S中,hpa原理是什么?
    在Kubernetes(K8S)中,HorizontalPodAutoscaler(HPA)是一种自动扩缩容机制,它可以根据预定义的指标自动调整Pod的数量。HPA的主要目的是确保应用程序能够根据实际负载自动伸缩,从而提高资源利用率和系统的弹性。1.HPA的工作原理定义目标指标:用户首先需要定义扩缩容......
  • 从K8s的“临时容器”看K8s设计的厉害之处
    本文分享自华为云社区《从K8s的“临时容器”看K8s设计的厉害之处》,作者:tsjsdbd。从一个容器的不足说起容器概念出现时,有个非常重要的理念:容器中极简。即容器里面只保留需要运行的进程就可以,其他一律不要安装。这也是为什么Docker出现的那时,有一篇文章《为什么不需要在Docker容......
  • 通过rancher部署k8s集群
    一、Rancher介绍Rancher是为使用容器的公司打造的容器管理平台。Rancher简化了使用Kubernetes的流程,开发者可以随处运行Kubernetes(RunKubernetesEverywhere),满足IT需求规范,赋能DevOps团队。Rancher可以创建来自Kubernetes托管服务提供商的集群,自动创建节点并安装K......
  • k8s证书续期10年
    现象通过kubeadm安装kubernetes集群时会存在一个证书问题:由kubeadm生成的客户端证书在1年后到期。随着kubernetes集群的使用,某一天证书过期了,此时kubernetes集群将无法正常使用,比如:kubectl命令执行会产生错误(Youmustbeloggedintotheserver(unauthorized))、......
  • 关于k8s中的pv和pvc无法绑定
    在一次申明pv和pvc时,发现两者怎么都无法绑定,以下是两个文件申明pvapiVersion:v1kind:PersistentVolumemetadata:name:my-pvspec:capacity:storage:5GiaccessModes:-ReadWriteManypersistentVolumeReclaimPolicy:RecyclestorageClassName:nfs......
  • 05、K8s安全
    3.1API资源对象NetworkPolicyNetworkPolicy用来控制Pod与Pod之间的网络通信,它也支持针对Namespace进行限制。基于白名单模式,符合规则的对象通过,不符合的拒绝应用场景:PodA不能访问PodB开发环境所有Pod不能访问测试命名空间提供对外访问时,限制外部IP官方NetworkPolic......
  • Velero backup and restore k8s cluster
    Velero部署及使用示例Velero是用于备份和恢复Kubernetes集群资源和PV的开源项目。基于VeleroCRD创建备份(Backup)和恢复作业(Restore)可以备份或恢复集群中的几乎所有对象,也可以按类型、名称空间或标签过滤对象支持基于文件系统备份(FileSystemBackup,简称FSB)备份Pod卷中的数......
  • 在K8S中,创建pod的过程是什么?
    在Kubernetes(K8S)中,创建一个Pod是一个涉及多个步骤的过程。Pod是Kubernetes中的基本部署单元,它封装了一个或多个容器(通常是Docker容器),这些容器共享存储、网络和生命周期。以下是创建Pod的详细过程:定义Pod资源:首先,需要定义一个Pod资源,通常通过编写一个YAML或JSON格式的配置文件......
  • 在K8S中,api-service 和 kube-schedule 高可用原理是什么?
    在Kubernetes(简称K8s)中,api-service和kube-scheduler的高可用原理是确保这些关键组件在部分节点或实例出现故障时,集群的整体功能和稳定性不受影响。下面分别详细解释这两个组件的高可用原理:1.APIServer高可用原理APIServer作为Kubernetes集群的API网关,负责接收来自用户和其他......