Pod

Pod 是可以在主机上运行的容器集合。

apiVersion: v1

import "k8s.io/api/core/v1"

Pod

Pod 是可以在主机上运行的容器集合。此资源由客户端创建并在主机上进行调度。


PodSpec

PodSpec 是 Pod 的描述。


容器

  • containers ([]Container), required

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    属于 Pod 的容器列表。目前无法添加或删除容器。Pod 中必须至少有一个容器。无法更新。

  • initContainers ([]Container)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    属于 Pod 的初始化容器列表。Init 容器按顺序执行,在容器启动之前。如果任何 init 容器失败,则 Pod 被认为已失败,并根据其 restartPolicy 进行处理。Init 容器或普通容器的名称必须在所有容器中是唯一的。Init 容器可能没有生命周期操作、就绪探测、存活探测或启动探测。Init 容器的资源需求在调度期间通过查找每种资源类型的最高请求/限制来考虑,然后使用该值或普通容器之和的较大值。限制以类似的方式应用于 init 容器。目前无法添加或删除 init 容器。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/init-containers/

  • ephemeralContainers ([]EphemeralContainer)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    在此 Pod 中运行的临时容器列表。临时容器可以在现有 Pod 中运行,以执行用户发起的操作,例如调试。此列表在创建 Pod 时无法指定,并且无法通过更新 Pod 规范进行修改。为了将临时容器添加到现有 Pod,请使用 Pod 的 ephemeralcontainers 子资源。

  • imagePullSecrets ([]LocalObjectReference)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    ImagePullSecrets 是一个可选的 secret 引用列表,这些 secret 位于同一命名空间中,用于拉取此 PodSpec 使用的任何镜像。如果指定,这些 secret 将传递给各个 puller 实现以供其使用。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

  • enableServiceLinks (boolean)

    EnableServiceLinks 指示是否应将有关服务的信息注入到 Pod 的环境变量中,匹配 Docker links 的语法。可选:默认为 true。

  • os (PodOS)

    指定容器的操作系统。如果设置了此项,某些 Pod 和容器字段将被限制。

    如果 OS 字段设置为 linux,则必须取消设置以下字段:-securityContext.windowsOptions

    如果 OS 字段设置为 windows,则必须取消设置以下字段:- spec.hostPID - spec.hostIPC - spec.hostUsers - spec.resources - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[].securityContext.appArmorProfile - spec.containers[].securityContext.seLinuxOptions - spec.containers[].securityContext.seccompProfile - spec.containers[].securityContext.capabilities - spec.containers[].securityContext.readOnlyRootFilesystem - spec.containers[].securityContext.privileged - spec.containers[].securityContext.allowPrivilegeEscalation - spec.containers[].securityContext.procMount - spec.containers[].securityContext.runAsUser - spec.containers[].securityContext.runAsGroup

    PodOS 定义 Pod 的操作系统参数。

调度

  • nodeSelector (map[string]string)

    NodeSelector 是一个选择器,必须为 true 才能将 Pod 适配到节点。选择器必须匹配节点的标签,才能将 Pod 调度到该节点。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/assign-pod-node/

  • nodeName (string)

    NodeName 指示 Pod 调度到哪个节点。如果为空,则此 Pod 是由默认调度器中定义的调度器进行调度的候选对象。一旦此字段设置,则此节点的 kubelet 负责此 Pod 的生命周期。不应使用此字段来表达将 Pod 调度到特定节点的愿望。https://kubernetes.ac.cn/docs/concepts/scheduling-eviction/assign-pod-node/#nodename

  • affinity (Affinity)

    如果指定,则为 Pod 的调度约束

    Affinity 是一组亲和性调度规则。

    • affinity.nodeAffinity (NodeAffinity)

      描述 Pod 的节点亲和性调度规则。

    • affinity.podAffinity (PodAffinity)

      描述 Pod 亲和性调度规则(例如,将此 Pod 放置在与某些其他 Pod 相同的节点、区域等)。

    • affinity.podAntiAffinity (PodAntiAffinity)

      描述 Pod 反亲和性调度规则(例如,避免将此 Pod 放置在与某些其他 Pod 相同的节点、区域等)。

  • tolerations ([]Toleration)

    原子:将在合并期间被替换

    如果指定,则为 Pod 的容忍度。

    此 Toleration 附加到 Pod 容忍与三元组 <key,value,effect> 匹配的任何 taint,使用匹配运算符

    • tolerations.key (string)

      Key 是容忍度应用的 taint key。为空表示匹配所有 taint key。如果 key 为空,则运算符必须为 Exists;这种组合意味着匹配所有值和所有 key。

    • tolerations.operator (string)

      Operator 表示 key 与值的关系。有效运算符是 Exists、Equal、Lt 和 Gt。默认为 Equal。Exists 等效于值的通配符,因此 Pod 可以容忍特定类别的所有 taint。Lt 和 Gt 执行数字比较(需要特性门控 TaintTolerationComparisonOperators)。

      可能的枚举值

      • "Equal"
      • "Exists"
      • "Gt"
      • "Lt"
    • tolerations.value (string)

      Value 是容忍度匹配的 taint 值。如果运算符为 Exists,则该值应为空,否则只需一个常规字符串。

    • tolerations.effect (string)

      Effect 指示要匹配的 taint effect。为空表示匹配所有 taint effect。当指定时,允许的值是 NoSchedule、PreferNoSchedule 和 NoExecute。

      可能的枚举值

      • "NoExecute" 驱逐任何未容忍 taint 的已运行 Pod。当前由 NodeController 强制执行。
      • "NoSchedule" 除非它们容忍 taint,否则不允许新的 Pod 调度到节点上,但允许提交到 Kubelet 而不通过调度器的所有 Pod 启动,并允许所有已运行的 Pod 继续运行。由调度器强制执行。
      • "PreferNoSchedule" 类似于 TaintEffectNoSchedule,但调度器尝试不将新的 Pod 调度到节点上,而不是完全禁止新的 Pod 调度到节点上。由调度器强制执行。
    • tolerations.tolerationSeconds (int64)

      TolerationSeconds 表示容忍度(必须是 effect NoExecute,否则此字段将被忽略)容忍 taint 的时间段。默认情况下,未设置,这意味着永远容忍 taint(不驱逐)。零和负值将被系统视为 0(立即驱逐)。

  • schedulerName (string)

    如果指定,则 Pod 将由指定的调度器分发。如果未指定,则 Pod 将由默认调度器分发。

  • runtimeClassName (string)

    RuntimeClassName 指的是 node.k8s.io 组中的 RuntimeClass 对象,应该用于运行此 Pod。如果未找到与指定类名匹配的 RuntimeClass 资源,则 Pod 将不会运行。如果未设置或为空,将使用“legacy”RuntimeClass,这是一个具有空定义的隐式类,使用默认运行时处理程序。更多信息:https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class

  • priorityClassName (string)

    如果指定,则表示 Pod 的优先级。 "system-node-critical" 和 "system-cluster-critical" 是两个特殊关键字,表示最高优先级,前者优先级最高。任何其他名称必须通过创建具有该名称的 PriorityClass 对象来定义。如果未指定,Pod 优先级将为默认值或零(如果不存在默认值)。

  • priority (int32)

    优先级值。各种系统组件使用此字段查找 Pod 的优先级。当启用优先级准入控制器时,它会阻止用户设置此字段。准入控制器从 PriorityClassName 中填充此字段。值越高,优先级越高。

  • preemptionPolicy (string)

    PreemptionPolicy 是抢占较低优先级 Pod 的策略。 选项为 Never、PreemptLowerPriority。如果未设置,则默认为 PreemptLowerPriority。

    可能的枚举值

    • "Never" 表示 Pod 从不抢占优先级较低的其他 Pod。
    • "PreemptLowerPriority" 表示 Pod 可以抢占优先级较低的其他 Pod。
  • topologySpreadConstraints ([]TopologySpreadConstraint)

    补丁策略:在 key topologyKey 上合并

    映射:在合并期间将保留 key topologyKey, whenUnsatisfiable 上的唯一值

    TopologySpreadConstraints 描述了一组 Pod 应该如何在拓扑域中分布。调度器将以符合约束的方式调度 Pod。所有 topologySpreadConstraints 都是 AND 关系。

    TopologySpreadConstraint 指定如何在给定的拓扑中分布匹配的 Pod。

    • topologySpreadConstraints.maxSkew (int32), 必需

      MaxSkew 描述了 Pod 分布不均匀的程度。当 whenUnsatisfiable=DoNotSchedule 时,它是目标拓扑中匹配 Pod 的数量与全局最小值之间的最大允许差异。全局最小值是某个合格域中匹配 Pod 的最小数量,或者如果合格域的数量少于 MinDomains,则为零。例如,在具有 3 个区域的集群中,如果 MaxSkew 设置为 1,并且具有相同 labelSelector 的 Pod 分布为 2/2/1:在这种情况下,全局最小值为 1。| zone1 | zone2 | zone3 | | P P | P P | P | - 如果 MaxSkew 为 1,传入的 Pod 只能调度到 zone3 以成为 2/2/2;将其调度到 zone1(zone2)会使 zone1(zone2)上的 ActualSkew(3-1)违反 MaxSkew(1)。 - 如果 MaxSkew 为 2,传入的 Pod 可以调度到任何区域。当 whenUnsatisfiable=ScheduleAnyway 时,它用于优先考虑满足它的拓扑。这是一个必需的字段。默认值为 1,不允许为 0。

    • topologySpreadConstraints.topologyKey (string), 必需

      TopologyKey 是节点标签的键。具有此键和相同值的节点被认为在同一拓扑中。我们将每个 <key, value> 视为一个“bucket”,并尝试将平衡数量的 Pod 放入每个 bucket 中。我们定义一个域为拓扑的特定实例。此外,我们定义一个合格域为满足 nodeAffinityPolicy 和 nodeTaintsPolicy 要求的一个域。例如,如果 TopologyKey 是 "kubernetes.io/hostname",则每个 Node 都是该拓扑的一个域。并且,如果 TopologyKey 是 "topology.kubernetes.io/zone",则每个区域都是该拓扑的一个域。这是一个必需的字段。

    • topologySpreadConstraints.whenUnsatisfiable (string), 必需

      WhenUnsatisfiable 指示如何处理如果 Pod 不满足传播约束的情况。 - DoNotSchedule(默认值)告诉调度器不要调度它。 - ScheduleAnyway 告诉调度器在任何位置调度 Pod,但优先考虑有助于减少偏差的拓扑。只有当每个可能的节点分配对于该 Pod 都会违反某个拓扑上的 "MaxSkew" 时,约束才被认为是“不满足”。例如,在具有 3 个区域的集群中,MaxSkew 设置为 1,并且具有相同 labelSelector 的 Pod 分布为 3/1/1:| zone1 | zone2 | zone3 | | P P P | P | P | 如果 WhenUnsatisfiable 设置为 DoNotSchedule,传入的 Pod 只能调度到 zone2(zone3)以成为 3/2/1(3/1/2),因为 zone2(zone3)上的 ActualSkew(2-1)满足 MaxSkew(1)。换句话说,集群仍然可能不平衡,但调度器不会使其不平衡。这是一个必需的字段。

      可能的枚举值

      • "DoNotSchedule" 指示调度器在不满足约束时不要调度 Pod。
      • "ScheduleAnyway" 指示调度器即使在不满足约束时也调度 Pod。
    • topologySpreadConstraints.labelSelector (LabelSelector)

      LabelSelector 用于查找匹配的 Pod。匹配此标签选择器的 Pod 被计数以确定其相应拓扑域中的 Pod 数量。

    • topologySpreadConstraints.matchLabelKeys ([]string)

      原子:将在合并期间被替换

      MatchLabelKeys 是一组 Pod 标签键,用于选择用于计算传播的 Pod。这些键用于从传入 Pod 的标签中查找值,这些键值标签与 labelSelector AND 运算以选择用于传入 Pod 的传播计算的现有 Pod 组。相同的键禁止同时存在于 MatchLabelKeys 和 LabelSelector 中。当 LabelSelector 未设置时,无法设置 MatchLabelKeys。不存在于传入 Pod 标签中的键将被忽略。空列表表示仅与 labelSelector 匹配。

      这是一个 beta 字段,需要启用 MatchLabelKeysInPodTopologySpread 功能门(默认启用)。

    • topologySpreadConstraints.minDomains (int32)

      MinDomains 指示最小数量的合格域。当具有匹配拓扑键的合格域的数量少于 minDomains 时,Pod 拓扑传播将“全局最小值”视为 0,然后执行 Skew 的计算。当具有匹配拓扑键的合格域的数量等于或大于 minDomains 时,此值对调度没有影响。因此,当合格域的数量少于 minDomains 时,调度器不会将超过 maxSkew 个 Pod 调度到这些域。如果值为 nil,则约束的行为就像 MinDomains 等于 1 一样。有效值为大于 0 的整数。当值为非 nil 时,WhenUnsatisfiable 必须为 DoNotSchedule。

      例如,在具有 3 个区域的集群中,MaxSkew 设置为 2,MinDomains 设置为 5,并且具有相同 labelSelector 的 Pod 分布为 2/2/2:| zone1 | zone2 | zone3 | | P P | P P | P P | 域的数量少于 5(MinDomains),因此“全局最小值”被视为 0。在这种情况下,具有相同 labelSelector 的新 Pod 无法调度,因为如果将新 Pod 调度到任何三个区域之一,计算出的偏差将为 3(3 - 0),这将违反 MaxSkew。

    • topologySpreadConstraints.nodeAffinityPolicy (string)

      NodeAffinityPolicy 指示我们在计算 Pod 拓扑传播偏差时如何处理 Pod 的 nodeAffinity/nodeSelector。选项是:- Honor:仅包含匹配 nodeAffinity/nodeSelector 的节点。 - Ignore:忽略 nodeAffinity/nodeSelector。包含所有节点。

      如果此值为 nil,则行为等同于 Honor 策略。

      可能的枚举值

      • "Honor" 表示在计算 Pod 拓扑传播偏差时使用此调度指令。
      • "Ignore" 表示在计算 Pod 拓扑传播偏差时忽略此调度指令。
    • topologySpreadConstraints.nodeTaintsPolicy (string)

      NodeTaintsPolicy 指示我们在计算 Pod 拓扑传播偏差时如何处理节点污点。选项是:- Honor:包含没有污点的节点,以及传入 Pod 具有容忍度的污点节点。 - Ignore:忽略节点污点。包含所有节点。

      如果此值为 nil,则行为等同于 Ignore 策略。

      可能的枚举值

      • "Honor" 表示在计算 Pod 拓扑传播偏差时使用此调度指令。
      • "Ignore" 表示在计算 Pod 拓扑传播偏差时忽略此调度指令。
  • overhead (map[string]Quantity)

    Overhead 表示与在给定 RuntimeClass 上运行 Pod 相关的资源开销。此字段将在准入时由 RuntimeClass 准入控制器自动填充。如果启用了 RuntimeClass 准入控制器,则不得在 Pod 创建请求中设置开销。RuntimeClass 准入控制器将拒绝已设置开销的 Pod 创建请求。如果配置了 RuntimeClass 并在 PodSpec 中选择,则 Overhead 将设置为相应 RuntimeClass 中定义的值,否则将保持未设置并视为零。更多信息:https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md

生命周期

  • activeDeadlineSeconds (int64)

    可选的持续时间(以秒为单位),Pod 相对于 StartTime 可以在节点上处于活动状态,然后系统将主动尝试将其标记为失败并杀死关联的容器。值必须是正整数。

  • readinessGates ([]PodReadinessGate)

    原子:将在合并期间被替换

    如果指定,所有就绪门将被评估以确定 Pod 的就绪状态。当其所有容器都已就绪并且就绪门中指定的所有条件的状态等于“True”时,Pod 才就绪。更多信息:https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates

    PodReadinessGate 包含对 Pod 条件的引用

    • readinessGates.conditionType (string), 必需

      ConditionType 指的是 Pod 的条件列表中具有匹配类型的条件。

  • restartPolicy (string)

    Pod 内所有容器的重启策略。选项为 Always、OnFailure、Never。在某些情况下,可能只允许这些值的一个子集。默认值为 Always。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

    可能的枚举值

    • "Always"
    • "Never"
    • "OnFailure"
  • terminationGracePeriodSeconds (int64)

    Pod 需要优雅终止的可选持续时间(以秒为单位)。可以在删除请求中减少。值必须是非负整数。值为零表示立即通过 kill 信号停止(没有关机机会)。如果此值为 nil,则将使用默认的宽限期。宽限期是在 Pod 运行的进程收到终止信号和进程被 kill 信号强制停止之间的时间。将此值设置为比您的流程的预期清理时间更长。默认值为 30 秒。

  • workloadRef (WorkloadReference)

    WorkloadRef 提供对 Pod 所属 Workload 对象的引用。调度器使用此字段来识别 PodGroup 并应用正确的组调度策略。此字段引用的 Workload 对象在 Pod 创建时可能不存在。此字段是不可变的,但具有相同名称的 Workload 对象可能会被重新创建,并具有不同的策略。在 Pod 调度期间执行此操作可能会导致放置不符合预期的策略。

    WorkloadReference 标识 Pod 所属的 Workload 对象和 PodGroup 成员关系。调度器使用此信息来应用工作负载感知调度语义。

    • workloadRef.name (string), 必需

      Name 定义此 Pod 所属的 Workload 对象的名称。Workload 必须与 Pod 位于同一命名空间中。如果它与任何现有的 Workload 不匹配,则 Pod 将保持不可调度状态,直到创建 Workload 对象并被 kube-scheduler 观察到。它必须是 DNS 子域名。

    • workloadRef.podGroup (string), 必需

      PodGroup 是此 Pod 属于 Workload 内的 PodGroup 的名称。如果它与 Workload 内的任何现有 PodGroup 不匹配,则 Pod 将保持不可调度状态,直到 Workload 对象被重新创建并被 kube-scheduler 观察到。它必须是 DNS 标签。

    • workloadRef.podGroupReplicaKey (string)

      PodGroupReplicaKey 指定此 Pod 属于的 PodGroup 的副本键。它用于区分属于同一 pod group 不同副本的 pod。pod group 策略分别应用于每个副本。设置后,它必须是 DNS 标签。

主机名和名称解析

  • hostname (string)

    指定 Pod 的主机名。如果未指定,Pod 的主机名将被设置为系统定义的默认值。

  • hostnameOverride (string)

    HostnameOverride 指定 Pod 感知的主机名的显式覆盖。此字段仅指定 Pod 的主机名,不影响其 DNS 记录。当此字段设置为非空字符串时:- 它优先于 hostnamesubdomain 中设置的值。- Pod 的主机名将被设置为此值。- setHostnameAsFQDN 必须为 nil 或设置为 false。- hostNetwork 必须设置为 false。

    此字段必须是 RFC 1123 中定义的有效 DNS 子域名,并且包含最多 64 个字符。需要启用 HostnameOverride 功能门。

  • setHostnameAsFQDN (boolean)

    如果为 true,Pod 的主机名将被配置为 Pod 的 FQDN,而不是叶名称(默认值)。在 Linux 容器中,这意味着在内核的主机名字段(struct utsname 的 nodename 字段)中设置 FQDN。在 Windows 容器中,这意味着将注册表值 hostname 设置为 FQDN,注册表键为 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。如果 Pod 没有 FQDN,则此操作无效。默认值为 false。

  • subdomain (string)

    如果指定,完全限定的 Pod 主机名将为 "<hostname>.<subdomain>.<pod 命名空间>.svc.<集群域名>"。如果未指定,Pod 将完全没有域名。

  • hostAliases ([]HostAlias)

    Patch 策略:在 key ip 上合并

    Map:在 key ip 上的唯一值将在合并期间保留

    HostAliases 是一个可选的主机和 IP 列表,如果指定,将被注入到 Pod 的 hosts 文件中。

    HostAlias 包含将在 Pod 的 hosts 文件中作为条目注入的 IP 和主机名之间的映射。

    • hostAliases.ip (string), 必需

      主机文件条目的 IP 地址。

    • hostAliases.hostnames ([]string)

      原子:将在合并期间被替换

      上述 IP 地址的主机名。

  • dnsConfig (PodDNSConfig)

    指定 Pod 的 DNS 参数。此处指定的参数将与基于 DNSPolicy 生成的 DNS 配置合并。

    PodDNSConfig 定义除了从 DNSPolicy 生成的之外的 Pod 的 DNS 参数。

    • dnsConfig.nameservers ([]string)

      原子:将在合并期间被替换

      DNS 名称服务器 IP 地址列表。这将附加到从 DNSPolicy 生成的基本名称服务器。将删除重复的名称服务器。

    • dnsConfig.options ([]PodDNSConfigOption)

      原子:将在合并期间被替换

      DNS 解析器选项列表。这将与从 DNSPolicy 生成的基本选项合并。将删除重复的条目。在 Options 中给出的解析选项将覆盖在基本 DNSPolicy 中出现的那些选项。

      PodDNSConfigOption 定义 Pod 的 DNS 解析器选项。

      • dnsConfig.options.name (string)

        Name 是此 DNS 解析器选项的名称。必需。

      • dnsConfig.options.value (string)

        Value 是此 DNS 解析器选项的值。

    • dnsConfig.searches ([]string)

      原子:将在合并期间被替换

      用于主机名查找的 DNS 搜索域列表。这将附加到从 DNSPolicy 生成的基本搜索路径。将删除重复的搜索路径。

  • dnsPolicy (string)

    设置 Pod 的 DNS 策略。默认为“ClusterFirst”。有效值为 'ClusterFirstWithHostNet'、'ClusterFirst'、'Default' 或 'None'。在 DNSConfig 中给出的 DNS 参数将与使用 DNSPolicy 选择的策略合并。要与 hostNetwork 一起设置 DNS 选项,必须显式将 DNS 策略指定为“ClusterFirstWithHostNet”。

    可能的枚举值

    • "ClusterFirst" 表示 Pod 应该首先使用集群 DNS,除非 hostNetwork 为 true,如果可用,则回退到默认的(由 kubelet 确定)DNS 设置。
    • "ClusterFirstWithHostNet" 表示 Pod 应该首先使用集群 DNS,如果可用,则回退到默认的(由 kubelet 确定)DNS 设置。
    • "Default" 表示 Pod 应该使用默认的(由 kubelet 确定)DNS 设置。
    • "None" 表示 Pod 应该使用空的 DNS 设置。应通过 DNSConfig 定义 DNS 参数,例如名称服务器和搜索路径。

主机命名空间

  • hostNetwork (boolean)

    为此 Pod 请求主机网络。使用主机的网络命名空间。使用 HostNetwork 时,应指定端口,以便调度器知道。当 hostNetwork 为 true 时,端口定义中指定的 hostPort 字段必须与 containerPort 匹配,并且端口定义中未指定的 hostPort 字段默认设置为与 containerPort 匹配。默认值为 false。

  • hostPID (boolean)

    使用主机的 pid 命名空间。可选:默认值为 false。

  • hostIPC (boolean)

    使用主机的 ipc 命名空间。可选:默认值为 false。

  • shareProcessNamespace (boolean)

    在 Pod 中的所有容器之间共享单个进程命名空间。当设置此项时,容器将能够查看和向同一 Pod 中的其他容器发送信号,并且每个容器中的第一个进程将不会被分配 PID 1。HostPID 和 ShareProcessNamespace 不能同时设置。可选:默认值为 false。

服务帐户

