【问题标题】:Kubernetes - can a Deployment have multiple ReplicaSets?Kubernetes——一个部署可以有多个副本集吗?
【发布时间】:2019-04-14 02:29:36
【问题描述】:

刚读完 Nigel Poulton 的 Kubernetes 书。我剩下一个问题,一个 Deployment 是否可以指定多个 ReplicaSet。

当我想到部署时,我想到的是传统意义上的部署整个应用程序。还是每个微服务都有一个部署?

apiVersion: apps/v1beta2
kind: Deployment
metadata: 
  name: hello-deploy
spec:
  replicas: 10
  selector:
    matchLabels:
      app: hello-world
  minReadySeconds: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-pod
        image: nigelpoulton/k8sbook : latest
        ports:
        - containerPort: 8080

【问题讨论】:

  • 每个微服务部署是常见的;一个真正的应用程序可能由几个相关的部署和服务组成,这些部署和服务指向它们的 Pod。

标签: kubernetes containers microservices


【解决方案1】:

根据使用部署完成的更新数量,副本集可以是多个,最多为 10 个。但是只有一个replicaSet(最新的)应该显示pod的数量;所有其他旧集应显示0

我们可以设置revisionHistoryLimit来指定我们想要保留多少旧的replicaSets: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy

【讨论】:

    【解决方案2】:

    它是每个微服务的部署。

    您还可以管理每种微服务类型的“已部署服务”数量。 因此,例如,如果您想部署服务 A(带有 Java 服务的 Docker 映像)5 次,则部署会产生 5 个 pod。每个 pod 都包含 Service A 的镜像。

    如果您部署此服务 A 的新版本(带有 Java 服务的 Docker 映像),Kubernetes 能够进行滚动更新并管理旧 Java 服务类型(现有 pod)的关闭并创建 5 个新的带有新 Java Service A.2(新 docker 映像)的 pod。

    因此,您的整个微服务应用程序/基础架构都建立在多个部署之上。每个生成 Kubernetes pod,由 Kubernetes 服务发布。

    【讨论】:

    • 嗯,Deployment 这个名字很不幸,但至少你可以升级一个微服务是有意义的
    • 是的......但要注意。如果您开始添加 Spinnaker.io 来编排您的 Kubernetes 集群,它会变得更好。 Kubernetes 部署 = Spinnaker Spinnaker 集群,其中包含 Spinnaker 服务器组欢迎来到持续部署的世界! :)
    【解决方案3】:

    部署包含单个 pod 模板,并且每个修订版生成一个副本集

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多