《Kubernetes设计与实现》
  • Introduction
  • 内容简介
  • 前言
  • [第二章:Kubernetes基础]
    • 2.3 Kubernetes API
  • [第三章:工作负载管理]
    • [3.1 Pod]
      • 3.1.1 Pod概述
      • 3.1.1 Pod初体验
    • [3.2 ReplicationController]
      • 3.2.1 ReplicationController概述
      • 3.2.2 ReplicationController初体验
    • [3.3 ReplicaSet]
      • 3.3.1 ReplicaSet概述
      • 3.3.2 ReplicaSet初体验
    • [3.4 Deployment]
      • 3.4.1 Deployment概述
      • 3.4.2 Deployment初体验
    • [3.5 DaemonSet]
      • 3.5.1 DaemonSet概述
      • 3.5.2 DaemonSet初体验
  • [第四章:服务]
    • [4.1 Service]
      • 4.1.1 Service概述
      • 4.1.1 Service上手体验
  • [第六章:配置管理]
    • [6.1 Secret--机密信息管理]
      • 6.1.1 Secret概述
  • [第七章:集群认证]
    • [7.1 证书]
      • 7.1.1 证书基础
      • 7.1.2 证书签发流程
  • [第九章:准入控制器]
    • [9.1 准入控制器概述]
      • 9.1.1 概述
      • [9.1.2 内置默认启动的插件]
        • 9.1.2.1 NamespaceLifecycle
        • 9.1.2.15 MutatingAdmissionWebhook
  • [第十章:ResourceQuota]
    • 10.1 ResourceQuota概述
  • [第十六章:API设计约定]
    • 16.1 字段可选性设计约定
    • 16.2 condition设计约定
    • 16.3 event设计约定
  • [第十九章:Kubernetes生态]
    • [19.1 Kind]
      • [19.1.1 Kind概述]
      • 19.1.2 映射端口到主机
      • 19.1.3 配置端口转发
由 GitBook 提供支持
在本页
  • ReplicaSet配置
  • ReplicaSet与ReplicationController的区别
  • 延伸阅读

这有帮助吗?

  1. [第三章:工作负载管理]
  2. [3.3 ReplicaSet]

3.3.1 ReplicaSet概述

ReplicaSet与ReplicationController类似,它也用于管理一类Pod对象,保证Pod副本数量始终维持在期望值。

ReplicaSet配置

一个简单的ReplicaSet配置如下所示:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-runs-pod
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.19.0

该ReplicaSet配置确保集群中始终运行3个拥有app: nginx标签的Pod副本,如果副本数量不足3个,则使用Pod模版spec.template创建Pod,如果副本数量多于3个,则删除多余的副本。

ReplicaSet配置中最核心的三个要素如下:

  • spec.selector用于查找集群中存在的Pod;

  • spec.replicas用于指定期望的Pod副本数;

  • spec.template用于指定Pod模版,当副本数不足时将使用该模版创建新的Pod。

ReplicaSet与ReplicationController的区别

ReplicationController和ReplicaSet都属于Pod控制器,其设计初衷几乎完全相同,都是确保指定类型的Pod副本数维持在期望值,ReplicationController出现时间比ReplicaSet要早,那么为什么已经有了ReplicationController的情况下,还要再设计一个ReplicaSet呢?二者到底有什么区别呢?

二者的主要区别在于标签选择器,ReplicaSet拥有更先进的标签选择器,ReplicationController只支持旧式的标签选择器,而ReplicaSet不仅支持旧式选择器,还支持新式选择器。

ReplicationController支持的选择器称为Equality-based选择器,即基于等值的选择器:

Selector map[string]string

ReplicaSet不仅支持Equality-based选择器,还支持Set-based选择器,即基于集合的选择器:

type LabelSelector struct {
    MatchLabels map[string]string
    MatchExpressions []LabelSelectorRequirement
}

ReplicationController特性演进到V1时还没有支持Set-based选择器,而Kubernetes又希望推出一款支持Set-based选择器的Pod控制器,为了不破坏API兼容性,不得已才推出了ReplicaSet控制器来替代ReplicationController。

延伸阅读

上一页[3.3 ReplicaSet]下一页3.3.2 ReplicaSet初体验

最后更新于4年前

这有帮助吗?

《ReplicaSet》

https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/