gpt4 book ai didi

kubernetes - 无法理解 DeploymentStatus 中的 availableReplicas、readyReplicas、availableReplicas

转载 作者:行者123 更新时间:2023-12-05 01:08:13 33 4
gpt4 key购买 nike

我正在使用我的服务器中的 Kubernetes API 创建部署。部署 pod 有两个容器 - 一个是主容器,另一个是边车容器,用于检查 pod 的健康状况并在它变得健康时调用服务器。

我正在使用 this端点来获取部署。它具有以下结构的部署状态属性,如提及 here .

我无法理解 availableReplicasreadyReplicasreplicasunavailableReplicasupdatedReplicas 字段.

我也检查了 Kubernetes 的文档和这些 SO 问题 - What is the difference between current and available pod replicas in kubernetes deployment?Meaning of "available" and "unavailable" in kubectl describe deployment但无法推断 Pod 准备就绪、运行和可用之间的区别。有人可以解释一下这些术语和状态之间的区别吗?

最佳答案

Deployment的Status中不同种类的replicas可以描述如下:

  • Replicas - 描述这个部署应该有多少个 pod。它是从规范中复制的。这是异步发生的,因此在很短的时间间隔内,您可以读取 spec.replicas 不等于 status.replicas 的部署。

  • availableReplicas - 表示有多少 pod 至少在一段时间内准备就绪 (minReadySeconds)。这可以防止状态波动。

  • unavailableReplicas - 应该存在的 pod 总数减去必须创建的或尚不可用的 pod 数(例如失败,或还没有为 minReadySeconds 做好准备)。

  • updatedReplicas - 部署可访问的 pod 数量,与规范模板匹配。

  • readyReplicas - 从部署到所有副本可到达的 pod 数量。

让我们使用 official example创建 ReplicaSet 以启动三个 nginx Pod 的 Deployment:

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

Deployment 创建三个复制的 Pod,由 .spec.replicas 字段指示。

通过运行以下命令创建部署:

kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml

运行 kubectl get deployments 以检查 Deployment 是否已创建。

如果 Deployment 仍在创建中,则输出类似于以下内容:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment 0/3 0 0 1s

当您检查集群中的部署时,会显示以下字段:

  • NAME - 列出命名空间中部署的名称。

  • READY - 显示有多少应用程序副本可供用户使用。它遵循准备好的/期望的模式。

  • UP-TO-DATE - 显示已更新以达到所需状态的副本数。

  • AVAILABLE - 显示有多少应用程序副本可供用户使用。

  • AGE - 显示应用程序运行的时间量。

几秒钟后再次运行 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 - 显示所需的应用程序副本数,您在创建部署时定义。这是期望的状态。

  • CURRENT - 显示当前正在运行的副本数。

  • READY 显示有多少应用程序副本可供用户使用。

  • AGE - 显示应用程序运行的时间量。

如您所见,availableReplicasreadyReplicas 之间没有实际区别,因为这两个字段都显示了您的用户可以使用的应用程序副本数。

说到 Pod Lifecycle看到 Pod phase 之间的区别很重要, Container statesPod conditions它们都有不同的含义。我强烈建议您阅读链接的文档,以便深入了解它们。

关于kubernetes - 无法理解 DeploymentStatus 中的 availableReplicas、readyReplicas、availableReplicas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66317251/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com