初步说明:对于我来说,“复制”一词意味着重复或复制,但是:
当有人说“一个副本”时,这是指总共一个实例还是两个实例?有趣的是,我遇到过前一种情况的使用,这让我有点不放心。基于第二种情况,如果总共只有一个应用程序或实例,会说“零副本”吗?
抱歉,这个问题似乎有点模糊。举个例子。我的应用程序或实例在 8 个不同的 pod 中有 8 个不同的容器。
+------------+--------------+--------------+
| #container | case 1 | case 2 |
+------------+--------------+--------------+
| 8 x 1 | "1 replica" | "0 replicas" |
| 8 x 2 | "2 replicas" | "1 replica" |
| 8 x 3 | "3 replicas" | "2 replicas" |
| ... | ... | ... |
+------------+--------------+--------------+
这里,“副本”一词是指单个容器/pod还是整个应用程序并不重要(它们是等效的),因为我将复制 8 个具有相同编号的容器/pod 中的每个不同容器/pod。我想知道您是否更愿意使用案例 1 或案例 2(在同事讨论中),或者编号是从一开始还是从零开始。如有必要,请将问题标记为基于意见。
答案1
您的问题取决于许多情景因素。很难说,因为您没有提供整个情景。不过您放了Kubernetes
标签,所以我可以回答Kubernetes
。
如果你指的是Replica
它Kubernetes
意味着有多少同一应用程序的 pod应该在集群中运行。
它被描述在Kubernetes 文档当你创建时Deployment
,它会创建ReplicaSet
负责现有 pod 数量(副本数量)的。
如果你将部署和扩展副本值,Deployment
它将自动将更改应用于副本集。
$ kubectl run nginx --image=nginx --replicas=3
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-7db9fccd9b-4gzfd 1/1 Running 0 9s
nginx-7db9fccd9b-7msm2 1/1 Running 0 9s
nginx-7db9fccd9b-mfj9s 1/1 Running 0 9s
$ kubectl scale deployment nginx --replicas=1
deployment.extensions/nginx scaled
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-7db9fccd9b-7msm2 1/1 Running 0 78s
在 中Kubernetes
,如果将副本值设置为 0,则此特定的 中将不会有任何正在运行的 pod Deployment
。
$ kubectl scale deploy nginx --replicas=0
deployment.extensions/nginx scaled
sekreta@cloudshell:~ (composite-rune-239911)$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 0/0 0 0 6m48s
因此,如果你问的是Replica
regarding的含义Kubernetes concept
,那么正确的是情况1。