安全上下文

  • securityContext (PodSecurityContext)

    SecurityContext 包含 Pod 级别的安全属性和常见的容器设置。可选:默认为空。请参阅类型描述以获取每个字段的默认值。

    PodSecurityContext 包含 Pod 级别的安全属性和常见的容器设置。某些字段也存在于 container.securityContext 中。container.securityContext 中的字段值优先于 PodSecurityContext 中的字段值。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此 Pod 中的容器要使用的 AppArmor 选项。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      AppArmorProfile 定义 Pod 或容器的 AppArmor 设置。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示将应用哪种类型的 AppArmor 配置文件。有效选项是:Localhost - 节点上预加载的配置文件。RuntimeDefault - 容器运行时默认配置文件。Unconfined - 不进行 AppArmor 强制执行。

        可能的枚举值

        • "Localhost" 表示应使用节点上加载的配置文件。
        • "RuntimeDefault" 表示应使用容器运行时默认的 AppArmor 配置文件。
        • "Unconfined" 表示不应强制执行 AppArmor 配置文件。
      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示应使用的节点上加载的配置文件。必须预先在节点上配置配置文件才能使其工作。必须设置为 type 为“Localhost”时才能设置。

    • securityContext.fsGroup (int64)

      适用于 Pod 中所有容器的特殊补充组。某些卷类型允许 Kubelet 更改该卷的所有权,使其由 Pod 拥有

      1. 拥有 GID 将是 FSGroup 2。设置了 setgid 位(在卷中创建的新文件将由 FSGroup 拥有) 3. 权限位与 rw-rw---- 进行 OR 运算

      如果未设置,Kubelet 不会修改任何卷的所有权和权限。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.fsGroupChangePolicy (string)

      fsGroupChangePolicy 定义在将卷暴露在 Pod 内部之前更改所有权和权限的行为。此字段仅适用于支持基于 fsGroup 所有权(和权限)的卷类型。它对临时卷类型(例如:secret、configmaps 和 emptydir)无效。有效值为“OnRootMismatch”和“Always”。如果未指定,则使用“Always”。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      可能的枚举值

      • "Always" 表示只要卷挂载在 Pod 内部,就应始终更改卷的所有权和权限。这是默认行为。
      • "OnRootMismatch" 表示仅当卷根目录的权限和所有权与卷上的预期权限不匹配时,才应更改卷的所有权和权限。这可以缩短更改卷的所有权和权限所花费的时间。
    • securityContext.runAsUser (int64)

      运行容器进程入口点的 UID。如果未指定,则默认为映像元数据中指定的用户。也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则该容器中 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.runAsNonRoot (boolean)

      指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证镜像,以确保它不以 UID 0 (root) 身份运行,如果发现以 root 身份运行,则会拒绝启动容器。如果未设置或为 false,则不会执行此类验证。也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

    • securityContext.runAsGroup (int64)

      容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先于该容器。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.seccompProfile (SeccompProfile)

      pod 中容器使用的 seccomp 选项。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SeccompProfile 定义 pod/容器的 seccomp 配置设置。只能设置一个 profile 源。

      • securityContext.seccompProfile.type (string), required

        type 指示将应用哪种类型的 seccomp profile。有效选项是

        Localhost - 应使用节点上文件中定义的 profile。 RuntimeDefault - 应使用容器运行时默认 profile。 Unconfined - 不应应用任何 profile。

        可能的枚举值

        • "Localhost" 表示应使用节点上文件中定义的 profile。该文件位置相对于 <kubelet-root-dir>/seccomp。
        • "RuntimeDefault" 表示默认容器运行时 seccomp profile。
        • "Unconfined" 表示不应用 seccomp profile (又名 unconfined)。
      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 表示应使用节点上文件中定义的 profile。必须在节点上预配置该文件才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的下降路径。如果 type 为 "Localhost",则必须设置。对于任何其他 type,则不得设置。

    • securityContext.seLinuxChangePolicy (string)

      seLinuxChangePolicy 定义如何将容器的 SELinux 标签应用于 Pod 使用的所有卷。对于不支持 SELinux 的节点或不支持 SELinux 的卷,此字段无效。有效值为 "MountOption" 和 "Recursive"。

      "Recursive" 表示容器运行时重新标记所有 Pod 卷上的所有文件。对于大型卷,这可能会很慢,但允许在同一节点上共享具有相同卷的特权和非特权 Pod。

      "MountOption" 使用 -o context 挂载选项挂载所有符合条件的 Pod 卷。这要求共享相同卷的所有 Pod 使用相同的 SELinux 标签。不可能在特权和非特权 Pod 之间共享相同的卷。符合条件的卷是树内 FibreChannel 和 iSCSI 卷,以及所有在其 CSIDriver 实例中通过设置 spec.seLinuxMount: true 声明 SELinux 支持的 CSI 卷。其他卷始终递归地重新标记。"MountOption" 值仅在启用 SELinuxMount 功能门时允许。

      如果未指定且启用了 SELinuxMount 功能门,则使用 "MountOption"。如果未指定且禁用了 SELinuxMount 功能门,则对 ReadWriteOncePod 卷使用 "MountOption",对所有其他卷使用 "Recursive"。

      此字段仅影响在 PodSecurityContext 或 SecurityContext 的所有容器中设置了 SELinux 标签的 Pod。

      所有使用相同卷的 Pod 应该使用相同的 seLinuxChangePolicy,否则某些 Pod 可能会卡在 ContainerCreating 状态。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.seLinuxOptions (SELinuxOptions)

      应用于所有容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机 SELinux 上下文。也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先于该容器。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SELinuxOptions 是应用于容器的标签

      • securityContext.seLinuxOptions.level (string)

        Level 是应用于容器的 SELinux level 标签。

      • securityContext.seLinuxOptions.role (string)

        Role 是应用于容器的 SELinux role 标签。

      • securityContext.seLinuxOptions.type (string)

        Type 是应用于容器的 SELinux type 标签。

      • securityContext.seLinuxOptions.user (string)

        User 是应用于容器的 SELinux user 标签。

    • securityContext.supplementalGroups ([]int64)

      原子:将在合并期间被替换

      应用于每个容器中第一个进程的组列表,除了容器的主 GID 和 fsGroup (如果已指定)。如果启用了 SupplementalGroupsPolicy 功能,则 supplementalGroupsPolicy 字段决定这些组是添加到还是替换容器镜像中定义的任何组 membership。如果未指定,则不添加任何其他组,但容器镜像中定义的组 membership 仍然可以使用,具体取决于 supplementalGroupsPolicy 字段。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.supplementalGroupsPolicy (string)

      定义如何计算第一个容器进程的辅助组。有效值为 "Merge" 和 "Strict"。如果未指定,则使用 "Merge"。 (Alpha) 使用此字段需要启用 SupplementalGroupsPolicy 功能门,并且容器运行时必须实现对该功能的支持。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      可能的枚举值

      • "Merge" 表示容器提供的 SupplementalGroups 和 FsGroup (在 SecurityContext 中指定) 将与容器镜像中定义的主要用户的组 (在 /etc/group 中) 合并。
      • "Strict" 表示容器提供的 SupplementalGroups 和 FsGroup (在 SecurityContext 中指定) 将用于替换容器镜像中定义的任何组。
    • securityContext.sysctls ([]Sysctl)

      原子:将在合并期间被替换

      Sysctls 包含用于 pod 的命名空间 sysctl 列表。Pod 中不受容器运行时支持的 sysctl 可能会导致启动失败。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      Sysctl 定义要设置的内核参数

      • securityContext.sysctls.name (string), required

        要设置的属性名称

      • securityContext.sysctls.value (string), required

        要设置的属性值

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      应用于所有容器的 Windows 特定设置。如果未指定,将使用容器的 SecurityContext 中的选项。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 linux 时,无法设置此字段。

      WindowsSecurityContextOptions 包含 Windows 特定的选项和凭据。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范中内联的 GMSA 凭据规范的内容。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 凭据规范的名称。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 确定容器是否应作为“Host Process”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值 (不允许同时存在 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中运行容器进程入口点的 UserName。如果未指定,则默认为镜像元数据中指定的用户。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

Alpha 级别

  • hostUsers (boolean)

    使用宿主用户命名空间。可选:默认值为 true。如果设置为 true 或未设置,则 Pod 将在宿主用户命名空间中运行,这对于 Pod 需要只有宿主用户命名空间才能提供的功能(例如使用 CAP_SYS_MODULE 加载内核模块)非常有用。如果设置为 false,则为 Pod 创建一个新的 userns。设置为 false 对于缓解容器突破漏洞甚至允许用户以 root 身份运行其容器而无需实际拥有宿主上的 root 权限非常有用。此字段是 alpha 级别,仅由启用 UserNamespacesSupport 功能门的服务器荣誉。

  • resources (ResourceRequirements)

    Resources 是 pod 中所有容器所需的 CPU 和内存资源总量。它支持仅针对 "cpu"、"memory" 和 "hugepages-" 资源名称指定 Requests 和 Limits。不支持 ResourceClaims。

    此字段可对 pod 的资源分配进行细粒度控制,从而允许 pod 中容器之间共享资源。

    这是一个 alpha 字段,需要启用 PodLevelResources 功能门。

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      映射:在合并期间将保留 key name 上的唯一值

      Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

      此字段取决于 DynamicResourceAllocation 功能门。

      此字段是不可变的。它只能设置为容器。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

      • resources.claims.name (string), required

        Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

      • resources.claims.request (string)

        Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • resourceClaims ([]PodResourceClaim)

    补丁策略:retainKeys,在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    ResourceClaims 定义在允许 Pod 启动之前必须分配和保留哪些 ResourceClaims。这些资源将通过名称提供给消耗它们的容器。

    这是一个稳定字段,但需要启用 DynamicResourceAllocation 功能门。

    此字段是不可变的。

    *PodResourceClaim 引用确切的一个 ResourceClaim,直接引用或通过命名一个 ResourceClaimTemplate,然后将其转换为 Pod 的 ResourceClaim。*

    它为其添加一个名称,该名称在 Pod 内部唯一标识 ResourceClaim。需要访问 ResourceClaim 的容器通过此名称引用它。*

    • resourceClaims.name (string), required

      Name 在 Pod 内部唯一标识此资源 claim。这必须是一个 DNS_LABEL。

    • resourceClaims.resourceClaimName (string)

      ResourceClaimName 是与此 Pod 位于同一命名空间中的 ResourceClaim 对象的名称。

      ResourceClaimName 和 ResourceClaimTemplateName 必须设置一个。

    • resourceClaims.resourceClaimTemplateName (string)

      ResourceClaimTemplateName 是与此 pod 位于相同命名空间中的 ResourceClaimTemplate 对象的名称。

      该模板将用于创建一个新的 ResourceClaim,该 ResourceClaim 将绑定到此 pod。当此 pod 被删除时,ResourceClaim 也会被删除。pod 名称和资源名称,以及生成的组件,将用于形成 ResourceClaim 的唯一名称,该名称将记录在 pod.status.resourceClaimStatuses 中。

      此字段是不可变的,在创建 ResourceClaim 之后,控制平面将不会对其进行任何更改。

      ResourceClaimName 和 ResourceClaimTemplateName 必须设置一个。

  • schedulingGates ([]PodSchedulingGate)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    SchedulingGates 是一个不透明的值列表,如果指定,将阻止调度 pod。如果 schedulingGates 不为空,pod 将保持 SchedulingGated 状态,调度器将不会尝试调度该 pod。

    SchedulingGates 只能在 pod 创建时设置,并且只能在之后删除。

    PodSchedulingGate 与 Pod 关联,以保护其调度。

    • schedulingGates.name (string), required

      调度门的名字。每个调度门必须具有唯一的 name 字段。

已弃用

  • serviceAccount (string)

    DeprecatedServiceAccount 是 ServiceAccountName 的弃用别名。已弃用:请使用 serviceAccountName 代替。

容器

您想要在 pod 中运行的单个应用程序容器。


  • name (string), required

    作为 DNS_LABEL 指定的容器的名称。pod 中的每个容器必须具有唯一的名称 (DNS_LABEL)。无法更新。

Image

  • image (string)

    容器镜像名称。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images 此字段是可选的,允许更高级别的配置管理默认或覆盖工作负载控制器(如 Deployments 和 StatefulSets)中的容器镜像。

  • imagePullPolicy (string)

    镜像拉取策略。可以是 Always、Never 或 IfNotPresent。如果指定 :latest 标签,则默认为 Always,否则默认为 IfNotPresent。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images#updating-images

    可能的枚举值

    • "Always" 表示 kubelet 始终尝试拉取最新的镜像。如果拉取失败,容器将失败。
    • "IfNotPresent" 表示 kubelet 仅在磁盘上不存在镜像时才拉取。如果镜像不存在且拉取失败,容器将失败。
    • "Never" 表示 kubelet 从不拉取镜像,而仅使用本地镜像。如果镜像不存在,容器将失败

Entrypoint

  • command ([]string)

    原子:将在合并期间被替换

    入口点数组。不在 shell 中执行。如果未提供此项,则使用容器镜像的 ENTRYPOINT。变量引用 $(VAR_NAME) 使用容器的环境进行扩展。如果无法解析变量,输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会被扩展,无论变量是否存在。无法更新。更多信息:https://kubernetes.ac.cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • args ([]string)

    原子:将在合并期间被替换

    入口点的参数。如果未提供此项,则使用容器镜像的 CMD。变量引用 $(VAR_NAME) 使用容器的环境进行扩展。如果无法解析变量,输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会被扩展,无论变量是否存在。无法更新。更多信息:https://kubernetes.ac.cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • workingDir (string)

    容器的工作目录。如果未指定,将使用容器运行时默认值,该默认值可能在容器镜像中配置。无法更新。

Ports

  • ports ([]ContainerPort)

    Patch 策略:在 containerPort 上合并

    映射:在合并期间将保留键 containerPort, protocol 上的唯一值

    从容器暴露的端口列表。此处不指定端口 DOES NOT 阻止该端口被暴露。在容器内部监听默认 "0.0.0.0" 地址的任何端口都可以从网络访问。使用战略合并补丁修改此数组可能会损坏数据。有关更多信息,请参阅 https://github.com/kubernetes/kubernetes/issues/108255。无法更新。

    ContainerPort 表示单个容器中的网络端口。

    • ports.containerPort (int32), required

      要在 pod 的 IP 地址上暴露的端口号。这必须是有效的端口号,0 < x < 65536。

    • ports.hostIP (string)

      将外部端口绑定到哪个主机 IP。

    • ports.hostPort (int32)

      要在主机上暴露的端口号。如果指定,这必须是有效的端口号,0 < x < 65536。如果指定 HostNetwork,则必须与 ContainerPort 匹配。大多数容器不需要此项。

    • ports.name (string)

      如果指定,这必须是 IANA_SVC_NAME 并且在 pod 中唯一。pod 中的每个命名端口必须具有唯一的名称。服务可以参考的端口名称。

    • ports.protocol (string)

      端口协议。必须是 UDP、TCP 或 SCTP。默认为 "TCP"。

      可能的枚举值

      • "SCTP" 是 SCTP 协议。
      • "TCP" 是 TCP 协议。
      • "UDP" 是 UDP 协议。

环境变量

  • env ([]EnvVar)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    要在容器中设置的环境变量列表。无法更新。

    EnvVar 表示容器中的环境变量。

    • env.name (string), required

      环境变量的名称。可以包含任何可打印的 ASCII 字符,但不包括 '='。

    • env.value (string)

      变量引用 $(VAR_NAME) 使用容器的先前定义的任何环境变量以及任何服务环境变量进行扩展。如果无法解析变量,输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会被扩展,无论变量是否存在。默认为 ""。

    • env.valueFrom (EnvVarSource)

      环境变量值的来源。如果值不为空,则不能使用。

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 的一个键。

        ConfigMapKeySelector 从 ConfigMap 中选择一个键。

        • env.valueFrom.configMapKeyRef.key (string), required

          要选择的键。

        • env.valueFrom.configMapKeyRef.name (string)

          参考对象的名称。由于向后兼容性,此字段实际上是必需的,但允许为空。此处具有空值的这种类型实例几乎肯定是不正确的。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.optional (boolean)

          指定 ConfigMap 或其键是否必须定义

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        选择 pod 的一个字段:支持 metadata.name、metadata.namespace、metadata.labels['\<KEY>']metadata.annotations['\<KEY>']、spec.nodeName、spec.serviceAccountName、status.hostIP、status.podIP、status.podIPs。

      • env.valueFrom.fileKeyRef (FileKeySelector)

        FileKeyRef 选择 env 文件中的一个键。需要启用 EnvFiles 功能门。

        FileKeySelector 选择 env 文件中的一个键。

        • env.valueFrom.fileKeyRef.key (string), required

          env 文件中的键。无效的键将阻止 pod 启动。源中定义的键可以包含任何可打印的 ASCII 字符,但不包括 '='。在 EnvFiles 功能门的 Alpha 阶段,键的大小限制为 128 个字符。

        • env.valueFrom.fileKeyRef.path (string), required

          从卷中选择文件的路径。必须是相对路径,并且不能包含 '..' 路径或以 '..' 开头。

        • env.valueFrom.fileKeyRef.volumeName (string), required

          包含 env 文件的卷挂载的名称。

        • env.valueFrom.fileKeyRef.optional (boolean)

          指定文件或其键是否必须定义。如果文件或键不存在,则环境变量不会发布。如果 optional 设置为 true 并且指定的键不存在,则环境变量不会在 Pod 的容器中设置。

          如果 optional 设置为 false 并且指定的键不存在,则在 Pod 创建期间将返回错误。

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        选择容器的资源:当前仅支持资源限制和请求(limits.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        选择 pod 命名空间中的 secret 的一个键

        SecretKeySelector 从 Secret 中选择一个键。

        • env.valueFrom.secretKeyRef.key (string), required

          要从 secret 中选择的键。必须是有效的 secret 键。

        • env.valueFrom.secretKeyRef.name (string)

          参考对象的名称。由于向后兼容性,此字段实际上是必需的,但允许为空。此处具有空值的这种类型实例几乎肯定是不正确的。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.optional (boolean)

          指定 Secret 或其键是否必须定义

  • envFrom ([]EnvFromSource)

    原子:将在合并期间被替换

    用于填充容器中环境变量的来源列表。源中定义的键可以包含任何可打印的 ASCII 字符,但不包括 '='。当多个来源中存在一个键时,最后一个来源关联的值将优先。具有重复键的 Env 定义的值将优先。

    EnvFromSource 表示 ConfigMap 或 Secrets 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      要选择的 ConfigMap

      *ConfigMapEnvSource 选择一个 ConfigMap 以填充环境变量。*

      目标 ConfigMap 的 Data 字段的内容将表示键值对作为环境变量。*

    • envFrom.prefix (string)

      要附加到每个环境变量名称的可选文本。可以包含任何可打印的 ASCII 字符,但不包括 '='。

    • envFrom.secretRef (SecretEnvSource)

      要选择的 Secret

      *SecretEnvSource 选择一个 Secret 来填充环境变量。*

      目标 Secret 的 Data 字段的内容将表示环境变量中的键值对。*

  • volumeMounts ([]VolumeMount)

    Patch 策略:在 key mountPath 上合并*

    Map:在 key mountPath 上唯一的值将在合并期间保留*

    Pod 卷,用于挂载到容器的文件系统中。无法更新。*

    VolumeMount 描述容器内卷的挂载。

    • volumeMounts.mountPath (string), required

      卷应挂载在容器内的路径。不能包含 ':'。*

    • volumeMounts.name (string), required

      这必须与 Volume 的 Name 匹配。*

    • volumeMounts.mountPropagation (string)

      mountPropagation 确定挂载如何从主机传播到容器以及反之。如果未设置,则使用 MountPropagationNone。此字段在 1.10 中为 beta 版本。当 RecursiveReadOnly 设置为 IfPossible 或 Enabled 时,MountPropagation 必须为 None 或未指定(默认值为 None)。*

      可能的枚举值

      • "Bidirectional" 表示容器中的卷将接收来自主机或其他容器的新挂载,并且容器自己的挂载将从容器传播到主机或其他容器。请注意,此模式递归地应用于卷中的所有挂载(Linux 术语中的“rshared”)。*
      • "HostToContainer" 表示容器中的卷将接收来自主机或其他容器的新挂载,但容器内部挂载的文件系统不会传播到主机或其他容器。请注意,此模式递归地应用于卷中的所有挂载(Linux 术语中的“rslave”)。*
      • "None" 表示容器中的卷不会接收来自主机或其他容器的新挂载,并且容器内部挂载的文件系统不会传播到主机或其他容器。请注意,此模式对应于 Linux 术语中的“private”。*
    • volumeMounts.readOnly (boolean)

      如果为 true,则以只读方式挂载,否则为读写方式(false 或未指定)。默认值为 false。*

    • volumeMounts.recursiveReadOnly (string)

      RecursiveReadOnly 指定是否应递归处理只读挂载。*

      如果 ReadOnly 为 false,则此字段没有意义,必须未指定。*

      如果 ReadOnly 为 true,并且此字段设置为 Disabled,则不使挂载递归只读。如果此字段设置为 IfPossible,则如果容器运行时支持,则使挂载递归只读。如果此字段设置为 Enabled,则如果容器运行时支持,则使挂载递归只读,否则 Pod 将不会启动,并且会生成错误以指示原因。*

      如果此字段设置为 IfPossible 或 Enabled,则必须将 MountPropagation 设置为 None(或未指定,默认值为 None)。*

      如果未指定此字段,则将其视为 Disabled 的等效项。*

    • volumeMounts.subPath (string)

      容器的卷应挂载到的卷内的路径。默认为 ""(卷的根)。*

    • volumeMounts.subPathExpr (string)

      容器的卷应挂载到的卷内的扩展路径。行为类似于 SubPath,但环境变量引用 $(VAR_NAME) 使用容器的环境进行扩展。默认为 ""(卷的根)。SubPathExpr 和 SubPath 互斥。*

  • volumeDevices ([]VolumeDevice)

    Patch 策略:在 key devicePath 上合并*

    Map:在 key devicePath 上唯一的值将在合并期间保留*

    volumeDevices 是容器要使用的块设备的列表。*

    volumeDevice 描述容器内原始块设备的映射。

    • volumeDevices.devicePath (string), required

      devicePath 是设备映射到容器内的路径。*

    • volumeDevices.name (string), required

      name 必须与 Pod 中持久卷声明的名称匹配*

资源

  • resources (ResourceRequirements)

    此容器所需的计算资源。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      映射:在合并期间将保留 key name 上的唯一值

      Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

      此字段取决于 DynamicResourceAllocation 功能门。

      此字段是不可变的。它只能设置为容器。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

      • resources.claims.name (string), required

        Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

      • resources.claims.request (string)

        Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • resizePolicy ([]ContainerResizePolicy)

    原子:将在合并期间被替换

    容器的资源调整策略。此字段不能在临时容器上设置。*

    ContainerResizePolicy 表示容器的资源调整策略。

    • resizePolicy.resourceName (string), required

      此资源调整策略应用的资源名称。支持的值:cpu、memory。*

    • resizePolicy.restartPolicy (string), required

      指定资源调整大小时应用的重启策略。如果未指定,则默认为 NotRequired。*

生命周期

  • lifecycle (Lifecycle)

    管理系统应响应容器生命周期事件而采取的操作。无法更新。*

    Lifecycle 描述管理系统应响应容器生命周期事件而采取的操作。对于 PostStart 和 PreStop 生命周期处理程序,管理容器会阻止,直到操作完成,除非容器进程失败,在这种情况下,处理程序将被中止。

    • lifecycle.postStart (LifecycleHandler)

      PostStart 在创建容器后立即调用。如果处理程序失败,则容器将根据其重启策略终止并重新启动。其他容器管理会阻止,直到钩子完成。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop 在由于 API 请求或管理事件(例如活动/启动探测失败、抢占、资源争用等)而终止容器之前立即调用。如果容器崩溃或退出,则不会调用处理程序。Pod 的终止宽限期倒计时在执行 PreStop 钩子之前开始。无论处理程序的结果如何,容器最终都将在 Pod 的终止宽限期内终止(除非由 finalizers 延迟)。其他容器管理会阻止,直到钩子完成或达到终止宽限期。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

      StopSignal 定义在停止容器时将发送到容器的信号。如果未指定,则默认值由使用的容器运行时定义。StopSignal 只能为 .spec.os.name 非空的 Pod 设置*

      可能的枚举值

      • "SIGABRT"
      • "SIGALRM"
      • "SIGBUS"
      • "SIGCHLD"
      • "SIGCLD"
      • "SIGCONT"
      • "SIGFPE"
      • "SIGHUP"
      • "SIGILL"
      • "SIGINT"
      • "SIGIO"
      • "SIGIOT"
      • "SIGKILL"
      • "SIGPIPE"
      • "SIGPOLL"
      • "SIGPROF"
      • "SIGPWR"
      • "SIGQUIT"
      • "SIGRTMAX"
      • "SIGRTMAX-1"
      • "SIGRTMAX-10"
      • "SIGRTMAX-11"
      • "SIGRTMAX-12"
      • "SIGRTMAX-13"
      • "SIGRTMAX-14"
      • "SIGRTMAX-2"
      • "SIGRTMAX-3"
      • "SIGRTMAX-4"
      • "SIGRTMAX-5"
      • "SIGRTMAX-6"
      • "SIGRTMAX-7"
      • "SIGRTMAX-8"
      • "SIGRTMAX-9"
      • "SIGRTMIN"
      • "SIGRTMIN+1"
      • "SIGRTMIN+10"
      • "SIGRTMIN+11"
      • "SIGRTMIN+12"
      • "SIGRTMIN+13"
      • "SIGRTMIN+14"
      • "SIGRTMIN+15"
      • "SIGRTMIN+2"
      • "SIGRTMIN+3"
      • "SIGRTMIN+4"
      • "SIGRTMIN+5"
      • "SIGRTMIN+6"
      • "SIGRTMIN+7"
      • "SIGRTMIN+8"
      • "SIGRTMIN+9"
      • "SIGSEGV"
      • "SIGSTKFLT"
      • "SIGSTOP"
      • "SIGSYS"
      • "SIGTERM"
      • "SIGTRAP"
      • "SIGTSTP"
      • "SIGTTIN"
      • "SIGTTOU"
      • "SIGURG"
      • "SIGUSR1"
      • "SIGUSR2"
      • "SIGVTALRM"
      • "SIGWINCH"
      • "SIGXCPU"
      • "SIGXFSZ"
  • terminationMessagePath (string)

    可选:容器的终止消息将写入到容器文件系统中的路径。写入的消息旨在是简短的最终状态,例如断言失败消息。如果大于 4096 字节,将被节点截断。所有容器的总消息长度将限制为 12kb。无法更新。*

  • terminationMessagePolicy (string)

    指示应如何填充终止消息。File 将使用 terminationMessagePath 的内容来填充容器状态消息,无论成功与否。FallbackToLogsOnError 将使用容器日志输出的最后一部分,如果终止消息文件为空并且容器以错误退出。日志输出限制为 2048 字节或 80 行,以较小者为准。默认值为 File。无法更新。*

    可能的枚举值

    • "FallbackToLogsOnError" 将在容器以错误退出并且 terminationMessagePath 没有内容时,从容器日志中读取最新的容器状态消息。*
    • "File" 是默认行为,将在容器退出时将容器状态消息设置为容器的 terminationMessagePath 的内容。*
  • livenessProbe (Probe)

    容器活动性的定期探测。如果探测失败,容器将被重启。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • readinessProbe (Probe)

    容器服务就绪性的定期探测。如果探测失败,容器将被从服务端点中删除。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • startupProbe (Probe)

    StartupProbe 指示 Pod 已成功初始化。如果指定,则在完成之前不会执行任何其他探测。如果此探测失败,Pod 将被重新启动,就像 livenessProbe 失败一样。这可用于在 Pod 生命周期开始时提供不同的探测参数,此时加载数据或预热缓存可能需要很长时间,而不是在稳定状态操作期间。这无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • restartPolicy (string)

    RestartPolicy 定义 Pod 中单个容器的重启行为。这会覆盖 Pod 级别的重启策略。如果未指定此字段,则重启行为由 Pod 的重启策略和容器类型定义。此外,将 init 容器的 RestartPolicy 设置为“Always”将产生以下效果:此 init 容器将在退出时持续重启,直到所有常规容器都已终止。一旦所有常规容器完成,所有具有 restartPolicy “Always” 的 init 容器将被关闭。此生命周期与正常的 init 容器不同,通常被称为“sidecar”容器。尽管此 init 容器仍然在 init 容器序列中启动,但它不会等待容器完成才继续进行下一个 init 容器。相反,下一个 init 容器在启动此 init 容器后立即启动,或者在任何 startupProbe 成功完成后启动。

  • restartPolicyRules ([]ContainerRestartRule)

    原子:将在合并期间被替换

    表示用于检查容器在退出时是否应重启的规则列表。规则按顺序评估。一旦规则匹配容器退出条件,剩余的规则将被忽略。如果没有任何规则匹配容器退出条件,则容器级别的重启策略决定是否重启容器。规则的约束:- 最多允许 20 条规则。- 规则可以具有相同的操作。- 验证中不允许相同的规则。当指定规则时,容器必须显式设置 RestartPolicy,即使它与 Pod 的 RestartPolicy 匹配。

    ContainerRestartRule 描述如何处理容器退出。

    • restartPolicyRules.action (string), required

      指定在满足要求时对容器退出采取的操作。唯一可能的值是“Restart”,用于重启容器。

    • restartPolicyRules.exitCodes (ContainerRestartRuleOnExitCodes)

      表示在容器退出时要检查的退出代码。

      ContainerRestartRuleOnExitCodes 描述基于其退出代码处理退出容器的条件。

      • restartPolicyRules.exitCodes.operator (string), required

        表示容器退出代码与指定值之间的关系。可能的值是:- In:如果容器退出代码在指定的数值集合中,则满足要求。

        • NotIn:如果容器退出代码不在指定的数值集合中,则满足要求。
      • restartPolicyRules.exitCodes.values ([]int32)

        Set: 合并时将保留唯一值

        指定要检查的容器退出代码的数值集合。最多允许 255 个元素。

安全上下文

  • securityContext (SecurityContext)

    SecurityContext 定义容器应使用的安全选项。如果设置,SecurityContext 的字段将覆盖 PodSecurityContext 的相应字段。更多信息:https://kubernetes.ac.cn/docs/tasks/configure-pod-container/security-context/

    SecurityContext 包含将应用于容器的安全配置。某些字段同时存在于 SecurityContext 和 PodSecurityContext 中。当两者都设置时,SecurityContext 中的值优先。

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation 控制进程是否可以获得比其父进程更高的权限。此布尔值直接控制是否会在容器进程上设置 no_new_privs 标志。当容器为以下情况时,AllowPrivilegeEscalation 始终为 true:1) 以 Privileged 模式运行 2) 具有 CAP_SYS_ADMIN。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此容器要使用的 AppArmor 选项。如果设置,此配置文件将覆盖 Pod 的 appArmorProfile。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      AppArmorProfile 定义 Pod 或容器的 AppArmor 设置。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示将应用哪种类型的 AppArmor 配置文件。有效选项是:Localhost - 节点上预加载的配置文件。RuntimeDefault - 容器运行时默认配置文件。Unconfined - 不进行 AppArmor 强制执行。

        可能的枚举值

        • "Localhost" 表示应使用节点上加载的配置文件。
        • "RuntimeDefault" 表示应使用容器运行时默认的 AppArmor 配置文件。
        • "Unconfined" 表示不应强制执行 AppArmor 配置文件。
      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示应使用的节点上加载的配置文件。必须预先在节点上配置配置文件才能使其工作。必须设置为 type 为“Localhost”时才能设置。

    • securityContext.capabilities (Capabilities)

      在运行容器时要添加/删除的功能。默认情况下,使用容器运行时授予的默认功能集。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      添加和删除正在运行的容器的 POSIX 功能。

      • securityContext.capabilities.add ([]string)

        原子:将在合并期间被替换

        添加的功能

      • securityContext.capabilities.drop ([]string)

        原子:将在合并期间被替换

        删除的功能

    • securityContext.procMount (string)

      procMount 表示要为容器使用的 proc 挂载类型。默认值为 Default,它使用容器运行时默认值来设置只读路径和屏蔽路径。这需要启用 ProcMountType 功能标志。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      可能的枚举值

      • "Default" 使用容器运行时默认值来设置 /proc 的只读和屏蔽路径。大多数容器运行时都会屏蔽 /proc 中的某些路径,以避免意外暴露特殊设备或信息。
      • "Unmasked" 绕过容器运行时默认的屏蔽行为,并确保新创建的容器的 /proc 保持不变,没有任何修改。
    • securityContext.privileged (boolean)

      以特权模式运行容器。特权容器中的进程基本上等同于主机上的 root。默认值为 false。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有只读根文件系统。默认值为 false。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.runAsUser (int64)

      运行容器进程入口点的 UID。如果未指定,则默认为镜像元数据中指定的用户。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.runAsNonRoot (boolean)

      指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证镜像,以确保它不以 UID 0(root)身份运行,如果这样做,则会失败并启动容器。如果未设置或为 false,则不会执行此类验证。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

    • securityContext.runAsGroup (int64)

      运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.seLinuxOptions (SELinuxOptions)

      应用于容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机 SELinux 上下文。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SELinuxOptions 是应用于容器的标签

      • securityContext.seLinuxOptions.level (string)

        Level 是应用于容器的 SELinux level 标签。

      • securityContext.seLinuxOptions.role (string)

        Role 是应用于容器的 SELinux role 标签。

      • securityContext.seLinuxOptions.type (string)

        Type 是应用于容器的 SELinux type 标签。

      • securityContext.seLinuxOptions.user (string)

        User 是应用于容器的 SELinux user 标签。

    • securityContext.seccompProfile (SeccompProfile)

      要在此容器中使用的 seccomp 选项。如果 seccomp 选项在 Pod 和容器级别都提供,则容器选项会覆盖 Pod 选项。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SeccompProfile 定义 pod/容器的 seccomp 配置设置。只能设置一个 profile 源。

      • securityContext.seccompProfile.type (string), required

        type 指示将应用哪种类型的 seccomp profile。有效选项是

        Localhost - 应使用节点上文件中定义的 profile。 RuntimeDefault - 应使用容器运行时默认 profile。 Unconfined - 不应应用任何 profile。

        可能的枚举值

        • "Localhost" 表示应使用节点上文件中定义的 profile。该文件位置相对于 <kubelet-root-dir>/seccomp。
        • "RuntimeDefault" 表示默认容器运行时 seccomp profile。
        • "Unconfined" 表示不应用 seccomp profile (又名 unconfined)。
      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 表示应使用节点上文件中定义的 profile。必须在节点上预配置该文件才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的下降路径。如果 type 为 "Localhost",则必须设置。对于任何其他 type,则不得设置。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      应用于所有容器的 Windows 特定设置。如果未指定,将使用 PodSecurityContext 中的选项。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 linux 时,无法设置此字段。

      WindowsSecurityContextOptions 包含 Windows 特定的选项和凭据。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范中内联的 GMSA 凭据规范的内容。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 凭据规范的名称。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 确定容器是否应作为“Host Process”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值 (不允许同时存在 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中运行容器进程入口点的 UserName。如果未指定,则默认为镜像元数据中指定的用户。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

调试

  • stdin (boolean)

    是否应为容器运行时分配 stdin 的缓冲区。如果未设置此项,则容器中的 stdin 读取将始终导致 EOF。默认值为 false。

  • stdinOnce (boolean)

    是否应在单个连接后关闭容器运行时中的 stdin 通道。当 stdin 为 true 时,stdin 流将跨多个连接会话保持打开状态。如果将 stdinOnce 设置为 true,则在容器启动时打开 stdin,直到第一个客户端连接到 stdin 才为空,然后保持打开状态并接受数据,直到客户端断开连接,此时关闭 stdin 并保持关闭状态,直到容器重新启动。如果此标志为 false,则读取 stdin 的容器进程将永远不会收到 EOF。默认值为 false

  • tty (boolean)

    是否应为自身分配 TTY,还需要将“stdin”设置为 true。默认值为 false。

EphemeralContainer

EphemeralContainer 是一个临时容器,您可以将其添加到现有的 Pod 中,用于用户发起的活动,例如调试。Ephemeral 容器没有资源或调度保证,并且在退出或删除或重新启动 Pod 时不会重新启动。如果一个临时容器导致 Pod 超过其资源分配,kubelet 可能会驱逐该 Pod。

要添加一个临时容器,请使用现有 Pod 的 ephemeralcontainers 子资源。临时容器不能被删除或重新启动。


  • name (string), required

    临时容器的名称,指定为 DNS_LABEL。此名称必须在所有容器、init 容器和临时容器中是唯一的。

  • targetContainerName (string)

    如果设置,则为 PodSpec 中此临时容器的目标容器的名称。临时容器将在此容器的命名空间(IPC、PID 等)中运行。如果未设置,则临时容器使用 Pod 规范中配置的命名空间。

    容器运行时必须实现对此功能的支持。如果运行时不支持命名空间定位,则设置此字段的结果未定义。

Image

  • image (string)

    容器镜像名称。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images

  • imagePullPolicy (string)

    镜像拉取策略。可以是 Always、Never 或 IfNotPresent。如果指定 :latest 标签,则默认为 Always,否则默认为 IfNotPresent。无法更新。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images#updating-images

    可能的枚举值

    • "Always" 表示 kubelet 始终尝试拉取最新的镜像。如果拉取失败,容器将失败。
    • "IfNotPresent" 表示 kubelet 仅在磁盘上不存在镜像时才拉取。如果镜像不存在且拉取失败,容器将失败。
    • "Never" 表示 kubelet 从不拉取镜像,而仅使用本地镜像。如果镜像不存在,容器将失败

Entrypoint

  • command ([]string)

    原子:将在合并期间被替换

    入口点数组。不在 shell 中执行。如果未提供此项,则使用镜像的 ENTRYPOINT。使用容器的环境扩展变量引用 $(VAR_NAME)。如果无法解析变量,则输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会扩展,无论变量是否存在。无法更新。更多信息:https://kubernetes.ac.cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • args ([]string)

    原子:将在合并期间被替换

    入口点的参数。如果未提供此项,则使用镜像的 CMD。使用容器的环境扩展变量引用 $(VAR_NAME)。如果无法解析变量,则输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会扩展,无论变量是否存在。无法更新。更多信息:https://kubernetes.ac.cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • workingDir (string)

    容器的工作目录。如果未指定,将使用容器运行时默认值,该默认值可能在容器镜像中配置。无法更新。

环境变量

  • env ([]EnvVar)

    补丁策略:在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    要在容器中设置的环境变量列表。无法更新。

    EnvVar 表示容器中的环境变量。

    • env.name (string), required

      环境变量的名称。可以包含任何可打印的 ASCII 字符,但不包括 '='。

    • env.value (string)

      变量引用 $(VAR_NAME) 使用容器的先前定义的任何环境变量以及任何服务环境变量进行扩展。如果无法解析变量,输入字符串中的引用将保持不变。双 $$ 减少为单个 $,这允许转义 $(VAR_NAME) 语法:例如,"$$(VAR_NAME)" 将生成字符串字面量 "$(VAR_NAME)"。转义的引用将永远不会被扩展,无论变量是否存在。默认为 ""。

    • env.valueFrom (EnvVarSource)

      环境变量值的来源。如果值不为空,则不能使用。

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 的一个键。

        ConfigMapKeySelector 从 ConfigMap 中选择一个键。

        • env.valueFrom.configMapKeyRef.key (string), required

          要选择的键。

        • env.valueFrom.configMapKeyRef.name (string)

          参考对象的名称。由于向后兼容性,此字段实际上是必需的,但允许为空。此处具有空值的这种类型实例几乎肯定是不正确的。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.optional (boolean)

          指定 ConfigMap 或其键是否必须定义

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        选择 pod 的一个字段:支持 metadata.name、metadata.namespace、metadata.labels['\<KEY>']metadata.annotations['\<KEY>']、spec.nodeName、spec.serviceAccountName、status.hostIP、status.podIP、status.podIPs。

      • env.valueFrom.fileKeyRef (FileKeySelector)

        FileKeyRef 选择 env 文件中的一个键。需要启用 EnvFiles 功能门。

        FileKeySelector 选择 env 文件中的一个键。

        • env.valueFrom.fileKeyRef.key (string), required

          env 文件中的键。无效的键将阻止 pod 启动。源中定义的键可以包含任何可打印的 ASCII 字符,但不包括 '='。在 EnvFiles 功能门的 Alpha 阶段,键的大小限制为 128 个字符。

        • env.valueFrom.fileKeyRef.path (string), required

          从卷中选择文件的路径。必须是相对路径,并且不能包含 '..' 路径或以 '..' 开头。

        • env.valueFrom.fileKeyRef.volumeName (string), required

          包含 env 文件的卷挂载的名称。

        • env.valueFrom.fileKeyRef.optional (boolean)

          指定文件或其键是否必须定义。如果文件或键不存在,则环境变量不会发布。如果 optional 设置为 true 并且指定的键不存在,则环境变量不会在 Pod 的容器中设置。

          如果 optional 设置为 false 并且指定的键不存在,则在 Pod 创建期间将返回错误。

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        选择容器的资源:当前仅支持资源限制和请求(limits.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        选择 pod 命名空间中的 secret 的一个键

        SecretKeySelector 从 Secret 中选择一个键。

        • env.valueFrom.secretKeyRef.key (string), required

          要从 secret 中选择的键。必须是有效的 secret 键。

        • env.valueFrom.secretKeyRef.name (string)

          参考对象的名称。由于向后兼容性,此字段实际上是必需的,但允许为空。此处具有空值的这种类型实例几乎肯定是不正确的。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.optional (boolean)

          指定 Secret 或其键是否必须定义

  • envFrom ([]EnvFromSource)

    原子:将在合并期间被替换

    用于填充容器中环境变量的来源列表。源中定义的键可以包含任何可打印的 ASCII 字符,但不包括 '='。当多个来源中存在一个键时,最后一个来源关联的值将优先。具有重复键的 Env 定义的值将优先。

    EnvFromSource 表示 ConfigMap 或 Secrets 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      要选择的 ConfigMap

      *ConfigMapEnvSource 选择一个 ConfigMap 以填充环境变量。*

      目标 ConfigMap 的 Data 字段的内容将表示键值对作为环境变量。*

    • envFrom.prefix (string)

      要附加到每个环境变量名称的可选文本。可以包含任何可打印的 ASCII 字符,但不包括 '='。

    • envFrom.secretRef (SecretEnvSource)

      要选择的 Secret

      *SecretEnvSource 选择一个 Secret 来填充环境变量。*

      目标 Secret 的 Data 字段的内容将表示环境变量中的键值对。*

  • volumeMounts ([]VolumeMount)

    Patch 策略:在 key mountPath 上合并*

    Map:在 key mountPath 上唯一的值将在合并期间保留*

    要挂载到容器文件系统中的 Pod 卷。临时容器不允许使用子路径挂载。无法更新。

    VolumeMount 描述容器内卷的挂载。

    • volumeMounts.mountPath (string), required

      卷应挂载在容器内的路径。不能包含 ':'。*

    • volumeMounts.name (string), required

      这必须与 Volume 的 Name 匹配。*

    • volumeMounts.mountPropagation (string)

      mountPropagation 确定挂载如何从主机传播到容器以及反之。如果未设置,则使用 MountPropagationNone。此字段在 1.10 中为 beta 版本。当 RecursiveReadOnly 设置为 IfPossible 或 Enabled 时,MountPropagation 必须为 None 或未指定(默认值为 None)。*

      可能的枚举值

      • "Bidirectional" 表示容器中的卷将接收来自主机或其他容器的新挂载,并且容器自己的挂载将从容器传播到主机或其他容器。请注意,此模式递归地应用于卷中的所有挂载(Linux 术语中的“rshared”)。*
      • "HostToContainer" 表示容器中的卷将接收来自主机或其他容器的新挂载,但容器内部挂载的文件系统不会传播到主机或其他容器。请注意,此模式递归地应用于卷中的所有挂载(Linux 术语中的“rslave”)。*
      • "None" 表示容器中的卷不会接收来自主机或其他容器的新挂载,并且容器内部挂载的文件系统不会传播到主机或其他容器。请注意,此模式对应于 Linux 术语中的“private”。*
    • volumeMounts.readOnly (boolean)

      如果为 true,则以只读方式挂载,否则为读写方式(false 或未指定)。默认值为 false。*

    • volumeMounts.recursiveReadOnly (string)

      RecursiveReadOnly 指定是否应递归处理只读挂载。*

      如果 ReadOnly 为 false,则此字段没有意义,必须未指定。*

      如果 ReadOnly 为 true,并且此字段设置为 Disabled,则不使挂载递归只读。如果此字段设置为 IfPossible,则如果容器运行时支持,则使挂载递归只读。如果此字段设置为 Enabled,则如果容器运行时支持,则使挂载递归只读,否则 Pod 将不会启动,并且会生成错误以指示原因。*

      如果此字段设置为 IfPossible 或 Enabled,则必须将 MountPropagation 设置为 None(或未指定,默认值为 None)。*

      如果未指定此字段,则将其视为 Disabled 的等效项。*

    • volumeMounts.subPath (string)

      容器的卷应挂载到的卷内的路径。默认为 ""(卷的根)。*

    • volumeMounts.subPathExpr (string)

      容器的卷应挂载到的卷内的扩展路径。行为类似于 SubPath,但环境变量引用 $(VAR_NAME) 使用容器的环境进行扩展。默认为 ""(卷的根)。SubPathExpr 和 SubPath 互斥。*

  • volumeDevices ([]VolumeDevice)

    Patch 策略:在 key devicePath 上合并*

    Map:在 key devicePath 上唯一的值将在合并期间保留*

    volumeDevices 是容器要使用的块设备的列表。*

    volumeDevice 描述容器内原始块设备的映射。

    • volumeDevices.devicePath (string), required

      devicePath 是设备映射到容器内的路径。*

    • volumeDevices.name (string), required

      name 必须与 Pod 中持久卷声明的名称匹配*

资源

  • resizePolicy ([]ContainerResizePolicy)

    原子:将在合并期间被替换

    容器的资源调整大小策略。

    ContainerResizePolicy 表示容器的资源调整策略。

    • resizePolicy.resourceName (string), required

      此资源调整策略应用的资源名称。支持的值:cpu、memory。*

    • resizePolicy.restartPolicy (string), required

      指定资源调整大小时应用的重启策略。如果未指定,则默认为 NotRequired。*

生命周期

  • terminationMessagePath (string)

    可选:容器的终止消息将写入到容器文件系统中的路径。写入的消息旨在是简短的最终状态,例如断言失败消息。如果大于 4096 字节,将被节点截断。所有容器的总消息长度将限制为 12kb。无法更新。*

  • terminationMessagePolicy (string)

    指示应如何填充终止消息。File 将使用 terminationMessagePath 的内容来填充容器状态消息,无论成功与否。FallbackToLogsOnError 将使用容器日志输出的最后一部分,如果终止消息文件为空并且容器以错误退出。日志输出限制为 2048 字节或 80 行,以较小者为准。默认值为 File。无法更新。*

    可能的枚举值

    • "FallbackToLogsOnError" 将在容器以错误退出并且 terminationMessagePath 没有内容时,从容器日志中读取最新的容器状态消息。*
    • "File" 是默认行为,将在容器退出时将容器状态消息设置为容器的 terminationMessagePath 的内容。*
  • restartPolicy (string)

    容器的重启策略,用于管理 Pod 中每个容器的重启行为。您无法在临时容器上设置此字段。

  • restartPolicyRules ([]ContainerRestartRule)

    原子:将在合并期间被替换

    表示要检查的规则列表,以确定容器在退出时是否应重启。您无法在临时容器上设置此字段。

    ContainerRestartRule 描述如何处理容器退出。

    • restartPolicyRules.action (string), required

      指定在满足要求时对容器退出采取的操作。唯一可能的值是“Restart”,用于重启容器。

    • restartPolicyRules.exitCodes (ContainerRestartRuleOnExitCodes)

      表示在容器退出时要检查的退出代码。

      ContainerRestartRuleOnExitCodes 描述基于其退出代码处理退出容器的条件。

      • restartPolicyRules.exitCodes.operator (string), required

        表示容器退出代码与指定值之间的关系。可能的值是:- In:如果容器退出代码在指定的数值集合中,则满足要求。

        • NotIn:如果容器退出代码不在指定的数值集合中,则满足要求。
      • restartPolicyRules.exitCodes.values ([]int32)

        Set: 合并时将保留唯一值

        指定要检查的容器退出代码的数值集合。最多允许 255 个元素。

调试

  • stdin (boolean)

    是否应为容器运行时分配 stdin 的缓冲区。如果未设置此项,则容器中的 stdin 读取将始终导致 EOF。默认值为 false。

  • stdinOnce (boolean)

    是否应在单个连接后关闭容器运行时中的 stdin 通道。当 stdin 为 true 时,stdin 流将跨多个连接会话保持打开状态。如果将 stdinOnce 设置为 true,则在容器启动时打开 stdin,直到第一个客户端连接到 stdin 才为空,然后保持打开状态并接受数据,直到客户端断开连接,此时关闭 stdin 并保持关闭状态,直到容器重新启动。如果此标志为 false,则读取 stdin 的容器进程将永远不会收到 EOF。默认值为 false

  • tty (boolean)

    是否应为自身分配 TTY,还需要将“stdin”设置为 true。默认值为 false。

安全上下文

  • securityContext (SecurityContext)

    可选:SecurityContext 定义了临时容器应使用的安全选项。如果设置,SecurityContext 的字段将覆盖 PodSecurityContext 的相应字段。

    SecurityContext 包含将应用于容器的安全配置。某些字段同时存在于 SecurityContext 和 PodSecurityContext 中。当两者都设置时,SecurityContext 中的值优先。

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation 控制进程是否可以获得比其父进程更高的权限。此布尔值直接控制是否会在容器进程上设置 no_new_privs 标志。当容器为以下情况时,AllowPrivilegeEscalation 始终为 true:1) 以 Privileged 模式运行 2) 具有 CAP_SYS_ADMIN。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.appArmorProfile (AppArmorProfile)

      appArmorProfile 是此容器要使用的 AppArmor 选项。如果设置,此配置文件将覆盖 Pod 的 appArmorProfile。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      AppArmorProfile 定义 Pod 或容器的 AppArmor 设置。

      • securityContext.appArmorProfile.type (string), 必需

        type 指示将应用哪种类型的 AppArmor 配置文件。有效选项是:Localhost - 节点上预加载的配置文件。RuntimeDefault - 容器运行时默认配置文件。Unconfined - 不进行 AppArmor 强制执行。

        可能的枚举值

        • "Localhost" 表示应使用节点上加载的配置文件。
        • "RuntimeDefault" 表示应使用容器运行时默认的 AppArmor 配置文件。
        • "Unconfined" 表示不应强制执行 AppArmor 配置文件。
      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示应使用的节点上加载的配置文件。必须预先在节点上配置配置文件才能使其工作。必须设置为 type 为“Localhost”时才能设置。

    • securityContext.capabilities (Capabilities)

      在运行容器时要添加/删除的功能。默认情况下,使用容器运行时授予的默认功能集。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      添加和删除正在运行的容器的 POSIX 功能。

      • securityContext.capabilities.add ([]string)

        原子:将在合并期间被替换

        添加的功能

      • securityContext.capabilities.drop ([]string)

        原子:将在合并期间被替换

        删除的功能

    • securityContext.procMount (string)

      procMount 表示要为容器使用的 proc 挂载类型。默认值为 Default,它使用容器运行时默认值来设置只读路径和屏蔽路径。这需要启用 ProcMountType 功能标志。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      可能的枚举值

      • "Default" 使用容器运行时默认值来设置 /proc 的只读和屏蔽路径。大多数容器运行时都会屏蔽 /proc 中的某些路径,以避免意外暴露特殊设备或信息。
      • "Unmasked" 绕过容器运行时默认的屏蔽行为,并确保新创建的容器的 /proc 保持不变,没有任何修改。
    • securityContext.privileged (boolean)

      以特权模式运行容器。特权容器中的进程基本上等同于主机上的 root。默认值为 false。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有只读根文件系统。默认值为 false。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.runAsUser (int64)

      运行容器进程入口点的 UID。如果未指定,则默认为镜像元数据中指定的用户。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.runAsNonRoot (boolean)

      指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证镜像,以确保它不以 UID 0(root)身份运行,如果这样做,则会失败并启动容器。如果未设置或为 false,则不会执行此类验证。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

    • securityContext.runAsGroup (int64)

      运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.seLinuxOptions (SELinuxOptions)

      应用于容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机 SELinux 上下文。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SELinuxOptions 是应用于容器的标签

      • securityContext.seLinuxOptions.level (string)

        Level 是应用于容器的 SELinux level 标签。

      • securityContext.seLinuxOptions.role (string)

        Role 是应用于容器的 SELinux role 标签。

      • securityContext.seLinuxOptions.type (string)

        Type 是应用于容器的 SELinux type 标签。

      • securityContext.seLinuxOptions.user (string)

        User 是应用于容器的 SELinux user 标签。

    • securityContext.seccompProfile (SeccompProfile)

      要在此容器中使用的 seccomp 选项。如果 seccomp 选项在 Pod 和容器级别都提供,则容器选项会覆盖 Pod 选项。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

      SeccompProfile 定义 pod/容器的 seccomp 配置设置。只能设置一个 profile 源。

      • securityContext.seccompProfile.type (string), required

        type 指示将应用哪种类型的 seccomp profile。有效选项是

        Localhost - 应使用节点上文件中定义的 profile。 RuntimeDefault - 应使用容器运行时默认 profile。 Unconfined - 不应应用任何 profile。

        可能的枚举值

        • "Localhost" 表示应使用节点上文件中定义的 profile。该文件位置相对于 <kubelet-root-dir>/seccomp。
        • "RuntimeDefault" 表示默认容器运行时 seccomp profile。
        • "Unconfined" 表示不应用 seccomp profile (又名 unconfined)。
      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 表示应使用节点上文件中定义的 profile。必须在节点上预配置该文件才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的下降路径。如果 type 为 "Localhost",则必须设置。对于任何其他 type,则不得设置。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      应用于所有容器的 Windows 特定设置。如果未指定,将使用 PodSecurityContext 中的选项。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。请注意,当 spec.os.name 为 linux 时,无法设置此字段。

      WindowsSecurityContextOptions 包含 Windows 特定的选项和凭据。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 在由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范中内联的 GMSA 凭据规范的内容。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName 是要使用的 GMSA 凭据规范的名称。

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 确定容器是否应作为“Host Process”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值 (不允许同时存在 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

        在 Windows 中运行容器进程入口点的 UserName。如果未指定,则默认为镜像元数据中指定的用户。也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则 SecurityContext 中指定的值优先。

不允许

  • ports ([]ContainerPort)

    Patch 策略:在 containerPort 上合并

    映射:在合并期间将保留键 containerPort, protocol 上的唯一值

    临时容器不允许使用端口。

    ContainerPort 表示单个容器中的网络端口。

    • ports.containerPort (int32), required

      要在 pod 的 IP 地址上暴露的端口号。这必须是有效的端口号,0 < x < 65536。

    • ports.hostIP (string)

      将外部端口绑定到哪个主机 IP。

    • ports.hostPort (int32)

      要在主机上暴露的端口号。如果指定,这必须是有效的端口号,0 < x < 65536。如果指定 HostNetwork,则必须与 ContainerPort 匹配。大多数容器不需要此项。

    • ports.name (string)

      如果指定,这必须是 IANA_SVC_NAME 并且在 pod 中唯一。pod 中的每个命名端口必须具有唯一的名称。服务可以参考的端口名称。

    • ports.protocol (string)

      端口协议。必须是 UDP、TCP 或 SCTP。默认为 "TCP"。

      可能的枚举值

      • "SCTP" 是 SCTP 协议。
      • "TCP" 是 TCP 协议。
      • "UDP" 是 UDP 协议。
  • resources (ResourceRequirements)

    临时容器不允许使用资源。临时容器使用已分配给 Pod 的空闲资源。

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      映射:在合并期间将保留 key name 上的唯一值

      Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

      此字段取决于 DynamicResourceAllocation 功能门。

      此字段是不可变的。它只能设置为容器。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

      • resources.claims.name (string), required

        Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

      • resources.claims.request (string)

        Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • lifecycle (Lifecycle)

    临时容器不允许使用生命周期。

    Lifecycle 描述管理系统应响应容器生命周期事件而采取的操作。对于 PostStart 和 PreStop 生命周期处理程序,管理容器会阻止,直到操作完成,除非容器进程失败,在这种情况下,处理程序将被中止。

    • lifecycle.postStart (LifecycleHandler)

      PostStart 在创建容器后立即调用。如果处理程序失败,则容器将根据其重启策略终止并重新启动。其他容器管理会阻止,直到钩子完成。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop 在由于 API 请求或管理事件(例如活动/启动探测失败、抢占、资源争用等)而终止容器之前立即调用。如果容器崩溃或退出,则不会调用处理程序。Pod 的终止宽限期倒计时在执行 PreStop 钩子之前开始。无论处理程序的结果如何,容器最终都将在 Pod 的终止宽限期内终止(除非由 finalizers 延迟)。其他容器管理会阻止,直到钩子完成或达到终止宽限期。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

      StopSignal 定义在停止容器时将发送到容器的信号。如果未指定,则默认值由使用的容器运行时定义。StopSignal 只能为 .spec.os.name 非空的 Pod 设置*

      可能的枚举值

      • "SIGABRT"
      • "SIGALRM"
      • "SIGBUS"
      • "SIGCHLD"
      • "SIGCLD"
      • "SIGCONT"
      • "SIGFPE"
      • "SIGHUP"
      • "SIGILL"
      • "SIGINT"
      • "SIGIO"
      • "SIGIOT"
      • "SIGKILL"
      • "SIGPIPE"
      • "SIGPOLL"
      • "SIGPROF"
      • "SIGPWR"
      • "SIGQUIT"
      • "SIGRTMAX"
      • "SIGRTMAX-1"
      • "SIGRTMAX-10"
      • "SIGRTMAX-11"
      • "SIGRTMAX-12"
      • "SIGRTMAX-13"
      • "SIGRTMAX-14"
      • "SIGRTMAX-2"
      • "SIGRTMAX-3"
      • "SIGRTMAX-4"
      • "SIGRTMAX-5"
      • "SIGRTMAX-6"
      • "SIGRTMAX-7"
      • "SIGRTMAX-8"
      • "SIGRTMAX-9"
      • "SIGRTMIN"
      • "SIGRTMIN+1"
      • "SIGRTMIN+10"
      • "SIGRTMIN+11"
      • "SIGRTMIN+12"
      • "SIGRTMIN+13"
      • "SIGRTMIN+14"
      • "SIGRTMIN+15"
      • "SIGRTMIN+2"
      • "SIGRTMIN+3"
      • "SIGRTMIN+4"
      • "SIGRTMIN+5"
      • "SIGRTMIN+6"
      • "SIGRTMIN+7"
      • "SIGRTMIN+8"
      • "SIGRTMIN+9"
      • "SIGSEGV"
      • "SIGSTKFLT"
      • "SIGSTOP"
      • "SIGSYS"
      • "SIGTERM"
      • "SIGTRAP"
      • "SIGTSTP"
      • "SIGTTIN"
      • "SIGTTOU"
      • "SIGURG"
      • "SIGUSR1"
      • "SIGUSR2"
      • "SIGVTALRM"
      • "SIGWINCH"
      • "SIGXCPU"
      • "SIGXFSZ"
  • livenessProbe (Probe)

    临时容器不允许使用探针。

  • readinessProbe (Probe)

    临时容器不允许使用探针。

  • startupProbe (Probe)

    临时容器不允许使用探针。

LifecycleHandler

LifecycleHandler 定义了应在生命周期钩子中采取的特定操作。除了 TCPSocket 之外,必须指定且只能指定一个字段。


  • exec (ExecAction)

    Exec 指定要在容器中执行的命令。

    ExecAction 描述一个“在容器中运行”的操作。

    • exec.command ([]string)

      原子:将在合并期间被替换

      Command 是在容器内部执行的命令行,命令的工作目录在容器的文件系统中是根目录 ('/')。该命令会被简单地 exec 执行,不会在 shell 内部运行,因此传统的 shell 指令 ('|' 等) 不会起作用。要使用 shell,您需要显式调用该 shell。退出状态码 0 被视为存活/健康,非零则视为不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要执行的 HTTP GET 请求。

    HTTPGetAction 描述基于 HTTP Get 请求的操作。

    • httpGet.port (IntOrString), 必需

      要访问容器的端口的名称或编号。编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。

      IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和反编组时,它会生成或消耗内部类型。这允许您拥有一个可以接受名称或编号的 JSON 字段。

    • httpGet.host (string)

      要连接到的主机名,默认值为 Pod IP。您可能需要在 httpHeaders 中设置 "Host"。

    • httpGet.httpHeaders ([]HTTPHeader)

      原子:将在合并期间被替换

      要在请求中设置的自定义标头。HTTP 允许重复的标头。

      HTTPHeader 描述用于 HTTP 探针的自定义标头

      • httpGet.httpHeaders.name (string), 必需

        标头字段名称。输出时此名称将被规范化,因此大小写不同的名称将被视为相同的标头。

      • httpGet.httpHeaders.value (string), 必需

        标头字段值

    • httpGet.path (string)

      HTTP 服务器上的访问路径。

    • httpGet.scheme (string)

      用于连接到主机的方案。默认值为 HTTP。

      可能的枚举值

      • "HTTP" 表示将使用 http:// 方案
      • "HTTPS" 表示将使用 https:// 方案
  • sleep (SleepAction)

    Sleep 表示容器应休眠的持续时间。

    SleepAction 描述一个“休眠”操作。

    • sleep.seconds (int64), 必需

      Seconds 是休眠的秒数。

  • tcpSocket (TCPSocketAction)

    已弃用。TCPSocket 不受支持作为 LifecycleHandler,并保留用于向后兼容。此字段没有验证,并且在指定时生命周期钩子将在运行时失败。

    TCPSocketAction 描述基于打开套接字的操作

    • tcpSocket.port (IntOrString), 必需

      要访问容器的端口的编号或名称。编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。

      IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和反编组时,它会生成或消耗内部类型。这允许您拥有一个可以接受名称或编号的 JSON 字段。

    • tcpSocket.host (string)

      可选:要连接到的主机名,默认值为 Pod IP。

NodeAffinity

节点亲和性是一组节点亲和性调度规则。


  • preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)

    原子:将在合并期间被替换

    调度器将优先将 Pod 调度到满足此字段中指定的亲和性表达式的节点,但它可能会选择违反一个或多个表达式的节点。最受欢迎的节点是具有最大权重和的节点,即对于满足所有调度要求(资源请求、requiredDuringScheduling 亲和性表达式等)的每个节点,通过迭代此字段的元素并添加“权重”到和中(如果节点匹配相应的 matchExpressions);具有最高和的节点是最受欢迎的。

    一个空的 preferred scheduling term 匹配所有对象,具有隐式权重 0(即它是一个无操作)。一个 null preferred scheduling term 不匹配任何对象(即它也是一个无操作)。

    • preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), 必需

      与相应权重关联的节点选择器项。

      空或空的节点选择器术语不匹配任何对象。它们的条件是 AND 关系。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的子集。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)

        原子:将在合并期间被替换

        节点标签的节点选择器要求列表。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)

        原子:将在合并期间被替换

        节点字段的节点选择器要求列表。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

      与匹配相应 nodeSelectorTerm 关联的权重,范围为 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)

    如果此字段指定的亲和性要求在调度时未得到满足,则 Pod 将不会调度到该节点上。如果此字段指定的亲和性要求在 Pod 执行期间的某个时间点不再得到满足(例如,由于更新),则系统可能会尝试最终将 Pod 从其节点上驱逐出去。

    节点选择器表示对一组节点进行一个或多个标签查询的结果的并集;也就是说,它表示由节点选择器术语表示的选择器的 OR。

    • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm), 必需

      原子:将在合并期间被替换

      必需。节点选择器术语列表。这些术语是 OR 关系。

      空或空的节点选择器术语不匹配任何对象。它们的条件是 AND 关系。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的子集。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        原子:将在合并期间被替换

        节点标签的节点选择器要求列表。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        原子:将在合并期间被替换

        节点字段的节点选择器要求列表。

