From c03b474a35d90c0e2c11642458036d385427caf9 Mon Sep 17 00:00:00 2001 From: windsonsea Date: Fri, 2 Sep 2022 12:01:53 +0800 Subject: [PATCH] [zh] Sync1.25 /kubernetes-api/workload-resources/pod-v1.md --- .../workload-resources/pod-v1.md | 609 ++++++++++-------- 1 file changed, 332 insertions(+), 277 deletions(-) diff --git a/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md index 1e64fd7b0ae..34cdd3a1430 100644 --- a/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md +++ b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md @@ -54,7 +54,7 @@ Pod 是可以在主机上运行的容器的集合。此资源由客户端创建 --> - **spec** (}}">PodSpec) - 对 Pod 预期行为的规约。更多信息: + 对 Pod 预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +- **ephemeralContainers** ([]}}">EphemeralContainer) + + **补丁策略:基于 `name` 键合并** + + 在此 Pod 中运行的临时容器列表。临时容器可以在现有的 Pod 中运行,以执行用户发起的操作,例如调试。 + 此列表在创建 Pod 时不能指定,也不能通过更新 Pod 规约来修改。 + 要将临时容器添加到现有 Pod,请使用 Pod 的 `ephemeralcontainers` 子资源。 + + 如果 os 字段设置为 `windows`,则必须不能设置以下字段: - `spec.hostPID` - `spec.hostIPC` + - `spec.hostUsers` - `spec.securityContext.seLinuxOptions` - `spec.securityContext.seccompProfile` - `spec.securityContext.fsGroup` @@ -181,8 +197,6 @@ PodSpec 是对 Pod 的描述。 - `spec.containers[*].securityContext.runAsUser` - `spec.containers[*].securityContext.runAsGroup` - 此字段为 Beta 字段,需要启用 `IdentifyPodOS` 特性门控。 - +- **preemptionPolicy** (string) + + preemptionPolicy 是用来抢占优先级较低的 Pod 的策略。取值为 `"Never"`、`"PreemptLowerPriority"` 之一。 + 如果未设置,则默认为 `"PreemptLowerPriority"`。 + - **topologySpreadConstraints.topologyKey** (string),必需 topologyKey 是节点标签的键名。如果节点的标签中包含此键名且键值亦相同,则被认为在相同的拓扑域中。 我们将每个 `<键, 值>` 视为一个 "桶(Bucket)",并尝试将数量均衡的 Pod 放入每个桶中。 - 我们定义域(Domain)为拓扑域的特定实例。此外,我们定义候选域(Eligible Domain)为其节点与节点选择算符匹配的域。 + 我们定义域(Domain)为拓扑域的特定实例。 + 此外,我们定义一个候选域(Eligible Domain)为其节点与 nodeAffinityPolicy 和 nodeTaintsPolicy 的要求匹配的域。 例如,如果 topologyKey 是 `"kubernetes.io/hostname"`,则每个 Node 都是该拓扑的域。 而如果 topologyKey 是 `"topology.kubernetes.io/zone"`,则每个区域都是该拓扑的一个域。 这是一个必填字段。 @@ -481,9 +506,9 @@ PodSpec 是对 Pod 的描述。 - **topologySpreadConstraints.whenUnsatisfiable** (string),必需 - whenUnsatisfiable 表示如果 Pod 不满足分布约束,如何处理它。 + whenUnsatisfiable 表示如果 Pod 不满足分布约束,如何处理它。 - - `DoNotSchedule`(默认):告诉调度器不要调度它。 + - `DoNotSchedule`(默认):告诉调度器不要调度它。 - `ScheduleAnyway`:告诉调度器将 Pod 调度到任何位置,但给予能够降低偏差的拓扑更高的优先级。 当且仅当该 Pod 的每个可能的节点分配都会违反某些拓扑对应的 "maxSkew" 时, @@ -515,13 +540,28 @@ PodSpec 是对 Pod 的描述。 以确定其相应拓扑域中的 Pod 数量。 + - **topologySpreadConstraints.matchLabelKeys** ([]string) + + **原子性:将在合并期间被替换** + + matchLabelKeys 是一组 Pod 标签键,用于通过计算 Pod 分布方式来选择 Pod。 + 新 Pod 标签中不存在的键将被忽略。这些键用于从新来的 Pod 标签中查找值,这些键值标签与 labelSelector 进行逻辑与运算, + 通过计算 Pod 的分布方式来选择现有 Pod 的组。新来的 Pod 标签中不存在的键将被忽略。 + null 或空的列表意味着仅与 labelSelector 匹配。 + - **topologySpreadConstraints.minDomains** (int32) @@ -545,7 +585,56 @@ PodSpec 是对 Pod 的描述。 在这种情况下,无法调度具有相同 labelSelector 的新 Pod,因为如果基于新 Pod 计算的偏差值将为 3(3-0)。将这个 Pod 调度到三个区域中的任何一个,都会违反 maxSkew 约束。 - 此字段是一个 Alpha 字段,需要启用 MinDomainsInPodTopologySpread 特性门控。 + 此字段是一个 Beta 字段,需要启用 MinDomainsInPodTopologySpread 特性门控(默认被启用)。 + + + + - **topologySpreadConstraints.nodeAffinityPolicy** (string) + + nodeAffinityPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理 Pod 的 nodeAffinity/nodeSelector。 + 选项为: + - Honor:只有与 nodeAffinity/nodeSelector 匹配的节点才会包括到计算中。 + - Ignore:nodeAffinity/nodeSelector 被忽略。所有节点均包括到计算中。 + + 如果此值为 nil,此行为等同于 Honor 策略。 + 这是通过 NodeInclusionPolicyInPodTopologySpread 特性标志启用的 Alpha 级别特性。 + + + - **topologySpreadConstraints.nodeTaintsPolicy** (string) + + nodeTaintsPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理节点污点。选项为: + - Honor:包括不带污点的节点以及新来 Pod 具有容忍度且带有污点的节点。 + - Ignore:节点污点被忽略。包括所有节点。 + + 如果此值为 nil,此行为等同于 Ignore 策略。 + 这是通过 NodeInclusionPolicyInPodTopologySpread 特性标志启用的 Alpha 级别特性。 + + +- **overhead** (map[string]}}">Quantity) + + overhead 表示与用指定 RuntimeClass 运行 Pod 相关的资源开销。 + 该字段将由 RuntimeClass 准入控制器在准入时自动填充。 + 如果启用了 RuntimeClass 准入控制器,则不得在 Pod 创建请求中设置 overhead 字段。 + RuntimeClass 准入控制器将拒绝已设置 overhead 字段的 Pod 创建请求。 + 如果在 Pod 规约中配置并选择了 RuntimeClass,overhead 字段将被设置为对应 RuntimeClass 中定义的值, + 否则将保持不设置并视为零。更多信息: + https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md - **restartPolicy** (string) - Pod 内所有容器的重启策略。`Always`、`OnFailure`、`Never` 之一。默认为 `Always`。更多信息: + Pod 内所有容器的重启策略。`Always`、`OnFailure`、`Never` 之一。默认为 `Always`。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy - **serviceAccountName** (string) - serviceAccountName 是用于运行此 Pod 的服务账号的名称。更多信息: + serviceAccountName 是用于运行此 Pod 的服务账号的名称。更多信息: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-service-account/ - **automountServiceAccountToken** (boolean) @@ -1146,53 +1235,22 @@ PodSpec 是对 Pod 的描述。 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 - -### Beta 级别 +### Alpha 级别 +- **hostUsers** (boolean) -- **ephemeralContainers** ([]}}">EphemeralContainer) - - **补丁策略:基于 `name` 键合并** - - 在此 Pod 中运行的临时容器列表。临时容器可以在现有的 Pod 中运行,以执行用户发起的操作,例如调试。 - 此列表在创建 Pod 时不能指定,也不能通过更新 Pod 规约来修改。 - 要将临时容器添加到现有 Pod,请使用 Pod 的 `ephemeralcontainers` 子资源。 - 此字段是 Beta 级别的,可在尚未禁用 EphemeralContainers 特性门控的集群上使用。 - - - -- **preemptionPolicy** (string) - - PreemptionPolicy 是用来抢占优先级较低的 Pod 的策略。取值为 `"Never"`、`"PreemptLowerPriority"` 之一。 - 如果未设置,则默认为 `"PreemptLowerPriority"`。 - - - -- **overhead** (map[string]}}">Quantity) - - overhead 表示与用指定 RuntimeClass 运行 Pod 相关的资源开销。该字段将由 RuntimeClass 准入控制器在准入时自动填充。 - 如果启用了 RuntimeClass 准入控制器,则不得在 Pod 创建请求中设置 overhead 字段。 - RuntimeClass 准入控制器将拒绝已设置 overhead 字段的 Pod 创建请求。 - 如果在 Pod 规约中配置并选择了 RuntimeClass,overhead 字段将被设置为对应 RuntimeClass - 中定义的值,否则将保持未设置并视为零。更多信息: - https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md + 使用主机的用户名字空间。可选:默认为 true。如果设置为 true 或不存在,则 Pod 将运行在主机的用户名字空间中, + 当 Pod 需要仅对主机用户名字空间可用的一个特性时这会很有用,例如使用 CAP_SYS_MODULE 加载内核模块。 + 当设置为 false 时,会为该 Pod 创建一个新的用户名字空间。 + 设置为 false 对于缓解容器逃逸漏洞非常有用,可防止允许实际在主机上没有 root 特权的用户以 root 运行他们的容器。 + 此字段是 Alpha 级别的字段,只有启用 UserNamespacesSupport 特性的服务器才能使用此字段。 -### 已弃用的 +### 已弃用 - **serviceAccount** (string) @@ -1217,8 +1275,7 @@ A single application container that you want to run within a pod. Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. --> - -## Container +## 容器 {#Container} 要在 Pod 中运行的单个应用容器。 @@ -1312,7 +1369,7 @@ A single application container that you want to run within a pod. *Map: unique values on keys `containerPort, protocol` will be kept during a merge* - List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. + List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. *ContainerPort represents a network port in a single container.* --> @@ -1323,9 +1380,10 @@ A single application container that you want to run within a pod. **映射:键 `containerPort, protocol` 组合的唯一值将在合并期间保留** - 要从容器公开的端口列表。在此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是信息性的。 - 此处不指定端口不会阻止该端口被暴露。 - 任何侦听容器内默认 `"0.0.0.0"` 地址的端口都可以从网络访问。无法更新。 + 要从容器暴露的端口列表。此处不指定端口不会阻止该端口被暴露。 + 任何侦听容器内默认 `"0.0.0.0"` 地址的端口都可以从网络访问。使用策略合并补丁来修改此数组可能会破坏数据。 + 更多细节请参阅 https://github.com/kubernetes/kubernetes/issues/108255。 + 无法更新。 **ContainerPort 表示单个容器中的网络端口。** @@ -1473,7 +1531,7 @@ A single application container that you want to run within a pod. - **env.valueFrom.configMapKeyRef.name** (string) - 被引用者的名称。更多信息: + 被引用者的名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names - **env.valueFrom.configMapKeyRef.optional** (boolean) @@ -1540,7 +1598,7 @@ A single application container that you want to run within a pod. - **env.valueFrom.secretKeyRef.name** (string) - 被引用 Secret 的名称。更多信息: + 被引用 Secret 的名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names - **env.valueFrom.secretKeyRef.optional** (boolean) @@ -1642,7 +1700,7 @@ A single application container that you want to run within a pod. - **envFrom.secretRef.name** (string) - 被引用 Secret 的名称。更多信息: + 被引用 Secret 的名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names - **envFrom.secretRef.optional** (boolean) @@ -1783,7 +1841,7 @@ A single application container that you want to run within a pod. - **resources**(ResourceRequirements) - 此容器所需的计算资源。无法更新。更多信息: + 此容器所需的计算资源。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ ResourceRequirements 描述计算资源需求。 @@ -2138,19 +2196,19 @@ A single application container that you want to run within a pod. - **securityContext.seLinuxOptions.level** (string) - level 是应用于容器的 SELinux 级别标签。 + level 是应用于容器的 SELinux 级别标签。 - **securityContext.seLinuxOptions.role** (string) - role 是应用于容器的 SELinux 角色标签。 + role 是应用于容器的 SELinux 角色标签。 - **securityContext.seLinuxOptions.type** (string) - type 是适用于容器的 SELinux 类型标签。 + type 是适用于容器的 SELinux 类型标签。 - **securityContext.seLinuxOptions.user** (string) - user 是应用于容器的 SELinux 用户标签。 + user 是应用于容器的 SELinux 用户标签。 - **stdin** (boolean) - 此容器是否应在容器运行时为 stdin 分配缓冲区。如果未设置,从容器中的 stdin 读取将始终导致 EOF。 - 默认为 false。 + 此容器是否应在容器运行时为 stdin 分配缓冲区。如果未设置,从容器中的 stdin 读取将始终导致 EOF。 + 默认为 false。 - **stdinOnce** (boolean) - 容器运行时是否应在某个 attach 打开 stdin 通道后关闭它。当 stdin 为 true 时,stdin 流将在多个 attach 会话中保持打开状态。 + 容器运行时是否应在某个 attach 打开 stdin 通道后关闭它。当 stdin 为 true 时,stdin 流将在多个 attach 会话中保持打开状态。 如果 stdinOnce 设置为 true,则 stdin 在容器启动时打开,在第一个客户端连接到 stdin 之前为空, - 然后保持打开并接受数据,直到客户端断开连接,此时 stdin 关闭并保持关闭直到容器重新启动。 - 如果此标志为 false,则从 stdin 读取的容器进程将永远不会收到 EOF。 默认为 false。 + 然后保持打开并接受数据,直到客户端断开连接,此时 stdin 关闭并保持关闭直到容器重新启动。 + 如果此标志为 false,则从 stdin 读取的容器进程将永远不会收到 EOF。默认为 false。 ## EphemeralContainer {#EphemeralContainer} @@ -2244,16 +2302,12 @@ A single application container that you want to run within a pod. An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation. To add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted. - -This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate. --> -EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod 以用于用户发起的活动,例如调试。 -临时容器没有资源或调度保证,它们在退出或 Pod 被移除或重新启动时不会重新启动。 -如果临时容器导致 Pod 超出其资源分配,kubelet 可能会驱逐 Pod。 +EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod 以用于用户发起的活动,例如调试。 +临时容器没有资源或调度保证,它们在退出或 Pod 被移除或重新启动时不会重新启动。 +如果临时容器导致 Pod 超出其资源分配,kubelet 可能会驱逐 Pod。 -要添加临时容器,请使用现有 Pod 的 `ephemeralcontainers` 子资源。临时容器不能被删除或重新启动。 - -这是未禁用 EphemeralContainers 特性门控的集群上可用的 Beta 功能。 +要添加临时容器,请使用现有 Pod 的 `ephemeralcontainers` 子资源。临时容器不能被删除或重新启动。
@@ -2264,7 +2318,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod --> - **name** (string),必需 - 以 DNS_LABEL 形式设置的临时容器的名称。此名称在所有容器、Init 容器和临时容器中必须是唯一的。 + 以 DNS_LABEL 形式设置的临时容器的名称。此名称在所有容器、Init 容器和临时容器中必须是唯一的。 - **targetContainerName** (string) - 如果设置,则为 Pod 规约中此临时容器所针对的容器的名称。临时容器将在该容器的名字空间(IPC、PID 等)中运行。 - 如果未设置,则临时容器使用 Pod 规约中配置的名字空间。 + 如果设置,则为 Pod 规约中此临时容器所针对的容器的名称。临时容器将在该容器的名字空间(IPC、PID 等)中运行。 + 如果未设置,则临时容器使用 Pod 规约中配置的名字空间。 - 容器运行时必须实现对此功能的支持。如果运行时不支持名字空间定位,则设置此字段的结果是未定义的。 + 容器运行时必须实现对此功能的支持。如果运行时不支持名字空间定位,则设置此字段的结果是未定义的。 - **command** ([]string) - 入口点数组。不在 Shell 中执行。如果未提供,则使用镜像的 `ENTRYPOINT`。 - 变量引用 `$(VAR_NAME)` 使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。 + 入口点数组。不在 Shell 中执行。如果未提供,则使用镜像的 `ENTRYPOINT`。 + 变量引用 `$(VAR_NAME)` 使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。 `$$` 被简化为 `$`,这允许转义 `$(VAR_NAME)` 语法:即 `"$$(VAR_NAME)"` 将产生字符串字面值 `"$(VAR_NAME)"`。 无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell @@ -2333,7 +2387,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod - **args** ([]string) entrypoint 的参数。如果未提供,则使用镜像的 `CMD`。 - 变量引用 `$(VAR_NAME)` 使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。 + 变量引用 `$(VAR_NAME)` 使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。 `$$` 被简化为 `$`,这允许转义 `$(VAR_NAME)` 语法:即 `"$$(VAR_NAME)"` 将产生字符串字面值 `"$(VAR_NAME)"`。 无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell @@ -2345,7 +2399,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod --> - **workingDir** (string) - 容器的工作目录。如果未指定,将使用容器运行时的默认值,默认值可能在容器镜像中配置。无法更新。 + 容器的工作目录。如果未指定,将使用容器运行时的默认值,默认值可能在容器镜像中配置。无法更新。 - **resources** (ResourceRequirements) - 临时容器不允许使用资源。临时容器使用已分配给 Pod 的空闲资源。 + 临时容器不允许使用资源。临时容器使用已分配给 Pod 的空闲资源。 **ResourceRequirements 描述计算资源的需求。** @@ -3235,7 +3289,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod --> - **lifecycle** (Lifecycle) - 临时容器不允许使用生命周期。 + 临时容器不允许使用生命周期。 生命周期描述了管理系统为响应容器生命周期事件应采取的行动。 对于 postStart 和 preStop 生命周期处理程序,容器的管理会阻塞,直到操作完成, @@ -3263,7 +3317,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod preStop 在容器因 API 请求或管理事件(例如:存活态探针/启动探针失败、抢占、资源争用等) 而终止之前立即调用。如果容器崩溃或退出,则不会调用处理程序。 - Pod 的终止宽限期倒计时在 preStop 钩子执行之前开始。 + Pod 的终止宽限期倒计时在 preStop 钩子执行之前开始。 无论处理程序的结果如何,容器最终都会在 Pod 的终止宽限期内终止(除非被终结器延迟)。 容器的其他管理会阻塞,直到钩子完成或达到终止宽限期。更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks @@ -3284,15 +3338,15 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod - **livenessProbe** (}}">Probe) - 临时容器不允许使用探针。 + 临时容器不允许使用探针。 - **readyProbe** (}}">Probe) - 临时容器不允许使用探针。 + 临时容器不允许使用探针。 - **startupProbe** (}}">Probe) - 临时容器不允许使用探针。 + 临时容器不允许使用探针。 ## LifecycleHandler {#LifecycleHandler} @@ -3301,7 +3355,7 @@ EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified. --> LifecycleHandler 定义了应在生命周期挂钩中执行的特定操作。 -必须指定一个且只能指定一个字段,tcpSocket 除外。 +必须指定一个且只能指定一个字段,tcpSocket 除外。
@@ -3315,7 +3369,7 @@ LifecycleHandler 定义了应在生命周期挂钩中执行的特定操作。 --> - **exec** (execAction) - Exec 指定要执行的操作。 + Exec 指定要执行的操作。 **ExecAction 描述了 "在容器中运行" 操作。** @@ -3328,10 +3382,10 @@ LifecycleHandler 定义了应在生命周期挂钩中执行的特定操作。 - **exec.command** ([]string) - command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。 + command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。 该命令只是被通过 `exec` 执行,而不会单独启动一个 Shell 来运行,因此传统的 - Shell 指令('|' 等)将不起作用。要使用某 Shell,你需要显式调用该 Shell。 - 退出状态 0 被视为活动/健康,非零表示不健康。 + Shell 指令('|' 等)将不起作用。要使用某 Shell,你需要显式调用该 Shell。 + 退出状态 0 被视为活动/健康,非零表示不健康。 -节点亲和性是一组节点亲和性调度规则。 +节点亲和性是一组节点亲和性调度规则。
@@ -3492,7 +3546,7 @@ Node affinity is a group of node affinity scheduling rules. 但它可能会选择违反一个或多个表达式的节点。最优选的节点是权重总和最大的节点, 即对于满足所有调度要求(资源请求、requiredDuringScheduling 亲和表达式等)的每个节点, 通过迭代该字段的元素来计算总和如果节点匹配相应的 matchExpressions,则将 "权重" 添加到总和中; - 具有最高总和的节点是最优选的。 + 具有最高总和的节点是最优选的。 空的首选调度条件匹配所有具有隐式权重 0 的对象(即它是一个 no-op 操作)。 null 值的首选调度条件不匹配任何对象(即也是一个 no-op 操作)。 @@ -3508,7 +3562,7 @@ Node affinity is a group of node affinity scheduling rules. - **preferredDuringSchedulingIgnoredDuringExecution.preference** (NodeSelectorTerm),必需 - 与相应权重相关联的节点选择条件。 + 与相应权重相关联的节点选择条件。 null 值或空值的节点选择条件不会匹配任何对象。这些条件的请求按逻辑与操作组合。 TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。 @@ -3525,11 +3579,11 @@ Node affinity is a group of node affinity scheduling rules. - **preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions** ([]}}">NodeSelectorRequirement) - 按节点标签列出的节点选择条件列表。 + 按节点标签列出的节点选择条件列表。 - **preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields** ([]}}">NodeSelectorRequirement) - 按节点字段列出的节点选择要求列表。 + 按节点字段列出的节点选择要求列表。 -Pod 反亲和性是一组 Pod 间反亲和性调度规则。 +Pod 反亲和性是一组 Pod 间反亲和性调度规则。
@@ -3614,10 +3668,10 @@ Pod 反亲和性是一组 Pod 间反亲和性调度规则。 - **preferredDuringSchedulingIgnoredDuringExecution** ([]WeightedPodAffinityTerm) 调度器更倾向于将 Pod 调度到满足该字段指定的反亲和性表达式的节点, - 但它可能会选择违反一个或多个表达式的节点。 + 但它可能会选择违反一个或多个表达式的节点。 最优选的节点是权重总和最大的节点,即对于满足所有调度要求(资源请求、`requiredDuringScheduling` 反亲和性表达式等)的每个节点,通过遍历元素来计算总和如果节点具有与相应 `podAffinityTerm` - 匹配的 Pod,则此字段并在总和中添加"权重";具有最高加和的节点是最优选的。 + 匹配的 Pod,则此字段并在总和中添加"权重";具有最高加和的节点是最优选的。 **所有匹配的 WeightedPodAffinityTerm 字段的权重都是按节点添加的,以找到最优选的节点。** @@ -3633,7 +3687,7 @@ Pod 反亲和性是一组 Pod 间反亲和性调度规则。 - **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm** (PodAffinityTerm),必需 - 必需的字段。 一个 Pod 亲和性条件,与相应的权重相关联。 + 必需的字段。一个 Pod 亲和性条件,与相应的权重相关联。 定义一组 Pod(即那些与给定名字空间相关的标签选择算符匹配的 Pod 集合), @@ -3652,7 +3706,7 @@ Pod 反亲和性是一组 Pod 间反亲和性调度规则。 此 Pod 应与指定名字空间中与标签选择算符匹配的 Pod 集合位于同一位置(亲和性) 或不位于同一位置(反亲和性),这里的 "在同一位置" 意味着运行在一个节点上,其键名为 `topologyKey` 的标签值与运行所选 Pod 集合中的某 Pod 的任何节点上的标签值匹配。 - 不允许使用空的 `topologyKey`。 + 不允许使用空的 `topologyKey`。 -探针描述了要对容器执行的健康检查,以确定它是否处于活动状态或准备好接收流量。 +探针描述了要对容器执行的健康检查,以确定它是否处于活动状态或准备好接收流量。
@@ -3794,7 +3848,7 @@ Probe describes a health check to be performed against a container to determine --> - **exec** (execAction) - exec 指定要执行的操作。 + exec 指定要执行的操作。 **ExecAction 描述了 "在容器中运行" 操作。** @@ -3822,7 +3876,7 @@ Probe describes a health check to be performed against a container to determine --> - **httpGet** (HTTPGetAction) - httpGet 指定要执行的 HTTP 请求。 + httpGet 指定要执行的 HTTP 请求。 **HTTPGetAction 描述基于 HTTP Get 请求的操作。** @@ -3838,10 +3892,10 @@ Probe describes a health check to be performed against a container to determine - **httpGet.port** (IntOrString),必需 - 容器上要访问的端口的名称或端口号。端口号必须在 1 到 65535 内。名称必须是 IANA_SVC_NAME。 + 容器上要访问的端口的名称或端口号。端口号必须在 1 到 65535 内。名称必须是 IANA_SVC_NAME。 - `IntOrString` 是一种可以保存 int32 或字符串值的类型。 在 JSON 或 YAML 编组和解组时, + `IntOrString` 是一种可以保存 int32 或字符串值的类型。在 JSON 或 YAML 编组和解组时, 它会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。 - **periodSeconds** (int32) - 探针的执行周期(以秒为单位)。默认为 10 秒。最小值为 1。 + 探针的执行周期(以秒为单位)。默认为 10 秒。最小值为 1。 - **failureThreshold** (int32) - 探针成功后的最小连续失败次数,超出此阈值则认为探针失败。默认为 3。最小值为 1。 + 探针成功后的最小连续失败次数,超出此阈值则认为探针失败。默认为 3。最小值为 1。 PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系统的实际状态, -尤其是在托管 Pod 的节点无法联系控制平面的情况下。 +尤其是在托管 Pod 的节点无法联系控制平面的情况下。
@@ -4067,11 +4120,11 @@ PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系 - **nominatedNodeName** (string) 仅当此 Pod 抢占节点上的其他 Pod 时才设置 `nominatedNodeName`, - 但抢占操作的受害者会有体面终止期限,因此此 Pod 无法立即被调度。 - 此字段不保证 Pod 会在该节点上调度。 + 但抢占操作的受害者会有体面终止期限,因此此 Pod 无法立即被调度。 + 此字段不保证 Pod 会在该节点上调度。 如果其他节点更早进入可用状态,调度器可能会决定将 Pod 放置在其他地方。 - 调度器也可能决定将此节点上的资源分配给优先级更高的、在抢占操作之后创建的 Pod。 - 因此,当 Pod 被调度时,该字段可能与 Pod 规约中的 nodeName 不同。 + 调度器也可能决定将此节点上的资源分配给优先级更高的、在抢占操作之后创建的 Pod。 + 因此,当 Pod 被调度时,该字段可能与 Pod 规约中的 nodeName 不同。 - **hostIP** (string) - Pod 被调度到的主机的 IP 地址。如果尚未被调度,则为字段为空。 + Pod 被调度到的主机的 IP 地址。如果尚未被调度,则为字段为空。 - **message** (string) - 一条人类可读的消息,标示有关 Pod 为何处于这种情况的详细信息。 + 一条人类可读的消息,标示有关 Pod 为何处于这种情况的详细信息。 - **reason** (string) @@ -4146,7 +4199,7 @@ PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系 - **podIP** (string) - 分配给 Pod 的 IP 地址。至少在集群内可路由。如果尚未分配则为空。 + 分配给 Pod 的 IP 地址。至少在集群内可路由。如果尚未分配则为空。 - **podIPs** ([]PodIP) **补丁策略:基于 `ip` 键合并** - podIPs 保存分配给 Pod 的 IP 地址。如果指定了该字段,则第 0 个条目必须与 podIP 字段值匹配。 - Pod 最多可以为 IPv4 和 IPv6 各分配 1 个值。如果尚未分配 IP,则此列表为空。 + podIPs 保存分配给 Pod 的 IP 地址。如果指定了该字段,则第 0 个条目必须与 podIP 字段值匹配。 + Pod 最多可以为 IPv4 和 IPv6 各分配 1 个值。如果尚未分配 IP,则此列表为空。 - podIPs 字段中每个条目的 IP 地址信息。每个条目都包含 `ip` 字段,给出分配给 Pod 的 IP 地址。 - 该 IP 地址至少在集群内可路由。 + podIPs 字段中每个条目的 IP 地址信息。每个条目都包含: + + `ip` 字段:给出分配给 Pod 的 IP 地址。该 IP 地址至少在集群内可路由。 - **qosClass** (string) - 根据资源要求分配给 Pod 的服务质量 (QOS) 分类。有关可用的 QOS 类,请参阅 PodQOSClass 类型。 - 更多信息: https://git.k8s.io/design-proposals-archive/node/resource-qos.md + 根据资源要求分配给 Pod 的服务质量 (QOS) 分类。有关可用的 QOS 类,请参阅 PodQOSClass 类型。 + 更多信息: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md - **ephemeralContainerStatuses** ([]ContainerStatus) - 已在此 Pod 中运行的任何临时容器的状态。 - 此字段是 Beta 级别的,可在尚未禁用 `EphemeralContainers` 特性门控的集群上使用。 + 已在此 Pod 中运行的任何临时容器的状态。 + **ContainerStatus 包含此容器当前状态的详细信息。** - **ephemeralContainerStatuses.state** (ContainerState) - 有关容器当前状况的详细信息。 + 有关容器当前状况的详细信息。 ContainerState 保存容器的可能状态。只能设置其中一个成员。如果所有成员都未设置, 则默认为 ContainerStateWaiting。 @@ -5337,11 +5392,11 @@ PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系 - **ephemeralContainerStatuses.state.waiting.message** (string) - 关于容器尚未运行的原因的消息。 + 关于容器尚未运行的原因的消息。 - **ephemeralContainerStatuses.state.waiting.reason** (string) - 容器尚未运行的(简要)原因。 + 容器尚未运行的(简要)原因。 - **ephemeralContainerStatuses.lastState** (ContainerState) - 有关容器的上次终止状况的详细信息。 + 有关容器的上次终止状况的详细信息。 ContainerState 保存容器的可能状态。只能设置其中一个成员。如果所有成员都未设置, 则默认为 `ContainerStateWaiting`。 @@ -5507,11 +5562,11 @@ PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系 - **ephemeralContainerStatuses.lastState.waiting.message** (string) - 关于容器尚未运行的原因的消息。 + 关于容器尚未运行的原因的消息。 - **ephemeralContainerStatuses.lastState.waiting.reason** (string) - 容器尚未运行的(简要)原因。 + 容器尚未运行的(简要)原因。 -PodList 是 Pod 的列表。 +PodList 是 Pod 的列表。
@@ -5580,7 +5635,7 @@ PodList 是 Pod 的列表。 --> - **kind**(string) - kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可以从客户端提交请求的端点推断出资源类别。 + kind 是一个字符串值,表示此对象表示的 REST 资源。服务器可以从客户端提交请求的端点推断出资源类别。 无法更新。采用驼峰式命名。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds