无法理解 DeploymentStatus 中的 availableReplicas、readyReplicas、unavailableReplicas
Couldn't understand availableReplicas, readyReplicas, unavailableReplicas in DeploymentStatus
我正在从我的服务器使用 Kubernetes API 创建部署。部署 pod 有两个容器 - 一个是主容器,另一个是 sidecar 容器,它检查 pod 的健康状况并在它变得健康时调用服务器。
我正在使用 this endpoint to get the deployment. It has deployment status property with the following structure as mention here。
我无法理解字段 availableReplicas
、readyReplicas
、replicas
、unavailableReplicas
和 updatedReplicas
。
我也检查了 Kubernetes 的文档和这些 SO 问题 - and 但无法推断 pod 准备就绪、运行 和可用之间的区别。有人可以解释一下这些术语和状态之间的区别吗?
Deployment's Status中的另一种replicas
可以描述如下:
Replicas
- 描述此部署应该有多少 pods。它是从规范中复制的。这是异步发生的,因此在很短的时间内,您可以读取 spec.replicas
不等于 status.replicas
.
的 Deployment
availableReplicas
- 表示有多少 pods 已准备好至少一段时间 (minReadySeconds
)。这可以防止状态波动。
unavailableReplicas
- 是应该存在的 pods 的总数减去必须创建的 pods 的数量,或者那些尚不可用(例如失败,或尚未准备好 minReadySeconds
)。
updatedReplicas
- pods 可通过部署访问的与规范模板匹配的数量。
readyReplicas
- pods 的数量可以从部署通过所有副本到达。
让我们使用创建 ReplicaSet 的 Deployment 的 official example 来调出三个 nginx Pods:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
部署创建三个复制的 Pods,由 .spec.replicas
字段指示。
通过 运行 执行以下命令创建部署:
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
运行 kubectl get deployments
检查部署是否已创建。
如果 Deployment 仍在创建中,则输出类似于以下内容:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 1s
当您检查集群中的部署时,会显示以下字段:
NAME
- 列出命名空间中部署的名称。
READY
- 显示有多少应用程序副本可供您的用户使用。它遵循 ready/desired.
模式
UP-TO-DATE
- 显示已更新以达到所需状态的副本数。
AVAILABLE
- 显示您的用户可用的应用程序副本数。
AGE
- 显示应用程序 运行ning.
的时间
运行 几秒后又是 kubectl get deployments
。输出类似于:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 18s
要查看 Deployment 创建的 ReplicaSet (rs
),运行 kubectl get rs
。输出类似于:
NAME DESIRED CURRENT READY AGE
nginx-deployment-75675f5897 3 3 3 18s
ReplicaSet 输出显示以下字段:
NAME
- 列出命名空间中 ReplicaSet 的名称。
DESIRED
- 显示您在创建 Deployment 时定义的应用程序所需的副本数。这是想要的状态。
CURRENT
- 显示当前有多少个副本 运行ning.
READY
显示您的用户可用的应用程序副本数。
AGE
- 显示应用程序 运行ning.
的时间
如您所见,availableReplicas
和 readyReplicas
之间没有实际区别,因为这两个字段都显示您的用户可用的应用程序副本数。
而当涉及到Pod Lifecycle it is important to see the difference between Pod phase, Container states and Pod conditions时,它们都有不同的含义。我强烈建议您浏览链接的文档,以便对它们有一个深入的了解。
我正在从我的服务器使用 Kubernetes API 创建部署。部署 pod 有两个容器 - 一个是主容器,另一个是 sidecar 容器,它检查 pod 的健康状况并在它变得健康时调用服务器。
我正在使用 this endpoint to get the deployment. It has deployment status property with the following structure as mention here。
我无法理解字段 availableReplicas
、readyReplicas
、replicas
、unavailableReplicas
和 updatedReplicas
。
我也检查了 Kubernetes 的文档和这些 SO 问题 -
Deployment's Status中的另一种replicas
可以描述如下:
的 DeploymentReplicas
- 描述此部署应该有多少 pods。它是从规范中复制的。这是异步发生的,因此在很短的时间内,您可以读取spec.replicas
不等于status.replicas
.availableReplicas
- 表示有多少 pods 已准备好至少一段时间 (minReadySeconds
)。这可以防止状态波动。unavailableReplicas
- 是应该存在的 pods 的总数减去必须创建的 pods 的数量,或者那些尚不可用(例如失败,或尚未准备好minReadySeconds
)。updatedReplicas
- pods 可通过部署访问的与规范模板匹配的数量。readyReplicas
- pods 的数量可以从部署通过所有副本到达。
让我们使用创建 ReplicaSet 的 Deployment 的 official example 来调出三个 nginx Pods:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
部署创建三个复制的 Pods,由 .spec.replicas
字段指示。
通过 运行 执行以下命令创建部署:
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
运行 kubectl get deployments
检查部署是否已创建。
如果 Deployment 仍在创建中,则输出类似于以下内容:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 1s
当您检查集群中的部署时,会显示以下字段:
NAME
- 列出命名空间中部署的名称。
模式READY
- 显示有多少应用程序副本可供您的用户使用。它遵循 ready/desired.UP-TO-DATE
- 显示已更新以达到所需状态的副本数。AVAILABLE
- 显示您的用户可用的应用程序副本数。
的时间AGE
- 显示应用程序 运行ning.
运行 几秒后又是 kubectl get deployments
。输出类似于:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 18s
要查看 Deployment 创建的 ReplicaSet (rs
),运行 kubectl get rs
。输出类似于:
NAME DESIRED CURRENT READY AGE
nginx-deployment-75675f5897 3 3 3 18s
ReplicaSet 输出显示以下字段:
NAME
- 列出命名空间中 ReplicaSet 的名称。DESIRED
- 显示您在创建 Deployment 时定义的应用程序所需的副本数。这是想要的状态。CURRENT
- 显示当前有多少个副本 运行ning.READY
显示您的用户可用的应用程序副本数。
的时间AGE
- 显示应用程序 运行ning.
如您所见,availableReplicas
和 readyReplicas
之间没有实际区别,因为这两个字段都显示您的用户可用的应用程序副本数。
而当涉及到Pod Lifecycle it is important to see the difference between Pod phase, Container states and Pod conditions时,它们都有不同的含义。我强烈建议您浏览链接的文档,以便对它们有一个深入的了解。