PodAffinity

Pod 亲和性是一组 Pod 间亲和性调度规则。


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子:将在合并期间被替换

    调度器将优先将 Pod 调度到满足此字段中指定的亲和性表达式的节点,但它可能会选择违反一个或多个表达式的节点。最受欢迎的节点是具有最大权重和的节点,即对于满足所有调度要求(资源请求、requiredDuringScheduling 亲和性表达式等)的每个节点,通过迭代此字段的元素并添加“权重”到和中(如果节点具有匹配相应的 podAffinityTerm 的 Pod);具有最高和的节点是最受欢迎的。

    所有匹配的 WeightedPodAffinityTerm 字段的权重都将按节点相加,以找到最受欢迎的节点。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必需

      必需。与相应权重关联的 Pod 亲和性项。

      定义一组 Pod(即与给定命名空间相关的 labelSelector 匹配的 Pod)此 Pod 应该与之协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与该组 Pod 上的任何节点相同的标签键 值的节点上运行。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), 必需

        此 Pod 应该与指定命名空间中匹配 labelSelector 的 Pod 协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与任何选定的 Pod 运行的节点相同的标签键 topologyKey 值的节点上运行。不允许为空的 topologyKey。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        一组资源的标签查询,在本例中为 Pod。如果为 null,则此 PodAffinityTerm 与没有 Pod 匹配。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子:将在合并期间被替换

        MatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key in (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 matchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子:将在合并期间被替换

        MismatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key notin (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 mismatchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 mismatchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        一组命名空间的标签查询,该术语适用于这些命名空间。该术语应用于此字段和 namespaces 字段中列出的命名空间的并集。null selector 和 null 或 empty 命名空间列表表示“此 Pod 的命名空间”。一个空的 selector ({}) 匹配所有命名空间。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子:将在合并期间被替换

        namespaces 指定术语适用的静态命名空间名称列表。该术语应用于此字段中列出的命名空间和 namespaceSelector 选择的命名空间的并集。null 或 empty 命名空间列表和 null namespaceSelector 表示“此 Pod 的命名空间”。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

      与匹配相应 podAffinityTerm 关联的权重,范围为 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子:将在合并期间被替换

    如果该字段指定的亲和性要求在调度时未满足,则 Pod 将不会被调度到该节点上。如果该字段指定的亲和性要求在 Pod 执行期间的某个时间点停止满足(例如,由于 Pod 标签更新),系统可能会尝试最终从其节点上驱逐该 Pod,也可能不会。当存在多个元素时,对应于每个 PodAffinityTerm 的节点列表会相交,即所有条件必须满足。

    定义一组 Pod(即与给定命名空间相关的 labelSelector 匹配的 Pod)此 Pod 应该与之协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与该组 Pod 上的任何节点相同的标签键 值的节点上运行。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必需

      此 Pod 应该与指定命名空间中匹配 labelSelector 的 Pod 协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与任何选定的 Pod 运行的节点相同的标签键 topologyKey 值的节点上运行。不允许为空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      一组资源的标签查询,在本例中为 Pod。如果为 null,则此 PodAffinityTerm 与没有 Pod 匹配。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子:将在合并期间被替换

      MatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key in (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 matchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 matchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子:将在合并期间被替换

      MismatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key notin (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 mismatchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 mismatchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      一组命名空间的标签查询,该术语适用于这些命名空间。该术语应用于此字段和 namespaces 字段中列出的命名空间的并集。null selector 和 null 或 empty 命名空间列表表示“此 Pod 的命名空间”。一个空的 selector ({}) 匹配所有命名空间。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子:将在合并期间被替换

      namespaces 指定术语适用的静态命名空间名称列表。该术语应用于此字段中列出的命名空间和 namespaceSelector 选择的命名空间的并集。null 或 empty 命名空间列表和 null namespaceSelector 表示“此 Pod 的命名空间”。

PodAntiAffinity

Pod 反亲和性是一组 Pod 间反亲和性调度规则。


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子:将在合并期间被替换

    调度器会倾向于将 Pod 调度到满足该字段指定的反亲和性表达式的节点,但它可能会选择违反一个或多个表达式的节点。权重之和最大的节点是最优选择,即对于满足所有调度要求(资源请求、requiredDuringScheduling 反亲和性表达式等)的每个节点,通过遍历该字段的元素并从总和中减去“weight”,如果该节点具有匹配相应的 podAffinityTerm 的 Pod;权重之和最高的节点是最佳选择。

    所有匹配的 WeightedPodAffinityTerm 字段的权重都将按节点相加,以找到最受欢迎的节点。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必需

      必需。与相应权重关联的 Pod 亲和性项。

      定义一组 Pod(即与给定命名空间相关的 labelSelector 匹配的 Pod)此 Pod 应该与之协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与该组 Pod 上的任何节点相同的标签键 值的节点上运行。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), 必需

        此 Pod 应该与指定命名空间中匹配 labelSelector 的 Pod 协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与任何选定的 Pod 运行的节点相同的标签键 topologyKey 值的节点上运行。不允许为空的 topologyKey。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        一组资源的标签查询,在本例中为 Pod。如果为 null,则此 PodAffinityTerm 与没有 Pod 匹配。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子:将在合并期间被替换

        MatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key in (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 matchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子:将在合并期间被替换

        MismatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key notin (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 mismatchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 mismatchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        一组命名空间的标签查询,该术语适用于这些命名空间。该术语应用于此字段和 namespaces 字段中列出的命名空间的并集。null selector 和 null 或 empty 命名空间列表表示“此 Pod 的命名空间”。一个空的 selector ({}) 匹配所有命名空间。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子:将在合并期间被替换

        namespaces 指定术语适用的静态命名空间名称列表。该术语应用于此字段中列出的命名空间和 namespaceSelector 选择的命名空间的并集。null 或 empty 命名空间列表和 null namespaceSelector 表示“此 Pod 的命名空间”。

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

      与匹配相应 podAffinityTerm 关联的权重,范围为 1-100。

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子:将在合并期间被替换

    如果该字段指定的反亲和性要求在调度时未满足,则 Pod 将不会被调度到该节点上。如果该字段指定的反亲和性要求在 Pod 执行期间的某个时间点停止满足(例如,由于 Pod 标签更新),系统可能会尝试最终从其节点上驱逐该 Pod,也可能不会。当存在多个元素时,对应于每个 PodAffinityTerm 的节点列表会相交,即所有条件必须满足。

    定义一组 Pod(即与给定命名空间相关的 labelSelector 匹配的 Pod)此 Pod 应该与之协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与该组 Pod 上的任何节点相同的标签键 值的节点上运行。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必需

      此 Pod 应该与指定命名空间中匹配 labelSelector 的 Pod 协同定位(亲和性)或不协同定位(反亲和性),其中协同定位定义为在具有与任何选定的 Pod 运行的节点相同的标签键 topologyKey 值的节点上运行。不允许为空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      一组资源的标签查询,在本例中为 Pod。如果为 null,则此 PodAffinityTerm 与没有 Pod 匹配。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子:将在合并期间被替换

      MatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key in (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 matchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 matchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子:将在合并期间被替换

      MismatchLabelKeys 是一组 Pod 标签键,用于选择要考虑的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 合并为 key notin (value) 以选择要考虑的现有 Pod 组,以用于传入 Pod 的 Pod(反)亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为 empty。相同的键禁止同时存在于 mismatchLabelKeys 和 labelSelector 中。此外,当 labelSelector 未设置时,无法设置 mismatchLabelKeys。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      一组命名空间的标签查询,该术语适用于这些命名空间。该术语应用于此字段和 namespaces 字段中列出的命名空间的并集。null selector 和 null 或 empty 命名空间列表表示“此 Pod 的命名空间”。一个空的 selector ({}) 匹配所有命名空间。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子:将在合并期间被替换

      namespaces 指定术语适用的静态命名空间名称列表。该术语应用于此字段中列出的命名空间和 namespaceSelector 选择的命名空间的并集。null 或 empty 命名空间列表和 null namespaceSelector 表示“此 Pod 的命名空间”。

Probe

Probe 描述了要对容器执行的健康检查,以确定它是否存活或已准备好接收流量。


  • exec (ExecAction)

    Exec 指定要在容器中执行的命令。

    ExecAction 描述一个“在容器中运行”的操作。

    • exec.command ([]string)

      原子:将在合并期间被替换

      Command 是在容器内部执行的命令行,命令的工作目录在容器的文件系统中是根目录 ('/')。该命令会被简单地 exec 执行,不会在 shell 内部运行,因此传统的 shell 指令 ('|' 等) 不会起作用。要使用 shell,您需要显式调用该 shell。退出状态码 0 被视为存活/健康,非零则视为不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要执行的 HTTP GET 请求。

    HTTPGetAction 描述基于 HTTP Get 请求的操作。

    • httpGet.port (IntOrString), 必需

      要访问容器的端口的名称或编号。编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。

      IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和反编组时,它会生成或消耗内部类型。这允许您拥有一个可以接受名称或编号的 JSON 字段。

    • httpGet.host (string)

      要连接到的主机名,默认值为 Pod IP。您可能需要在 httpHeaders 中设置 "Host"。

    • httpGet.httpHeaders ([]HTTPHeader)

      原子:将在合并期间被替换

      要在请求中设置的自定义标头。HTTP 允许重复的标头。

      HTTPHeader 描述用于 HTTP 探针的自定义标头

      • httpGet.httpHeaders.name (string), 必需

        标头字段名称。输出时此名称将被规范化,因此大小写不同的名称将被视为相同的标头。

      • httpGet.httpHeaders.value (string), 必需

        标头字段值

    • httpGet.path (string)

      HTTP 服务器上的访问路径。

    • httpGet.scheme (string)

      用于连接到主机的方案。默认值为 HTTP。

      可能的枚举值

      • "HTTP" 表示将使用 http:// 方案
      • "HTTPS" 表示将使用 https:// 方案
  • tcpSocket (TCPSocketAction)

    TCPSocket 指定与 TCP 端口的连接。

    TCPSocketAction 描述基于打开套接字的操作

    • tcpSocket.port (IntOrString), 必需

      要访问容器的端口的编号或名称。编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。

      IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和反编组时,它会生成或消耗内部类型。这允许您拥有一个可以接受名称或编号的 JSON 字段。

    • tcpSocket.host (string)

      可选:要连接到的主机名,默认值为 Pod IP。

  • initialDelaySeconds (int32)

    容器启动后,在启动 liveness 探测之前经过的秒数。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • terminationGracePeriodSeconds (int64)

    探测失败后 Pod 需要优雅终止的可选持续时间(秒)。优雅期是在向 Pod 中的进程发送终止信号之后到进程被 kill 信号强制停止之间的时间。将此值设置为比您的进程的预期清理时间更长。如果此值为 nil,将使用 Pod 的 terminationGracePeriodSeconds。否则,此值将覆盖 Pod 规范中提供的值。值必须是非负整数。值为零表示立即通过 kill 信号停止(没有关机机会)。这是一个 beta 字段,需要启用 ProbeTerminationGracePeriod 功能门。最小值是 1。如果未设置,则使用 spec.terminationGracePeriodSeconds。

  • periodSeconds (int32)

    执行探测的频率(秒)。默认值为 10 秒。最小值为 1。

  • timeoutSeconds (int32)

    探测超时后的秒数。默认值为 1 秒。最小值为 1。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • failureThreshold (int32)

    探测被认为失败的最小连续失败次数,在成功之后。默认值为 3。最小值为 1。

  • successThreshold (int32)

    探测被认为成功的最小连续成功次数,在失败之后。默认值为 1。对于 liveness 和 startup 必须为 1。最小值为 1。

  • grpc (GRPCAction)

    GRPC 指定 GRPC HealthCheckRequest。

    GRPCAction 指定涉及 GRPC 服务的操作。

    • grpc.port (int32), 必需

      gRPC 服务的端口号。数字必须在 1 到 65535 的范围内。

    • grpc.service (string)

      Service 是放置在 gRPC HealthCheckRequest 中的服务的名称(请参阅 https://github.com/grpc/grpc/blob/master/doc/health-checking.md))。

      如果未指定此项,则默认行为由 gRPC 定义。

PodStatus

PodStatus 表示 Pod 状态的信息。状态可能落后于系统的实际状态,尤其是在托管 Pod 的节点无法联系控制平面时。


  • nominatedNodeName (string)

    nominatedNodeName 仅在 Pod 抢占节点上的其他 Pod 时设置,但由于抢占的 Pod 接收到其优雅终止期,因此无法立即调度。此字段不保证 Pod 将被调度到此节点上。如果其他节点可用得更快,调度器可能会决定将 Pod 放置在其他位置。调度器也可能会决定将此节点上的资源分配给创建后优先级更高的 Pod。因此,当 Pod 被调度时,此字段可能与 PodSpec.nodeName 不同。

  • hostIP (string)

    hostIP 包含分配给 Pod 的主机的 IP 地址。如果 Pod 尚未启动,则为空。如果 kubelet 存在问题,则 HostIP 即使分配了节点,也不会更新。

  • hostIPs ([]HostIP)

    Patch 策略:在 key ip 上合并

    原子:将在合并期间被替换

    hostIPs 包含分配给主机的 IP 地址。如果指定了此字段,则第一个条目必须与 hostIP 字段匹配。如果尚未启动 Pod,则此列表为空。如果 kubelet 存在问题,即使分配了节点,HostIPs 也不会更新。

    HostIP 表示分配给主机的单个 IP 地址。

    • hostIPs.ip (string), 必需

      IP 是分配给主机的 IP 地址

  • startTime (Time)

    Kubelet 确认对象的时间,采用 RFC 3339 格式。这发生在 Kubelet 拉取 Pod 的容器镜像之前。

    Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

  • phase (string)

    Pod 的阶段是其生命周期中 Pod 状态的简单高级摘要。条件数组、原因和消息字段以及各个容器状态数组包含有关 Pod 状态的更多详细信息。有五个可能的阶段值

    Pending:Pod 已被 Kubernetes 系统接受,但一个或多个容器镜像尚未创建。这包括在被调度之前的时间以及在网络上下载镜像所花费的时间,这可能需要一段时间。Running:Pod 已绑定到节点,并且所有容器都已创建。至少有一个容器仍在运行,或者正在启动或重新启动。Succeeded:Pod 中的所有容器都已成功终止,并且不会被重新启动。Failed:Pod 中的所有容器都已终止,并且至少有一个容器以失败终止。容器要么以非零状态退出,要么被系统终止。Unknown:由于某种原因无法获取 Pod 的状态,通常是由于与 Pod 的主机通信时出错。

    更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

    可能的枚举值

    • "Failed" 表示 Pod 中的所有容器都已终止,并且至少有一个容器以失败终止(以非零退出代码退出或被系统停止)。
    • "Pending" 表示 Pod 已被系统接受,但一个或多个容器尚未启动。这包括在绑定到节点之前的时间,以及将镜像拉取到主机上所花费的时间。
    • "Running" 表示 Pod 已绑定到节点,并且所有容器都已启动。至少有一个容器仍在运行或正在重新启动。
    • "Succeeded" 表示 Pod 中的所有容器都已自愿以容器退出代码 0 终止,并且系统不会重新启动任何这些容器。
    • "Unknown" 表示由于某种原因无法获取 Pod 的状态,通常是由于与 Pod 的主机通信时出错。已弃用:自 2015 年以来未设置 (74da3b14b0c0f658b3bb8d2def5094686d0e9095)
  • message (string)

    指示 Pod 处于此状态原因的易于理解的消息。

  • reason (string)

    指示 Pod 处于此状态原因的简短 CamelCase 消息。例如 'Evicted'

  • podIP (string)

    分配给 Pod 的 Pod IP 地址。至少在集群内可路由。如果尚未分配,则为空。

  • podIPs ([]PodIP)

    Patch 策略:在 key ip 上合并

    Map:在 key ip 上的唯一值将在合并期间保留

    podIPs 包含分配给 Pod 的 IP 地址。如果指定了此字段,则第 0 个条目必须与 podIP 字段匹配。Pod 最多可以为 IPv4 和 IPv6 分配一个值。如果尚未分配任何 IP,则此列表为空。

    PodIP 表示分配给 Pod 的单个 IP 地址。

    • podIPs.ip (string), 必需

      IP 是分配给 Pod 的 IP 地址

  • conditions ([]PodCondition)

    Patch 策略:在键 type 上合并

    映射:在合并期间将保留键类型上的唯一值

    Pod 的当前服务状态。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    PodCondition 包含有关 Pod 当前条件的信息。

    • conditions.status (string), required

      状态是条件的状态。可以是 True、False 或 Unknown。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.type (string), required

      类型是条件的类型。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.lastProbeTime (Time)

      我们探测该条件的时间。

      Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

    • conditions.lastTransitionTime (Time)

      条件从一种状态过渡到另一种状态的时间。

      Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

    • conditions.message (string)

      人类可读的消息,指示上次转换的详细信息。

    • conditions.observedGeneration (int64)

      如果设置,则表示 pod 条件所基于的 .metadata.generation。要使用此字段,必须启用 PodObservedGenerationTracking 功能门控。

    • conditions.reason (string)

      条件上次转换的唯一、单字、驼峰式命名原因。

  • qosClass (string)

    根据资源需求分配给 pod 的服务质量 (QOS) 分类。有关可用 QOS 类,请参阅 PodQOSClass 类型。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes

    可能的枚举值

    • "BestEffort" 是 BestEffort qos 类。
    • "Burstable" 是 Burstable qos 类。
    • "Guaranteed" 是 Guaranteed qos 类。
  • initContainerStatuses ([]ContainerStatus)

    原子:将在合并期间被替换

    此 pod 中 init 容器的状态。最新的成功且不可重启的 init 容器将具有 ready = true,最近启动的容器将具有 startTime 已设置。此列表中应为 pod 中的每个 init 容器最多有一个状态,并且所有状态都应为 pod 中的容器。但是,这没有强制执行。如果列表中存在不存在容器的状态,或者列表中有重复的名称,则各种 Kubernetes 组件的行为未定义,并且这些状态可能会被忽略。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status

    ContainerStatus 包含此容器当前状态的详细信息。

    • initContainerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示节点为此容器分配的计算资源。Kubelet 在 pod 成功被允许进入后,并在成功允许所需的 pod 调整大小后,将此值设置为 Container.Resources.Requests。

    • initContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      补丁策略:在 key name 上合并

      映射:在合并期间将保留 key name 上的唯一值

      AllocatedResourcesStatus 表示分配给此 Pod 的各种资源的的状态。

      ResourceStatus 表示分配给 Pod 的单个资源的状态。

      • initContainerStatuses.allocatedResourcesStatus.name (string), required

        资源的名称。必须在 pod 内唯一,并且在非 DRA 资源的情况下,必须与 pod 规范中的资源之一匹配。对于 DRA 资源,该值必须为 "claim:<claim_name>/<request>"。当此状态报告关于容器时,“claim_name”和“request”必须与此容器的声明之一匹配。

      • initContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        映射:在合并期间将保留 key resourceID 上的唯一值

        唯一资源健康状况列表。列表中的每个元素包含一个唯一的资源 ID 及其健康状况。至少,对于 Pod 的生命周期,资源 ID 必须唯一标识分配给 Node 上的 Pod 的资源。如果同一 Node 上的其他 Pod 报告具有相同资源 ID 的状态,则必须是它们共享的相同资源。有关特定格式,请参阅 ResourceID 类型定义在各种用例中的定义。

        ResourceHealth 表示资源的健康状况。这是 KEP https://kep.k8s.io/4680 的一部分。

        • initContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), required

          ResourceID 是资源的唯一标识符。有关更多信息,请参阅 ResourceID 类型。

        • initContainerStatuses.allocatedResourcesStatus.resources.health (string)

          资源健康状况。可以是以下之一:

          • Healthy:正常运行
          • Unhealthy:报告不健康。我们认为这是一个临时健康问题,因为我们今天没有机制来区分临时和永久问题。
          • Unknown:无法确定状态。例如,设备插件已取消注册,但尚未重新注册。

          将来我们可能希望引入 PermanentlyUnhealthy 状态。

    • initContainerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式为 '<type>://<container_id>'。其中 type 是容器运行时标识符,由 CRI API 的 Version 调用返回(例如 "containerd")。

    • initContainerStatuses.image (string), required

      Image 是容器正在运行的容器镜像的名称。容器镜像可能与 PodSpec 中使用的镜像不匹配,因为它可能已由运行时解析。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images

    • initContainerStatuses.imageID (string), required

      ImageID 是容器镜像的镜像 ID。镜像 ID 可能与 PodSpec 中使用的镜像的镜像 ID 不匹配,因为它可能已由运行时解析。

    • initContainerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最后终止状态,以帮助调试容器崩溃和重启。如果容器仍在运行且 RestartCount 为 0,则此字段不会填充。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • initContainerStatuses.lastState.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • initContainerStatuses.lastState.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • initContainerStatuses.lastState.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • initContainerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • initContainerStatuses.lastState.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • initContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • initContainerStatuses.lastState.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • initContainerStatuses.lastState.terminated.message (string)

          有关容器上次终止的消息

        • initContainerStatuses.lastState.terminated.reason (string)

          容器上次终止的(简短)原因

        • initContainerStatuses.lastState.terminated.signal (int32)

          容器上次终止时的信号

      • initContainerStatuses.lastState.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • initContainerStatuses.lastState.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • initContainerStatuses.lastState.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • initContainerStatuses.name (string), required

      Name 是一个 DNS_LABEL,表示容器的唯一名称。Pod 中的每个容器必须在所有容器类型中具有唯一的名称。无法更新。

    • initContainerStatuses.ready (boolean), required

      Ready 指定容器是否当前通过其就绪检查。该值将随着就绪探测的持续执行而更改。如果未指定任何就绪探测,则此字段默认在容器完全启动后为 true(请参阅 Started 字段)。

      该值通常用于确定容器是否准备好接受流量。

    • initContainerStatuses.resources (ResourceRequirements)

      Resources 表示在容器启动或成功调整大小后,已成功应用于正在运行的容器的计算资源请求和限制。

      ResourceRequirements 描述计算资源需求。

      • initContainerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间将保留 key name 上的唯一值

        Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

        此字段取决于 DynamicResourceAllocation 功能门。

        此字段是不可变的。它只能设置为容器。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

        • initContainerStatuses.resources.claims.name (string), required

          Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

        • initContainerStatuses.resources.claims.request (string)

          Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

      • initContainerStatuses.resources.limits (map[string]Quantity)

        Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

      • initContainerStatuses.resources.requests (map[string]Quantity)

        Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • initContainerStatuses.restartCount (int32), required

      RestartCount 包含容器已重启的次数。Kubelet 努力始终增加该值,但有些情况下,由于节点重启,状态可能会丢失,然后该值可能会重置为 0。该值永远不会为负数。

    • initContainerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命周期钩子并已通过其启动探测。初始化为 false,在启动探测被认为成功后变为 true。在容器重启时或如果 kubelet 暂时丢失状态时重置为 false。在两种情况下,启动探测将再次运行。始终为 true,当未定义启动探测并且容器正在运行并且已通过 postStart 生命周期钩子时。空值必须与 false 相同。

    • initContainerStatuses.state (ContainerState)

      State 包含有关容器当前状态的详细信息。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • initContainerStatuses.state.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • initContainerStatuses.state.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • initContainerStatuses.state.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • initContainerStatuses.state.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • initContainerStatuses.state.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • initContainerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • initContainerStatuses.state.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • initContainerStatuses.state.terminated.message (string)

          有关容器上次终止的消息

        • initContainerStatuses.state.terminated.reason (string)

          容器上次终止的(简短)原因

        • initContainerStatuses.state.terminated.signal (int32)

          容器上次终止时的信号

      • initContainerStatuses.state.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • initContainerStatuses.state.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • initContainerStatuses.state.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • initContainerStatuses.stopSignal (string)

      StopSignal 报告此容器的有效停止信号

      可能的枚举值

      • "SIGABRT"
      • "SIGALRM"
      • "SIGBUS"
      • "SIGCHLD"
      • "SIGCLD"
      • "SIGCONT"
      • "SIGFPE"
      • "SIGHUP"
      • "SIGILL"
      • "SIGINT"
      • "SIGIO"
      • "SIGIOT"
      • "SIGKILL"
      • "SIGPIPE"
      • "SIGPOLL"
      • "SIGPROF"
      • "SIGPWR"
      • "SIGQUIT"
      • "SIGRTMAX"
      • "SIGRTMAX-1"
      • "SIGRTMAX-10"
      • "SIGRTMAX-11"
      • "SIGRTMAX-12"
      • "SIGRTMAX-13"
      • "SIGRTMAX-14"
      • "SIGRTMAX-2"
      • "SIGRTMAX-3"
      • "SIGRTMAX-4"
      • "SIGRTMAX-5"
      • "SIGRTMAX-6"
      • "SIGRTMAX-7"
      • "SIGRTMAX-8"
      • "SIGRTMAX-9"
      • "SIGRTMIN"
      • "SIGRTMIN+1"
      • "SIGRTMIN+10"
      • "SIGRTMIN+11"
      • "SIGRTMIN+12"
      • "SIGRTMIN+13"
      • "SIGRTMIN+14"
      • "SIGRTMIN+15"
      • "SIGRTMIN+2"
      • "SIGRTMIN+3"
      • "SIGRTMIN+4"
      • "SIGRTMIN+5"
      • "SIGRTMIN+6"
      • "SIGRTMIN+7"
      • "SIGRTMIN+8"
      • "SIGRTMIN+9"
      • "SIGSEGV"
      • "SIGSTKFLT"
      • "SIGSTOP"
      • "SIGSYS"
      • "SIGTERM"
      • "SIGTRAP"
      • "SIGTSTP"
      • "SIGTTIN"
      • "SIGTTOU"
      • "SIGURG"
      • "SIGUSR1"
      • "SIGUSR2"
      • "SIGVTALRM"
      • "SIGWINCH"
      • "SIGXCPU"
      • "SIGXFSZ"
    • initContainerStatuses.user (ContainerUser)

      User 表示最初附加到容器中第一个进程的用户身份信息

      ContainerUser 表示用户身份信息

      • initContainerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一个进程的用户身份信息。请注意,如果进程具有足够的权限,实际运行身份可能会更改。

        LinuxContainerUser 表示 Linux 容器中的用户身份信息

        • initContainerStatuses.user.linux.gid (int64), required

          GID 是最初附加到容器中第一个进程的主要 gid

        • initContainerStatuses.user.linux.uid (int64), required

          UID 是最初附加到容器中第一个进程的主要 uid

        • initContainerStatuses.user.linux.supplementalGroups ([]int64)

          原子:将在合并期间被替换

          SupplementalGroups 是最初附加到容器中第一个进程的辅助组。

    • initContainerStatuses.volumeMounts ([]VolumeMountStatus)

      Patch 策略:在 key mountPath 上合并*

      Map:在 key mountPath 上唯一的值将在合并期间保留*

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • initContainerStatuses.volumeMounts.mountPath (string), required

        MountPath 对应于原始 VolumeMount。

      • initContainerStatuses.volumeMounts.name (string), required

        Name 对应于原始 VolumeMount 的名称。

      • initContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始 VolumeMount。

      • initContainerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必须设置为 Disabled、Enabled 或 unspecified(对于非只读挂载)。原始 VolumeMount 中的 IfPossible 值必须根据挂载结果转换为 Disabled 或 Enabled。

  • containerStatuses ([]ContainerStatus)

    原子:将在合并期间被替换

    此 Pod 中容器的状态。Pod 中的每个容器在此列表中应该最多有一个状态,并且所有状态都应该属于 Pod 中的容器。但是,这并没有强制执行。如果列表中存在不存在的容器的状态,或者列表具有重复的名称,则各种 Kubernetes 组件的行为未定义,并且这些状态可能会被忽略。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

    ContainerStatus 包含此容器当前状态的详细信息。

    • containerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示节点为此容器分配的计算资源。Kubelet 在 pod 成功被允许进入后,并在成功允许所需的 pod 调整大小后,将此值设置为 Container.Resources.Requests。

    • containerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      补丁策略:在 key name 上合并

      映射:在合并期间将保留 key name 上的唯一值

      AllocatedResourcesStatus 表示分配给此 Pod 的各种资源的的状态。

      ResourceStatus 表示分配给 Pod 的单个资源的状态。

      • containerStatuses.allocatedResourcesStatus.name (string), required

        资源的名称。必须在 pod 内唯一,并且在非 DRA 资源的情况下,必须与 pod 规范中的资源之一匹配。对于 DRA 资源,该值必须为 "claim:<claim_name>/<request>"。当此状态报告关于容器时,“claim_name”和“request”必须与此容器的声明之一匹配。

      • containerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        映射:在合并期间将保留 key resourceID 上的唯一值

        唯一资源健康状况列表。列表中的每个元素包含一个唯一的资源 ID 及其健康状况。至少,对于 Pod 的生命周期,资源 ID 必须唯一标识分配给 Node 上的 Pod 的资源。如果同一 Node 上的其他 Pod 报告具有相同资源 ID 的状态,则必须是它们共享的相同资源。有关特定格式,请参阅 ResourceID 类型定义在各种用例中的定义。

        ResourceHealth 表示资源的健康状况。这是 KEP https://kep.k8s.io/4680 的一部分。

        • containerStatuses.allocatedResourcesStatus.resources.resourceID (string), required

          ResourceID 是资源的唯一标识符。有关更多信息,请参阅 ResourceID 类型。

        • containerStatuses.allocatedResourcesStatus.resources.health (string)

          资源健康状况。可以是以下之一:

          • Healthy:正常运行
          • Unhealthy:报告不健康。我们认为这是一个临时健康问题,因为我们今天没有机制来区分临时和永久问题。
          • Unknown:无法确定状态。例如,设备插件已取消注册,但尚未重新注册。

          将来我们可能希望引入 PermanentlyUnhealthy 状态。

    • containerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式为 '<type>://<container_id>'。其中 type 是容器运行时标识符,由 CRI API 的 Version 调用返回(例如 "containerd")。

    • containerStatuses.image (string), required

      Image 是容器正在运行的容器镜像的名称。容器镜像可能与 PodSpec 中使用的镜像不匹配,因为它可能已由运行时解析。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images

    • containerStatuses.imageID (string), required

      ImageID 是容器镜像的镜像 ID。镜像 ID 可能与 PodSpec 中使用的镜像的镜像 ID 不匹配,因为它可能已由运行时解析。

    • containerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最后终止状态,以帮助调试容器崩溃和重启。如果容器仍在运行且 RestartCount 为 0,则此字段不会填充。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • containerStatuses.lastState.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • containerStatuses.lastState.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • containerStatuses.lastState.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • containerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • containerStatuses.lastState.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • containerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • containerStatuses.lastState.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • containerStatuses.lastState.terminated.message (string)

          有关容器上次终止的消息

        • containerStatuses.lastState.terminated.reason (string)

          容器上次终止的(简短)原因

        • containerStatuses.lastState.terminated.signal (int32)

          容器上次终止时的信号

      • containerStatuses.lastState.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • containerStatuses.lastState.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • containerStatuses.lastState.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • containerStatuses.name (string), required

      Name 是一个 DNS_LABEL,表示容器的唯一名称。Pod 中的每个容器必须在所有容器类型中具有唯一的名称。无法更新。

    • containerStatuses.ready (boolean), required

      Ready 指定容器是否当前通过其就绪检查。该值将随着就绪探测的持续执行而更改。如果未指定任何就绪探测,则此字段默认在容器完全启动后为 true(请参阅 Started 字段)。

      该值通常用于确定容器是否准备好接受流量。

    • containerStatuses.resources (ResourceRequirements)

      Resources 表示在容器启动或成功调整大小后,已成功应用于正在运行的容器的计算资源请求和限制。

      ResourceRequirements 描述计算资源需求。

      • containerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间将保留 key name 上的唯一值

        Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

        此字段取决于 DynamicResourceAllocation 功能门。

        此字段是不可变的。它只能设置为容器。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

        • containerStatuses.resources.claims.name (string), required

          Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

        • containerStatuses.resources.claims.request (string)

          Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

      • containerStatuses.resources.limits (map[string]Quantity)

        Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

      • containerStatuses.resources.requests (map[string]Quantity)

        Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • containerStatuses.restartCount (int32), required

      RestartCount 包含容器已重启的次数。Kubelet 努力始终增加该值,但有些情况下,由于节点重启,状态可能会丢失,然后该值可能会重置为 0。该值永远不会为负数。

    • containerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命周期钩子并已通过其启动探测。初始化为 false,在启动探测被认为成功后变为 true。在容器重启时或如果 kubelet 暂时丢失状态时重置为 false。在两种情况下,启动探测将再次运行。始终为 true,当未定义启动探测并且容器正在运行并且已通过 postStart 生命周期钩子时。空值必须与 false 相同。

    • containerStatuses.state (ContainerState)

      State 包含有关容器当前状态的详细信息。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • containerStatuses.state.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • containerStatuses.state.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • containerStatuses.state.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • containerStatuses.state.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • containerStatuses.state.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • containerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • containerStatuses.state.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • containerStatuses.state.terminated.message (string)

          有关容器上次终止的消息

        • containerStatuses.state.terminated.reason (string)

          容器上次终止的(简短)原因

        • containerStatuses.state.terminated.signal (int32)

          容器上次终止时的信号

      • containerStatuses.state.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • containerStatuses.state.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • containerStatuses.state.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • containerStatuses.stopSignal (string)

      StopSignal 报告此容器的有效停止信号

      可能的枚举值

      • "SIGABRT"
      • "SIGALRM"
      • "SIGBUS"
      • "SIGCHLD"
      • "SIGCLD"
      • "SIGCONT"
      • "SIGFPE"
      • "SIGHUP"
      • "SIGILL"
      • "SIGINT"
      • "SIGIO"
      • "SIGIOT"
      • "SIGKILL"
      • "SIGPIPE"
      • "SIGPOLL"
      • "SIGPROF"
      • "SIGPWR"
      • "SIGQUIT"
      • "SIGRTMAX"
      • "SIGRTMAX-1"
      • "SIGRTMAX-10"
      • "SIGRTMAX-11"
      • "SIGRTMAX-12"
      • "SIGRTMAX-13"
      • "SIGRTMAX-14"
      • "SIGRTMAX-2"
      • "SIGRTMAX-3"
      • "SIGRTMAX-4"
      • "SIGRTMAX-5"
      • "SIGRTMAX-6"
      • "SIGRTMAX-7"
      • "SIGRTMAX-8"
      • "SIGRTMAX-9"
      • "SIGRTMIN"
      • "SIGRTMIN+1"
      • "SIGRTMIN+10"
      • "SIGRTMIN+11"
      • "SIGRTMIN+12"
      • "SIGRTMIN+13"
      • "SIGRTMIN+14"
      • "SIGRTMIN+15"
      • "SIGRTMIN+2"
      • "SIGRTMIN+3"
      • "SIGRTMIN+4"
      • "SIGRTMIN+5"
      • "SIGRTMIN+6"
      • "SIGRTMIN+7"
      • "SIGRTMIN+8"
      • "SIGRTMIN+9"
      • "SIGSEGV"
      • "SIGSTKFLT"
      • "SIGSTOP"
      • "SIGSYS"
      • "SIGTERM"
      • "SIGTRAP"
      • "SIGTSTP"
      • "SIGTTIN"
      • "SIGTTOU"
      • "SIGURG"
      • "SIGUSR1"
      • "SIGUSR2"
      • "SIGVTALRM"
      • "SIGWINCH"
      • "SIGXCPU"
      • "SIGXFSZ"
    • containerStatuses.user (ContainerUser)

      User 表示最初附加到容器中第一个进程的用户身份信息

      ContainerUser 表示用户身份信息

      • containerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一个进程的用户身份信息。请注意,如果进程具有足够的权限,实际运行身份可能会更改。

        LinuxContainerUser 表示 Linux 容器中的用户身份信息

        • containerStatuses.user.linux.gid (int64), required

          GID 是最初附加到容器中第一个进程的主要 gid

        • containerStatuses.user.linux.uid (int64), required

          UID 是最初附加到容器中第一个进程的主要 uid

        • containerStatuses.user.linux.supplementalGroups ([]int64)

          原子:将在合并期间被替换

          SupplementalGroups 是最初附加到容器中第一个进程的辅助组。

    • containerStatuses.volumeMounts ([]VolumeMountStatus)

      Patch 策略:在 key mountPath 上合并*

      Map:在 key mountPath 上唯一的值将在合并期间保留*

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • containerStatuses.volumeMounts.mountPath (string), required

        MountPath 对应于原始 VolumeMount。

      • containerStatuses.volumeMounts.name (string), required

        Name 对应于原始 VolumeMount 的名称。

      • containerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始 VolumeMount。

      • containerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必须设置为 Disabled、Enabled 或 unspecified(对于非只读挂载)。原始 VolumeMount 中的 IfPossible 值必须根据挂载结果转换为 Disabled 或 Enabled。

  • ephemeralContainerStatuses ([]ContainerStatus)

    原子:将在合并期间被替换

    此 Pod 中任何短暂容器的状态。Pod 中的每个短暂容器在此列表中应该最多有一个状态,并且所有状态都应该属于 Pod 中的容器。但是,这并没有强制执行。如果列表中存在不存在的容器的状态,或者列表具有重复的名称,则各种 Kubernetes 组件的行为未定义。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

    ContainerStatus 包含此容器当前状态的详细信息。

    • ephemeralContainerStatuses.allocatedResources (map[string]Quantity)

      AllocatedResources 表示节点为此容器分配的计算资源。Kubelet 在 pod 成功被允许进入后,并在成功允许所需的 pod 调整大小后,将此值设置为 Container.Resources.Requests。

    • ephemeralContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      补丁策略:在 key name 上合并

      映射:在合并期间将保留 key name 上的唯一值

      AllocatedResourcesStatus 表示分配给此 Pod 的各种资源的的状态。

      ResourceStatus 表示分配给 Pod 的单个资源的状态。

      • ephemeralContainerStatuses.allocatedResourcesStatus.name (string), required

        资源的名称。必须在 pod 内唯一,并且在非 DRA 资源的情况下,必须与 pod 规范中的资源之一匹配。对于 DRA 资源,该值必须为 "claim:<claim_name>/<request>"。当此状态报告关于容器时,“claim_name”和“request”必须与此容器的声明之一匹配。

      • ephemeralContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

        映射:在合并期间将保留 key resourceID 上的唯一值

        唯一资源健康状况列表。列表中的每个元素包含一个唯一的资源 ID 及其健康状况。至少,对于 Pod 的生命周期,资源 ID 必须唯一标识分配给 Node 上的 Pod 的资源。如果同一 Node 上的其他 Pod 报告具有相同资源 ID 的状态,则必须是它们共享的相同资源。有关特定格式,请参阅 ResourceID 类型定义在各种用例中的定义。

        ResourceHealth 表示资源的健康状况。这是 KEP https://kep.k8s.io/4680 的一部分。

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), required

          ResourceID 是资源的唯一标识符。有关更多信息,请参阅 ResourceID 类型。

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (string)

          资源健康状况。可以是以下之一:

          • Healthy:正常运行
          • Unhealthy:报告不健康。我们认为这是一个临时健康问题,因为我们今天没有机制来区分临时和永久问题。
          • Unknown:无法确定状态。例如,设备插件已取消注册,但尚未重新注册。

          将来我们可能希望引入 PermanentlyUnhealthy 状态。

    • ephemeralContainerStatuses.containerID (string)

      ContainerID 是容器的 ID,格式为 '<type>://<container_id>'。其中 type 是容器运行时标识符,由 CRI API 的 Version 调用返回(例如 "containerd")。

    • ephemeralContainerStatuses.image (string), required

      Image 是容器正在运行的容器镜像的名称。容器镜像可能与 PodSpec 中使用的镜像不匹配,因为它可能已由运行时解析。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/images

    • ephemeralContainerStatuses.imageID (string), required

      ImageID 是容器镜像的镜像 ID。镜像 ID 可能与 PodSpec 中使用的镜像的镜像 ID 不匹配,因为它可能已由运行时解析。

    • ephemeralContainerStatuses.lastState (ContainerState)

      LastTerminationState 包含容器的最后终止状态,以帮助调试容器崩溃和重启。如果容器仍在运行且 RestartCount 为 0,则此字段不会填充。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • ephemeralContainerStatuses.lastState.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • ephemeralContainerStatuses.lastState.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • ephemeralContainerStatuses.lastState.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • ephemeralContainerStatuses.lastState.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • ephemeralContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • ephemeralContainerStatuses.lastState.terminated.message (string)

          有关容器上次终止的消息

        • ephemeralContainerStatuses.lastState.terminated.reason (string)

          容器上次终止的(简短)原因

        • ephemeralContainerStatuses.lastState.terminated.signal (int32)

          容器上次终止时的信号

      • ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • ephemeralContainerStatuses.lastState.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • ephemeralContainerStatuses.lastState.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • ephemeralContainerStatuses.name (string), required

      Name 是一个 DNS_LABEL,表示容器的唯一名称。Pod 中的每个容器必须在所有容器类型中具有唯一的名称。无法更新。

    • ephemeralContainerStatuses.ready (boolean), required

      Ready 指定容器是否当前通过其就绪检查。该值将随着就绪探测的持续执行而更改。如果未指定任何就绪探测,则此字段默认在容器完全启动后为 true(请参阅 Started 字段)。

      该值通常用于确定容器是否准备好接受流量。

    • ephemeralContainerStatuses.resources (ResourceRequirements)

      Resources 表示在容器启动或成功调整大小后,已成功应用于正在运行的容器的计算资源请求和限制。

      ResourceRequirements 描述计算资源需求。

      • ephemeralContainerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间将保留 key name 上的唯一值

        Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

        此字段取决于 DynamicResourceAllocation 功能门。

        此字段是不可变的。它只能设置为容器。

        ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

        • ephemeralContainerStatuses.resources.claims.name (string), required

          Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

        • ephemeralContainerStatuses.resources.claims.request (string)

          Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

      • ephemeralContainerStatuses.resources.limits (map[string]Quantity)

        Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

      • ephemeralContainerStatuses.resources.requests (map[string]Quantity)

        Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • ephemeralContainerStatuses.restartCount (int32), required

      RestartCount 包含容器已重启的次数。Kubelet 努力始终增加该值,但有些情况下,由于节点重启,状态可能会丢失,然后该值可能会重置为 0。该值永远不会为负数。

    • ephemeralContainerStatuses.started (boolean)

      Started 指示容器是否已完成其 postStart 生命周期钩子并已通过其启动探测。初始化为 false,在启动探测被认为成功后变为 true。在容器重启时或如果 kubelet 暂时丢失状态时重置为 false。在两种情况下,启动探测将再次运行。始终为 true,当未定义启动探测并且容器正在运行并且已通过 postStart 生命周期钩子时。空值必须与 false 相同。

    • ephemeralContainerStatuses.state (ContainerState)

      State 包含有关容器当前状态的详细信息。

      ContainerState 包含容器的可能状态。其成员中只能指定一个。如果未指定任何成员,则默认值为 ContainerStateWaiting。

      • ephemeralContainerStatuses.state.running (ContainerStateRunning)

        有关正在运行的容器的详细信息

        ContainerStateRunning 是容器的运行状态。

        • ephemeralContainerStatuses.state.running.startedAt (Time)

          上次(重新)启动容器的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

      • ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)

        有关已终止容器的详细信息

        ContainerStateTerminated 是容器的终止状态。

        • ephemeralContainerStatuses.state.terminated.containerID (string)

          容器的 ID,格式为 '<type>://<container_id>'

        • ephemeralContainerStatuses.state.terminated.exitCode (int32), required

          容器上次终止时的退出状态

        • ephemeralContainerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • ephemeralContainerStatuses.state.terminated.finishedAt (Time)

          容器上次终止的时间

          Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

        • ephemeralContainerStatuses.state.terminated.message (string)

          有关容器上次终止的消息

        • ephemeralContainerStatuses.state.terminated.reason (string)

          容器上次终止的(简短)原因

        • ephemeralContainerStatuses.state.terminated.signal (int32)

          容器上次终止时的信号

      • ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)

        有关正在等待的容器的详细信息

        ContainerStateWaiting 是容器的等待状态。

        • ephemeralContainerStatuses.state.waiting.message (string)

          消息,说明容器尚未运行的原因。

        • ephemeralContainerStatuses.state.waiting.reason (string)

          容器尚未运行的(简短)原因。

    • ephemeralContainerStatuses.stopSignal (string)

      StopSignal 报告此容器的有效停止信号

      可能的枚举值

      • "SIGABRT"
      • "SIGALRM"
      • "SIGBUS"
      • "SIGCHLD"
      • "SIGCLD"
      • "SIGCONT"
      • "SIGFPE"
      • "SIGHUP"
      • "SIGILL"
      • "SIGINT"
      • "SIGIO"
      • "SIGIOT"
      • "SIGKILL"
      • "SIGPIPE"
      • "SIGPOLL"
      • "SIGPROF"
      • "SIGPWR"
      • "SIGQUIT"
      • "SIGRTMAX"
      • "SIGRTMAX-1"
      • "SIGRTMAX-10"
      • "SIGRTMAX-11"
      • "SIGRTMAX-12"
      • "SIGRTMAX-13"
      • "SIGRTMAX-14"
      • "SIGRTMAX-2"
      • "SIGRTMAX-3"
      • "SIGRTMAX-4"
      • "SIGRTMAX-5"
      • "SIGRTMAX-6"
      • "SIGRTMAX-7"
      • "SIGRTMAX-8"
      • "SIGRTMAX-9"
      • "SIGRTMIN"
      • "SIGRTMIN+1"
      • "SIGRTMIN+10"
      • "SIGRTMIN+11"
      • "SIGRTMIN+12"
      • "SIGRTMIN+13"
      • "SIGRTMIN+14"
      • "SIGRTMIN+15"
      • "SIGRTMIN+2"
      • "SIGRTMIN+3"
      • "SIGRTMIN+4"
      • "SIGRTMIN+5"
      • "SIGRTMIN+6"
      • "SIGRTMIN+7"
      • "SIGRTMIN+8"
      • "SIGRTMIN+9"
      • "SIGSEGV"
      • "SIGSTKFLT"
      • "SIGSTOP"
      • "SIGSYS"
      • "SIGTERM"
      • "SIGTRAP"
      • "SIGTSTP"
      • "SIGTTIN"
      • "SIGTTOU"
      • "SIGURG"
      • "SIGUSR1"
      • "SIGUSR2"
      • "SIGVTALRM"
      • "SIGWINCH"
      • "SIGXCPU"
      • "SIGXFSZ"
    • ephemeralContainerStatuses.user (ContainerUser)

      User 表示最初附加到容器中第一个进程的用户身份信息

      ContainerUser 表示用户身份信息

      • ephemeralContainerStatuses.user.linux (LinuxContainerUser)

        Linux 包含最初附加到 Linux 容器中第一个进程的用户身份信息。请注意,如果进程具有足够的权限,实际运行身份可能会更改。

        LinuxContainerUser 表示 Linux 容器中的用户身份信息

        • ephemeralContainerStatuses.user.linux.gid (int64), required

          GID 是最初附加到容器中第一个进程的主要 gid

        • ephemeralContainerStatuses.user.linux.uid (int64), required

          UID 是最初附加到容器中第一个进程的主要 uid

        • ephemeralContainerStatuses.user.linux.supplementalGroups ([]int64)

          原子:将在合并期间被替换

          SupplementalGroups 是最初附加到容器中第一个进程的辅助组。

    • ephemeralContainerStatuses.volumeMounts ([]VolumeMountStatus)

      Patch 策略:在 key mountPath 上合并*

      Map:在 key mountPath 上唯一的值将在合并期间保留*

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • ephemeralContainerStatuses.volumeMounts.mountPath (string), required

        MountPath 对应于原始 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.name (string), required

        Name 对应于原始 VolumeMount 的名称。

      • ephemeralContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必须设置为 Disabled、Enabled 或 unspecified(对于非只读挂载)。原始 VolumeMount 中的 IfPossible 值必须根据挂载结果转换为 Disabled 或 Enabled。

  • resourceClaimStatuses ([]PodResourceClaimStatus)

    补丁策略:retainKeys,在 key name 上合并

    映射:在合并期间将保留 key name 上的唯一值

    资源声明的状态。

    PodResourceClaimStatus 存储在 PodStatus 中,用于引用 ResourceClaimTemplate 的每个 PodResourceClaim。它存储了相应 ResourceClaim 的生成名称。

    • resourceClaimStatuses.name (string), required

      Name 唯一标识 Pod 中的此资源声明。这必须与 pod.spec.resourceClaims 中的条目匹配,这意味着该字符串必须是 DNS_LABEL。

    • resourceClaimStatuses.resourceClaimName (string)

      ResourceClaimName 是 Pod 命名空间中为 Pod 生成的 ResourceClaim 的名称。如果未设置此项,则生成 ResourceClaim 并非必要。在这种情况下,可以忽略 pod.spec.resourceClaims 条目。

  • extendedResourceClaimStatus (PodExtendedResourceClaimStatus)

    由 DRA 支持的扩展资源声明的状态。

    PodExtendedResourceClaimStatus 存储在 PodStatus 中,用于由 DRA 支持的扩展资源请求。它存储了调度器创建的特殊 ResourceClaim 的生成名称。

    • extendedResourceClaimStatus.requestMappings ([]ContainerExtendedResourceRequest), required

      原子:将在合并期间被替换

      RequestMappings 标识 <容器,由 DRA 支持的扩展资源> 到生成 ResourceClaim 中的设备请求的映射。

      ContainerExtendedResourceRequest 具有容器名称、扩展资源名称到设备请求名称的映射。

      • extendedResourceClaimStatus.requestMappings.containerName (string), required

        请求资源的容器名称。

      • extendedResourceClaimStatus.requestMappings.requestName (string), required

        与扩展资源对应的特殊 ResourceClaim 中的请求名称。

      • extendedResourceClaimStatus.requestMappings.resourceName (string), required

        在该容器中由 DRA 支持的扩展资源的名称。

    • extendedResourceClaimStatus.resourceClaimName (string), required

      ResourceClaimName 是 Pod 命名空间中为 Pod 生成的 ResourceClaim 的名称。

  • resize (string)

    Pod 的容器资源调整状态。如果没有待处理的资源调整,则为空。任何容器资源的更改都会自动将其设置为“Proposed”(提议)。已弃用:调整状态已移动到两个 Pod 条件 PodResizePending 和 PodResizeInProgress。PodResizePending 将跟踪已调整 spec,但 Kubelet 尚未分配资源的那些状态。PodResizeInProgress 将跟踪正在进行中的调整,并且应在已分配资源 != 已确认资源时存在。

  • allocatedResources (map[string]Quantity)

    AllocatedResources 是节点为此 Pod 分配的总请求量。如果未设置 Pod 级别的请求,这将是 Pod 中容器汇总的总请求量。

  • resources (ResourceRequirements)

    Resources 表示应用于 Pod 级别的计算资源请求和限制,如果 PodSpec.Resources 中设置了 Pod 级别的请求或限制。

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      映射:在合并期间将保留 key name 上的唯一值

      Claims 列出了 spec.resourceClaims 中定义的用于此容器的资源名称。

      此字段取决于 DynamicResourceAllocation 功能门。

      此字段是不可变的。它只能设置为容器。

      ResourceClaim 引用 PodSpec.ResourceClaims 中的一个条目。

      • resources.claims.name (string), required

        Name 必须与 Pod 的 pod.spec.resourceClaims 中一个条目的名称匹配。这使得该资源在容器内部可用。

      • resources.claims.request (string)

        Request 是在引用的 claim 中为请求选择的名称。如果为空,则使 claim 中的所有内容可用,否则仅使此请求的结果可用。

    • resources.limits (map[string]Quantity)

      Limits 描述允许的最大计算资源量。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests 描述所需的最小计算资源量。如果为容器省略 Requests,则如果明确指定 Limits,则默认为 Limits,否则默认为实现定义的 value。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • observedGeneration (int64)

    如果设置,这表示 Pod 状态基于的 .metadata.generation。必须启用 PodObservedGenerationTracking 功能门才能使用此字段。

PodList

PodList 是 Pod 列表。


操作


get 读取指定的 Pod

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

401: 未授权

get 读取指定 Pod 的临时容器

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

401: 未授权

get 读取指定 Pod 的日志

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/log

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • container (in query): string

    要流式传输日志的容器。如果 Pod 中只有一个容器,则默认为该容器。

  • follow (in query): boolean

    跟踪 Pod 的日志流。默认为 false。

  • insecureSkipTLSVerifyBackend (in query): boolean

    insecureSkipTLSVerifyBackend 表示 apiserver 不应确认其连接的后端的服务证书的有效性。这将使 apiserver 与后端的 HTTPS 连接不安全。这意味着 apiserver 无法验证接收到的日志数据来自真实的 kubelet。如果 kubelet 配置为验证 apiserver 的 TLS 凭据,则并不意味着连接到真实的 kubelet 容易受到中间人攻击(例如,攻击者无法拦截来自真实的 kubelet 的实际日志数据)。

  • limitBytes (in query): integer

    如果设置,则从服务器读取的字节数,用于终止日志输出。这可能不会显示完整的最终日志行,并且可能会返回略多或略少于指定的限制。

  • pretty (在查询中): string

    pretty

  • previous (in query): boolean

    返回先前终止的容器日志。默认为 false。

  • sinceSeconds (in query): integer

    当前时间之前的相对时间(秒),用于显示日志。如果此值早于 Pod 启动的时间,则仅返回 Pod 启动以来的日志。如果此值在未来,则不会返回任何日志。只能指定 sinceSeconds 或 sinceTime 中的一个。

  • stream (in query): string

    指定要返回给客户端的容器日志流。可接受的值为“All”(全部)、“Stdout”(标准输出)和“Stderr”(标准错误)。如果未指定,则使用“All”(全部),并以交错方式返回标准输出和标准错误。请注意,当指定“TailLines”(尾部行数)时,只能将“Stream”(流)设置为 nil 或“All”(全部)。

  • tailLines (in query): integer

    如果设置,则显示日志末尾的行数。如果未指定,则从容器创建或 sinceSeconds 或 sinceTime 开始显示日志。请注意,当指定“TailLines”(尾部行数)时,只能将“Stream”(流)设置为 nil 或“All”(全部)。

  • timestamps (in query): boolean

    如果为 true,则在每行日志输出的开头添加 RFC3339 或 RFC3339Nano 时间戳。默认为 false。

响应

200 (string): OK

401: 未授权

get 读取指定 Pod 的调整大小信息

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/resize

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

401: 未授权

get 读取指定 Pod 的状态

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/status

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

401: 未授权

list 列出或监视 Pod 类型的对象

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods

Parameters

响应

200 (PodList): OK

401: 未授权

list 列出或监视 Pod 类型的对象

HTTP 请求

GET /api/v1/pods

Parameters

响应

200 (PodList): OK

401: 未授权

create 创建 Pod

HTTP 请求

POST /api/v1/namespaces/{namespace}/pods

Parameters

响应

200 (Pod): OK

201 (Pod): Created

202 (Pod): Accepted

401: 未授权

update 替换指定的 Pod

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Pod, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

update 替换指定 Pod 的临时容器

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Pod, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

update 替换指定 Pod 的调整大小信息

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/resize

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Pod, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

update 替换指定 Pod 的状态

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/status

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Pod, required

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

patch 部分更新指定的 Pod

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

patch 部分更新指定 Pod 的临时容器

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

patch 部分更新指定 Pod 的调整大小信息

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/resize

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

patch 部分更新指定 Pod 的状态

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/status

Parameters

  • name (在路径中): string, 必需

    Pod 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (Pod): OK

201 (Pod): Created

401: 未授权

delete 删除 Pod

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/pods/{name}

Parameters

响应

200 (Pod): OK

202 (Pod): Accepted

401: 未授权

deletecollection 删除 Pod 集合

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/pods

Parameters

响应

200 (Status): 确定

401: 未授权

本页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改时间为 2025 年 12 月 21 日下午 5:37 PST:更新 v1.35 资源文档 (85b57273c5)