理解部署状态中的availableReplicas、readyReplicas、unavailableReplicas和updatedReplicas 字段含义

目录

文章来源

前提

Answers

举例如下


文章来源

https://devpress.csdn.net/k8s/62fff2e9c677032930806816.html

前提

我正在使用我的服务器上的 Kubernetes API 创建部署。部署 pod 有两个容器 - 一个是主容器,另一个是 sidecar 容器,用于检查 pod 的健康状况并在它变得健康时调用服务器。 我正在使用这个端点来获取部署信息。它具有部署状态属性,其结构如下所示。

我无法理解字段availableReplicasreadyReplicasreplicasunavailableReplicasupdatedReplicas

我也检查了 Kubernetes 的文档和这些 SO 问题 -

kubernetes 部署中当前和可用的 pod 副本有什么区别?

kubectl 中“可用”和“不可用”的含义描述部署但无法推断 pod 准备好、运行和可用之间的区别?

有人可以解释这些术语和状态之间的区别吗?

Answers

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

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

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

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

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

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

举例如下

 我们使用官方示例的一个Deployment创建一个ReplicaSet来调出三个nginx Pod :

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之间没有实际区别,因为这两个字段都显示了您的用户可以使用的应用程序副本的数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值