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

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

时间:2024-01-29 09:14:20浏览次数:22  
标签:存储 StatefulSet 持久 有何 标识 Statefulset Deployment Pod K8S

在Kubernetes(K8s)中,Deployment和StatefulSet是两种不同类型的控制器对象,它们设计用于管理Pod的生命周期,但在管理和部署的应用程序类型、持久性保证以及Pod标识等方面存在显著区别:

  1. Deployment

    • 无状态应用:Deployment主要用于部署无状态服务,即服务实例之间可以相互替换且不需要保留特定的网络标识或存储数据。
    • 副本管理:通过ReplicaSet确保指定数量的Pod副本始终运行,提供水平扩展和滚动更新能力。
    • Pod身份不固定:Pod由Deployment创建时,虽然可以自定义名称,但通常由系统生成,并在重建或扩展时可能会发生变化。
    • 升级策略:支持多种升级策略,如滚动更新、回滚等,确保服务在整个升级过程中具有高可用性。
  2. StatefulSet

    • 有状态应用:StatefulSet适用于部署有状态的服务,比如数据库集群、消息队列等,这些服务需要稳定的持久化存储和唯一、有序的网络标识。
    • 有序与持久化:每个Pod都有一个固定的、唯一的网络标识符(例如:pod-name-0, pod-name-1),并且其持久卷声明(PVC)会绑定到持久化的存储,即使Pod被删除后重新创建,存储的数据也会保留。
    • 有序管理:Pods在创建、更新和删除时按照顺序进行,以满足那些依赖于严格顺序启动或停止的应用场景需求。
    • 稳定的存储和网络标识:StatefulSet为Pod分配的网络标识符和存储都是稳定的,使得应用能够维持跨重启或再调度的持久状态。

综上所述,Deployment适合于无需关心Pod具体身份且可任意替换的弹性服务,而StatefulSet则针对的是需要保持固定标识、有序控制以及持久存储的应用场景。

标签:存储,StatefulSet,持久,有何,标识,Statefulset,Deployment,Pod,K8S
From: https://www.cnblogs.com/huangjiabobk/p/17993766

相关文章

  • 在K8S中,Service类型有哪些?
    在Kubernetes(简称K8s)中,Service是定义访问Pod的一种抽象方法,它提供了负载均衡和网络代理功能。以下是KubernetesService的几种主要类型:ClusterIP(默认类型)创建一个仅集群内部可以访问的虚拟IP。通过这个IP地址,Kubernetes会将流量路由到与Service关联的一组Pod。这种类型......
  • 在K8S中,怎样实现数据持久化?
    在Kubernetes(简称K8s)中,数据持久化是通过Volume机制来实现的。Volume是一个抽象概念,它代表了Pod能够访问的存储资源,这些资源可以是本地磁盘、网络文件系统(NFS)、云提供商提供的块存储或对象存储等。以下是Kubernetes实现数据持久化的关键组件和过程:Volume:Volume为Pod提供了一......
  • 离线部署K8s V1.29.1版本
    准备私用的系统ISO镜像为:CentOS-7-x86_64-Everything-1908.iso安装方式为带GUI的服务器架构说明K8s集群规划VIP:192.168.24.2        通过keepalived提供harbor:镜像仓库、nfs、ntp        连接外网;        内网地址:192.168.24.5k8s-master0:......
  • k8s笔记17(组播测试代码)
    摘要:mc_svcttl;mc_clittl;mcjoin;smcrouted;ompingk8s笔记13(SMCRoute)_ATCtoK8s空管智能运维的技术博客_51CTO博客(第2项)k8s笔记14_ATCtoK8s空管智能运维的技术博客_51CTO博客(第2、8项)测试OK:(前提k8s-node07和k8s-node08运行smcrouted)--->k8s-node07smcroute.confmgroupfromen......
  • k8s之helm部署mysql集群
    一、简介HelmHelm是Kubernetes的包管理器。ChartHelm使用的包格式称为chart。chart存储在ChartRepository。chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的,类似于memcachepod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓......
  • 在K8S中,deploy的yaml如何编写?
    在Kubernetes(简称K8s)中,编写一个Deployment的YAML文件通常包括以下几个关键部分:点击查看代码apiVersion:apps/v1#KubernetesAPI版本,根据你的集群版本选择合适的API版本kind:Deployment#资源类型为Deploymentmetadata:name:my-deployment#部署的名称namesp......
  • 在K8S中,api-server究竟是如何实现高可用?
    在Kubernetes(K8S)中,实现APIServer(kube-apiserver)的高可用性是构建稳定和可靠的集群架构的关键部分。以下是KubernetesAPIServer实现高可用的主要方法:冗余部署:通常会部署多个APIServer实例,并且它们之间是无状态的,这样任何一个实例崩溃或维护时,其他实例可以继续处理请求。......
  • 在K8S中,二进制与Kubeadm安装有何区别?
    在Kubernetes(K8S)的部署中,二进制安装和使用Kubeadm工具进行安装的主要区别在于复杂性和灵活性:二进制安装手动与细致:通过下载官方提供的各个组件(如kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kubectl等)的二进制文件并手动配置每个组件的方式进行......
  • 在K8S中,集群安装过程有哪些?
    Kubernetes(简称K8s)的安装过程因具体环境和需求的不同而有所差异,但通常包括以下核心步骤:准备环境:确保至少有两台或更多服务器或虚拟机作为集群节点(包括控制平面节点和工作节点)。安装配置好操作系统(如Ubuntu、CentOS等),并更新到最新状态。安装必要的软件包(例如Docker用于容器......
  • 在K8S中,静态、动态、自主式Pod有何区别?
    在Kubernetes(简称K8s)中,静态Pod、自主式Pod和动态Pod是不同管理方式下的Pod类型,它们的区别主要体现在创建和管理方式上:静态Pod:静态Pod是由kubelet直接管理的,其配置文件存储在节点本地而非通过APIServer创建。kubelet会根据指定路径下的静态Pod配置文件来创建和管理Pod,这些Po......