核心目标维护指定数量的、可互换的 Pod 副本集。确保每个节点上都运行一个特定的 Pod 副本。副本调度逻辑根据 replicas 字段指定的数量进行调度,不关心节点。Pod 可以被调度到集群中任何满足资源条件的节点上。根据节点进行调度。当有新节点加入集群时,会自动在新节点上创建一个 Pod;当节点被移除时,其上的 Pod 也会被回收。Pod 身份所有 Pod 是完全相同、可替换的(无状态)。每个 Pod 与其所在的节点紧密绑定,通常代表该节点。典型应用类型无状态应用,如 Web 前端、API 后端、微服务。系统守护进程,如日志收集器、监控代理、网络插件、存储插件。扩缩容方式通过修改 replicas 字段实现。例如,从 3 个扩展到 10 个。不能通过修改副本数来扩缩容。Pod 数量由集群中匹配的节点数量决定。可以通过节点标签选择器来控制 Pod 运行在哪些节点上(例如,只在 GPU 节点上运行)。摘要:核心目标维护指定数量的、可互换的 Pod 副本集。确保每个节点上都运行一个特定的 Pod 副本。副本调度逻辑根据 replicas 字段指定的数量进行调度,不关心节点。Pod 可以被调度到集群中任何满足资源条件的节点上。根据节点进行调度。当有新节点加入集群时,
更新策略
支持 RollingUpdate(滚动更新)和 Recreate(重建)策略。可以精细控制更新过程(最大不可用、最大超出数)。
支持 RollingUpdate 和 OnDelete 策略。OnDelete 策略意味着只有在用户手动删除旧 Pod 后,才会创建新的 Pod。
节点亲和性可以手动配置,但不是默认行为。默认行为。DaemonSet Controller 会自动为每个 Pod 设置 nodeAffinity,确保其只运行在目标节点上。无状态 Web 服务:这是最经典的场景。你的网站或 API 服务可以有多个完全相同的副本,通过 Service 对外提供负载均衡。微服务架构中的服务:每个微服务通常都是无状态的,可以用 Deployment 来部署和管理。工作负载处理器:例如,一个从消息队列中取任务处理的应用程序,可以启动多个副本来并行处理任务。核心思想:应用实例本身不保存状态,任何一个实例宕机或被替换,都不会导致数据丢失或服务中断,因为状态被保存在集群外(如数据库、缓存)。
日志收集:在每个节点上运行一个日志收集代理(如 Fluentd 或 Filebeat),用于收集该节点上所有 Pod 的日志,并发送到中心存储(如 Elasticsearch)。监控数据采集:在每个节点上运行一个监控代理(如 Prometheus Node Exporter),用于采集该节点的硬件和操作系统指标。网络插件:很多 Kubernetes 网络方案(如 Calico、Weave Net)的组件需要以 DaemonSet 形式运行,以便在每个节点上设置网络规则。存储插件:某些存储插件需要在每个节点上运行一个驱动来挂载存储卷。节点安全与合规:在每个节点上运行安全代理或合规性检查工具。核心思想:这个 Pod 需要深度融入节点,为节点本身或其他 Pod 提供基础服务,并且每个节点都需要一个。
优点:声明式扩缩容:轻松通过一个命令或修改 YAML 文件来增加或减少应用实例数量。强大的滚动更新与回滚:提供平滑的应用升级和故障回退机制,对用户体验影响小。高可用性:自动维持副本数,确保应用的高可用性。Kubernetes 的核心抽象:是与 Service、Ingress 等资源无缝配合的标准方式。缺点:不适合有状态应用:Pod 是临时且可替换的,不适用于需要稳定网络标识符或持久存储的应用(StatefulSet 更适合)。不保证节点级覆盖:无法保证每个节点上都有你的应用实例。来源:佳意教育
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!