Kubernetes - 一个 Deployment 可以有多个 ReplicaSet 吗?

Has*_*tax 5 containers kubernetes microservices

刚刚读完 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
Run Code Online (Sandbox Code Playgroud)

小智 8

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

我们可以设置指定要保留 revisionHistoryLimit多少old : https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policyreplicaSet


Jor*_*itt 5

部署包含单个 Pod 模板,并为每个修订生成一个副本集


Len*_*lom 5

它意味着每个微服务的部署。

您还可以管理每种微服务类型的“已部署服务”数量。例如,如果您想部署服务 A(带有 Java 服务的 Docker 镜像)5 次,则部署结果为 5 个 Pod。每个 Pod 包含服务 A 的镜像。

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

因此,您的整个微服务应用程序/基础设施是基于多个部署构建的。每个生成 Kubernetes Pod,由 Kubernetes 服务发布。