Shi*_*gla 8 kubernetes kubernetes-apiserver
我正在使用服务器上的 Kubernetes API 创建部署。部署 Pod 有两个容器 - 一个是主容器,另一个是 Sidecar 容器,用于检查 Pod 的运行状况并在运行状况良好时调用服务器。
我正在使用此端点来进行部署。它具有部署状态属性,其结构如下所述。
我无法理解availableReplicas、readyReplicas、replicas和字段。unavailableReplicasupdatedReplicas
我也检查了 Kubernetes 的文档和这些 SO 问题 - What is the Difference Between current and available pod replicas in kubernetes deployment? kubectl中“可用”和“不可用”的含义描述了部署,但无法推断 pod 准备就绪、正在运行和可用之间的区别。有人可以解释一下这些术语和状态之间的区别吗?
OhH*_*ark 13
Deployment的Status中的不同种类replicas可以描述如下:
Replicas- 描述此部署应有多少个 Pod。它是从规范中复制的。spec.replicas这是异步发生的,因此在很短的时间内,您可以读取不等于 的Deployment 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
Run Code Online (Sandbox Code Playgroud)
Deployment 创建三个复制 Pod,如.spec.replicas字段所示。
通过运行以下命令创建部署:
kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
Run Code Online (Sandbox Code Playgroud)
运行kubectl get deployments以检查 Deployment 是否已创建。
如果仍在创建 Deployment,则输出类似于以下内容:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 1s
Run Code Online (Sandbox Code Playgroud)
当您检查集群中的部署时,会显示以下字段:
NAME- 列出命名空间中部署的名称。
READY- 显示有多少个应用程序副本可供您的用户使用。它遵循准备/期望的模式。
UP-TO-DATE- 显示已更新以达到所需状态的副本数量。
AVAILABLE- 显示有多少个应用程序副本可供您的用户使用。
AGE- 显示应用程序已运行的时间量。
kubectl get deployments几秒钟后再次运行。输出类似于:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 18s
Run Code Online (Sandbox Code Playgroud)
rs要查看Deployment 创建的ReplicaSet ( ),请运行kubectl get rs。输出类似于:
NAME DESIRED CURRENT READY AGE
nginx-deployment-75675f5897 3 3 3 18s
Run Code Online (Sandbox Code Playgroud)
ReplicaSet 输出显示以下字段:
NAME- 列出命名空间中 ReplicaSet 的名称。
DESIRED- 显示所需的应用程序副本数量,该数量是您在创建部署时定义的。这是期望的状态。
CURRENT- 显示当前正在运行的副本数量。
READY显示有多少个应用程序副本可供您的用户使用。
AGE- 显示应用程序已运行的时间量。
availableReplicas正如您所看到的, 和之间没有实际区别,readyReplicas因为这两个字段都显示用户可以使用多少个应用程序副本。
当谈到Pod 生命周期时,重要的是要看到Pod 阶段、容器状态和Pod 条件之间的区别,它们都有不同的含义。我强烈建议您仔细阅读链接的文档,以便对其背后有一个扎实的理解。
| 归档时间: |
|
| 查看次数: |
11287 次 |
| 最近记录: |