Pod

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

apiVersion: v1

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

Pod

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


PodSpec

PodSpec 是对 Pod 的描述。


容器

  • containers ([]Container),必需

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

  • initContainers ([]Container)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

    属于 Pod 的初始化容器列表。初始化容器在普通容器启动之前按顺序执行。如果任何初始化容器失败,Pod 将被视为失败,并根据其 restartPolicy 进行处理。初始化容器或普通容器的名称在所有容器中必须是唯一的。初始化容器不能有生命周期动作、就绪探针、存活探针或启动探针。初始化容器的 resourceRequirements 在调度时会考虑进去,方法是找到每种资源类型的最高请求/限制,然后使用该值的最大值或普通容器的总和。对初始化容器应用限制的方式也类似。初始化容器当前不能添加或删除。不能更新。更多信息: https://kubernetes.ac.cn/docs/concepts/workloads/pods/init-containers/

  • ephemeralContainers ([]EphemeralContainer)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

    在此 Pod 中运行的临时容器列表。临时容器可以在现有 Pod 中运行,以执行用户启动的操作,例如调试。在创建 Pod 时不能指定此列表,也不能通过更新 Pod 规范来修改此列表。为了向现有 Pod 添加临时容器,请使用 Pod 的 ephemeralcontainers 子资源。

  • imagePullSecrets ([]LocalObjectReference)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

  • enableServiceLinks (boolean)

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

  • os (PodOS)

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

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

    如果 OS 字段设置为 windows,则必须取消设置以下字段: - spec.hostPID - spec.hostIPC - spec.hostUsers - 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 的 OS 参数。

Volume

调度

  • nodeSelector (map[string]string)

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

  • nodeName (string)

    NodeName 指示此 Pod 调度到哪个节点。如果为空,则此 Pod 将成为 schedulerName 中定义的调度器调度的候选对象。设置此字段后,此节点的 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 容忍任何使用匹配运算符 与三元组 匹配的污点。

    • tolerations.key (string)

      Key 是此容忍度适用的污点键。为空表示匹配所有污点键。如果键为空,运算符必须是 Exists;这种组合意味着匹配所有值和所有键。

    • tolerations.operator (string)

      Operator 表示键与值之间的关系。有效运算符为 Exists 和 Equal。默认为 Equal。Exists 等同于值的通配符,以便 Pod 可以容忍特定类别的所有污点。

    • tolerations.value (string)

      Value 是此容忍度匹配的污点值。如果运算符为 Exists,则值应为空,否则仅为常规字符串。

    • tolerations.effect (string)

      Effect 指示要匹配的污点效果。为空表示匹配所有污点效果。指定时,允许的值为 NoSchedule、PreferNoSchedule 和 NoExecute。

    • tolerations.tolerationSeconds (int64)

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

  • schedulerName (string)

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

  • runtimeClassName (string)

    RuntimeClassName 指的是 node.k8s.io 组中的 RuntimeClass 对象,该对象应用于运行此 Pod。如果没有与命名类匹配的 RuntimeClass 资源,则不会运行 Pod。如果未设置或为空,将使用“传统” 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。

  • topologySpreadConstraints ([]TopologySpreadConstraint)

    Patch 策略:基于键 topologyKey 合并

    Map:合并时将保留键 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 是节点标签的键。具有此键和相同值的标签的节点被视为属于同一拓扑。我们将每个 视为一个“桶”,并尝试在每个桶中放置均衡数量的 Pod。我们将域定义为拓扑的特定实例。此外,我们将符合条件的域定义为其节点满足 nodeAffinityPolicy 和 nodeTaintsPolicy 要求的域。例如,如果 TopologyKey 是 "kubernetes.io/hostname",则每个节点是该拓扑的一个域。如果 TopologyKey 是 "topology.kubernetes.io/zone",则每个区域是该拓扑的一个域。此字段为必需字段。

    • topologySpreadConstraints.whenUnsatisfiable (string),必需

      WhenUnsatisfiable 指示如果 Pod 不满足分布约束如何处理。 - DoNotSchedule(默认)告诉调度器不要调度它。 - ScheduleAnyway 告诉调度器将 Pod 调度到任何位置,但优先考虑有助于减少偏差的拓扑。当且仅当该 Pod 的每个可能的节点分配都违反了某个拓扑上的“MaxSkew”时,该约束才被视为对于传入的 Pod 是“不可满足的”。例如,在一个 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)。换句话说,集群仍然可能不平衡,但调度器不会使其不平衡。此字段为必需字段。

    • topologySpreadConstraints.labelSelector (LabelSelector)

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

    • topologySpreadConstraints.matchLabelKeys ([]string)

      原子性:合并时将被替换

      MatchLabelKeys 是一组 Pod 标签键,用于选择将计算分布的 Pod。这些键用于查找传入 Pod 标签中的值,这些键值标签与 labelSelector 进行 AND 运算,以选择将计算传入 Pod 分布的现有 Pod 组。禁止在 MatchLabelKeys 和 LabelSelector 中存在相同的键。未设置 LabelSelector 时不能设置 MatchLabelKeys。传入 Pod 标签中不存在的键将被忽略。null 或空列表意味着仅与 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 策略。

    • topologySpreadConstraints.nodeTaintsPolicy (string)

      NodeTaintsPolicy 指示在计算 Pod 拓扑分布偏差时,我们将如何对待节点污点。选项有: - Honor:包含没有污点的节点以及传入 Pod 具有容忍度的受污染节点。 - Ignore:忽略节点污点。包含所有节点。

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

  • overhead (map[string]Quantity)

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

生命周期

  • restartPolicy (string)

    Pod 内所有容器的重启策略。取值为 Always、OnFailure、Never 之一。在某些上下文中,可能只允许其中一部分值。默认为 Always。更多信息: https://kubernetes.ac.cn/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

  • terminationGracePeriodSeconds (int64)

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

  • activeDeadlineSeconds (int64)

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

  • readinessGates ([]PodReadinessGate)

    原子性:合并时将被替换

    如果指定,将评估所有就绪门控以判断 Pod 是否就绪。当所有容器都就绪且就绪门控中指定的所有条件的 status 等于 "True" 时,Pod 就绪。更多信息: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates

    PodReadinessGate 包含对 Pod 条件的引用

    • readinessGates.conditionType (string),必需

      ConditionType 指 Pod 条件列表中的一个匹配类型的条件。

主机名和名称解析

  • hostname (string)

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

  • setHostnameAsFQDN (boolean)

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

  • subdomain (string)

    如果指定,则 Pod 的完全限定主机名将为 "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>"。如果未指定,则 Pod 不会具有域名。

  • hostAliases ([]HostAlias)

    Patch 策略:基于键 ip 合并

    Map:合并时将保留键 ip 唯一的条目

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

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

    • hostAliases.ip (string),必需

      hosts 文件条目的 IP 地址。

    • hostAliases.hostnames ([]string)

      原子性:合并时将被替换

      上述 IP 地址对应的主机名。

  • dnsConfig (PodDNSConfig)

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

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

    • dnsConfig.nameservers ([]string)

      原子性:合并时将被替换

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

    • 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'。

主机命名空间

  • hostNetwork (boolean)

    为此 Pod 请求主机网络。使用主机的网络命名空间。如果设置了此选项,则必须指定将使用的端口。默认为 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 Profile。有效选项有: Localhost - 预先加载在节点上的配置文件。 RuntimeDefault - 容器运行时的默认配置文件。 Unconfined - 不应用 AppArmor 强制。

      • securityContext.appArmorProfile.localhostProfile (string)

        localhostProfile 指示应使用加载到节点上的配置文件。该配置文件必须事先在节点上配置才能工作。必须与配置文件的加载名称匹配。仅当 type 为 "Localhost" 时必须设置此字段。

    • securityContext.fsGroup (int64)

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

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

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

    • securityContext.fsGroupChangePolicy (string)

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

    • 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 设置。只能设置一个 profile 源。

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

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

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

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示应该使用节点上文件中定义的配置文件。该配置文件必须事先在节点上配置才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的递减路径。仅当 type 为 "Localhost" 时必须设置此字段。对于任何其他类型都不能设置。

    • securityContext.seLinuxChangePolicy (string)

      seLinuxChangePolicy 定义了如何将容器的 SELinux 标签应用于 Pod 使用的所有卷。它对不支持 SELinux 的节点或不支持 SELinux 的卷没有影响。有效值为 "MountOption" 和 "Recursive"。

      "Recursive" 意味着容器运行时将对所有 Pod 卷上的所有文件重新标记。这对于大卷可能很慢,但允许在同一节点上混合使用共享同一卷的特权和非特权 Pod。

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

      如果未指定且 SELinuxMount 特性门控已启用,则使用 "MountOption"。如果未指定且 SELinuxMount 特性门控已禁用,则 "MountOption" 用于 ReadWriteOncePod 卷,而 "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 级别标签。

      • securityContext.seLinuxOptions.role (string)

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

      • securityContext.seLinuxOptions.type (string)

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

      • securityContext.seLinuxOptions.user (string)

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

    • securityContext.supplementalGroups ([]int64)

      原子性:合并时将被替换

      除了容器的主 GID 和 fsGroup(如果指定)外,还应用于在每个容器中运行的第一个进程的组列表。如果 SupplementalGroupsPolicy 特性已启用,则 supplementalGroupsPolicy 字段决定这些组是附加的还是替代容器镜像中定义的任何组成员资格。如果未指定,则不添加额外的组,但根据 supplementalGroupsPolicy 字段,容器镜像中定义的组成员资格仍可能被使用。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

    • securityContext.supplementalGroupsPolicy (string)

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

    • securityContext.sysctls ([]Sysctl)

      原子性:合并时将被替换

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

      Sysctl 定义要设置的内核参数

      • securityContext.sysctls.name (string),必需

        要设置的属性名称

      • securityContext.sysctls.value (string),必需

        要设置的属性值

    • 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 凭据规范内容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

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

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 决定容器是否应作为“主机进程”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

        要在 Windows 中运行容器进程入口点的用户名。如果未指定,则默认为镜像元数据中指定的用户。也可以在 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" 资源名称指定 Requests 和 Limits。不支持 ResourceClaims。

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

    这是一个 alpha 字段,需要启用 PodLevelResources 特性门控。

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      Map:合并时将保留键名为唯一的条目

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

      这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

      • resources.claims.name (string),必需

        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;否则,默认为实现定义的值。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • resourceClaims ([]PodResourceClaim)

    Patch 策略:retainKeys,基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

    这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

    此字段是不可变的。

    *PodResourceClaim 精确引用一个 ResourceClaim,可以直接引用,也可以通过命名一个 ResourceClaimTemplate 来引用,该模板随后会变成 Pod 的 ResourceClaim。

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

    • resourceClaims.name (string),必需

      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 后,控制平面不会对相应的 ResourceClaim 进行任何更改。

      ResourceClaimName 和 ResourceClaimTemplateName 中必须且只能设置一个。

  • schedulingGates ([]PodSchedulingGate)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

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

    PodSchedulingGate 与 Pod 相关联,用于守护其调度。

    • schedulingGates.name (string),必需

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

已弃用

  • serviceAccount (string)

    DeprecatedServiceAccount 是 ServiceAccountName 的已弃用别名。已弃用:请改用 serviceAccountName。

容器

您希望在 Pod 中运行的单个应用程序容器。


  • name (string),必需

    指定为 DNS_LABEL 的容器名称。Pod 中的每个容器必须具有唯一的名称 (DNS_LABEL)。不可更新。

镜像

入口点

  • 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 ([]ContainerPort)

    Patch 策略:按键 `containerPort` 合并

    Map:合并时将保留键 `containerPort, protocol` 上的唯一值

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

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

    • ports.containerPort (int32),必需

      要在 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"。

环境变量

  • env ([]EnvVar)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

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

    • env.name (string),必需

      环境变量的名称。必须是一个 C_IDENTIFIER。

    • env.value (string)

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

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 中的一个键。

        选择 ConfigMap 中的一个键。

        • env.valueFrom.configMapKeyRef.key (string),必需

          要选择的键。

        • 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.resourceFieldRef (ResourceFieldSelector)

        选择容器的一个资源:目前仅支持资源 limits 和 requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

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

        SecretKeySelector 选择 Secret 的一个键。

        • env.valueFrom.secretKeyRef.key (string),必需

          要从 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)

    原子性:合并时将被替换

    用于填充容器中环境变量的来源列表。来源中定义的键必须是 C_IDENTIFIER。容器启动时,所有无效的键都将报告为事件。当多个来源中存在同一个键时,最后一个来源关联的值将具有优先权。具有重复键的 Env 定义的值将具有优先权。不可更新。

    EnvFromSource 表示一组 ConfigMaps 或 Secrets 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      要从中选择的 ConfigMap

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

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

    • envFrom.prefix (string)

      要添加到每个环境变量名称前的可选文本。必须是一个 C_IDENTIFIER。

    • envFrom.secretRef (SecretEnvSource)

      要从中选择的 Secret

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

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

Volume

  • volumeMounts ([]VolumeMount)

    Patch 策略:按键 `mountPath` 合并

    Map:合并时将保留键 mountPath 上的唯一值

    要挂载到容器文件系统中的 Pod 卷。不可更新。

    VolumeMount 描述了卷在容器内的挂载。

    • volumeMounts.mountPath (string),必需

      卷应在容器中挂载的路径。不能包含 ":"。

    • volumeMounts.name (string),必需

      这必须与 Volume 的 Name 匹配。

    • volumeMounts.mountPropagation (string)

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

    • 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 策略:按键 `devicePath` 合并

    Map:合并时将保留键 devicePath 上的唯一值

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

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

    • volumeDevices.devicePath (string),必需

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

    • volumeDevices.name (string),必需

      name 必须与 Pod 中 persistentVolumeClaim 的名称匹配

资源

  • resources (ResourceRequirements)

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

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      Map:合并时将保留键名为唯一的条目

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

      这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

      • resources.claims.name (string),必需

        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;否则,默认为实现定义的值。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

  • resizePolicy ([]ContainerResizePolicy)

    原子性:合并时将被替换

    容器的资源调整策略。

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

    • resizePolicy.resourceName (string),必需

      此资源调整策略适用的资源名称。支持的值:cpu, memory。

    • resizePolicy.restartPolicy (string),必需

      当指定资源被调整时应用的重启策略。如果未指定,默认为 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 请求或管理事件(例如 liveness/startup 探针失败、抢占、资源争用等)而终止之前立即调用。如果容器崩溃或退出,则不调用处理程序。Pod 的终止宽限期倒计时在 PreStop 钩子执行之前开始。无论处理程序的结果如何,容器最终都会在 Pod 的终止宽限期内终止(除非被 finalizer 延迟)。容器的其他管理将阻塞,直到钩子完成或达到终止宽限期。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

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

  • terminationMessagePath (string)

    可选:要将容器终止消息写入的文件在容器文件系统中的挂载路径。写入的消息应为简短的最终状态,例如断言失败消息。如果大于 4096 字节,将被节点截断。所有容器的总消息长度将被限制为 12kb。默认为 /dev/termination-log。不可更新。

  • terminationMessagePolicy (string)

    指示如何填充终止消息。File 将使用 terminationMessagePath 的内容填充容器状态消息(无论成功还是失败)。如果终止消息文件为空且容器退出时发生错误,FallbackToLogsOnError 将使用容器日志输出的最后一部分。日志输出限制为 2048 字节或 80 行(以较小者为准)。默认为 File。不可更新。

  • 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 中单个容器的重启行为。此字段只能为 init 容器设置,并且唯一允许的值是 "Always"。对于非 init 容器或未指定此字段时,重启行为由 Pod 的重启策略和容器类型定义。为 init 容器设置 RestartPolicy 为 "Always" 将产生以下效果:此 init 容器将在退出时不断重新启动,直到所有常规容器终止。一旦所有常规容器完成,所有具有 restartPolicy "Always" 的 init 容器将被关闭。此生命周期与正常 init 容器不同,通常被称为“sidecar”容器。尽管此 init 容器仍然在 init 容器序列中启动,但它不会等待容器完成,而是立即启动下一个 init 容器,或在任何 startupProbe 成功完成后立即启动。不可更新。

安全上下文

  • 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 Profile。有效选项有: Localhost - 预先加载在节点上的配置文件。 RuntimeDefault - 容器运行时的默认配置文件。 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 mount 类型。默认值为 Default,它使用容器运行时对只读路径和 masked 路径的默认设置。这需要启用 ProcMountType 功能标志。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.privileged (boolean)

      在特权模式下运行容器。在特权容器中运行的进程实际上等同于主机上的 root 用户。默认为 false。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有只读的根文件系统。默认为 false。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.runAsUser (int64)

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

    • securityContext.runAsNonRoot (boolean)

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

    • securityContext.runAsGroup (int64)

      用于运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 PodSecurityContext 中设置。如果在 SecurityContextPodSecurityContext 中都设置了,则 SecurityContext 中指定的值优先。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.seLinuxOptions (SELinuxOptions)

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

      SELinuxOptions 是要应用于容器的标签

      • securityContext.seLinuxOptions.level (string)

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

      • securityContext.seLinuxOptions.role (string)

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

      • securityContext.seLinuxOptions.type (string)

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

      • securityContext.seLinuxOptions.user (string)

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

    • securityContext.seccompProfile (SeccompProfile)

      此容器使用的 seccomp 选项。如果在 Pod 和容器级别都提供了 seccomp 选项,则容器级别的选项会覆盖 Pod 级别的选项。请注意,当 spec.os.namewindows 时,不能设置此字段。

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

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

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

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

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示应该使用节点上文件中定义的配置文件。该配置文件必须事先在节点上配置才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的递减路径。仅当 type 为 "Localhost" 时必须设置此字段。对于任何其他类型都不能设置。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      应用于所有容器的 Windows 特定设置。如果未指定,将使用 PodSecurityContext 中的选项。如果在 SecurityContextPodSecurityContext 中都设置了,则 SecurityContext 中指定的值优先。请注意,当 spec.os.namelinux 时,不能设置此字段。

      WindowsSecurityContextOptions 包含 Windows 特有选项和凭据。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 内嵌 GMSACredentialSpecName 字段指定的 GMSA 凭据规范内容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

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

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 决定容器是否应作为“主机进程”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

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

调试

  • stdin (boolean)

    此容器是否应在容器运行时中为标准输入 (stdin) 分配缓冲区。如果未设置此项,容器中对标准输入的读取将始终导致 EOF。默认为 false

  • stdinOnce (boolean)

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

  • tty (boolean)

    此容器是否应为其自身分配一个 TTY,这还需要 stdintrue。默认为 false

临时容器

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

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


  • name (string),必需

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

  • targetContainerName (string)

    如果设置,这是此临时容器所针对的来自 PodSpec 的容器名称。临时容器将在此容器的命名空间(IPC、PID 等)中运行。如果未设置,则临时容器使用在 Pod spec 中配置的命名空间。

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

镜像

入口点

  • command ([]string)

    原子性:合并时将被替换

    入口点 (Entrypoint) 数组。不在 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)

    原子性:合并时将被替换

    入口点参数 (Arguments)。如果未提供此项,则使用镜像的 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)

    Patch 策略:基于键 name 合并

    Map:合并时将保留键名为唯一的条目

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

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

    • env.name (string),必需

      环境变量的名称。必须是一个 C_IDENTIFIER。

    • env.value (string)

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

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 中的一个键。

        选择 ConfigMap 中的一个键。

        • env.valueFrom.configMapKeyRef.key (string),必需

          要选择的键。

        • 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.resourceFieldRef (ResourceFieldSelector)

        选择容器的一个资源:目前仅支持资源 limits 和 requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

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

        SecretKeySelector 选择 Secret 的一个键。

        • env.valueFrom.secretKeyRef.key (string),必需

          要从 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)

    原子性:合并时将被替换

    用于填充容器中环境变量的来源列表。来源中定义的键必须是 C_IDENTIFIER。容器启动时,所有无效的键都将报告为事件。当多个来源中存在同一个键时,最后一个来源关联的值将具有优先权。具有重复键的 Env 定义的值将具有优先权。不可更新。

    EnvFromSource 表示一组 ConfigMaps 或 Secrets 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      要从中选择的 ConfigMap

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

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

    • envFrom.prefix (string)

      要添加到每个环境变量名称前的可选文本。必须是一个 C_IDENTIFIER。

    • envFrom.secretRef (SecretEnvSource)

      要从中选择的 Secret

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

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

Volume

  • volumeMounts ([]VolumeMount)

    Patch 策略:按键 `mountPath` 合并

    Map:合并时将保留键 mountPath 上的唯一值

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

    VolumeMount 描述了卷在容器内的挂载。

    • volumeMounts.mountPath (string),必需

      卷应在容器中挂载的路径。不能包含 ":"。

    • volumeMounts.name (string),必需

      这必须与 Volume 的 Name 匹配。

    • volumeMounts.mountPropagation (string)

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

    • 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 策略:按键 `devicePath` 合并

    Map:合并时将保留键 devicePath 上的唯一值

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

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

    • volumeDevices.devicePath (string),必需

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

    • volumeDevices.name (string),必需

      name 必须与 Pod 中 persistentVolumeClaim 的名称匹配

资源

  • resizePolicy ([]ContainerResizePolicy)

    原子性:合并时将被替换

    容器的资源调整策略。

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

    • resizePolicy.resourceName (string),必需

      此资源调整策略适用的资源名称。支持的值:cpu, memory。

    • resizePolicy.restartPolicy (string),必需

      当指定资源被调整时应用的重启策略。如果未指定,默认为 NotRequired。

生命周期

  • terminationMessagePath (string)

    可选:要将容器终止消息写入的文件在容器文件系统中的挂载路径。写入的消息应为简短的最终状态,例如断言失败消息。如果大于 4096 字节,将被节点截断。所有容器的总消息长度将被限制为 12kb。默认为 /dev/termination-log。不可更新。

  • terminationMessagePolicy (string)

    指示如何填充终止消息。File 将使用 terminationMessagePath 的内容填充容器状态消息(无论成功还是失败)。如果终止消息文件为空且容器退出时发生错误,FallbackToLogsOnError 将使用容器日志输出的最后一部分。日志输出限制为 2048 字节或 80 行(以较小者为准)。默认为 File。不可更新。

  • restartPolicy (string)

    容器的重启策略,用于管理 Pod 中每个容器的重启行为。这只能为 init 容器设置。不能在临时容器上设置此字段。

调试

  • stdin (boolean)

    此容器是否应在容器运行时中为标准输入 (stdin) 分配缓冲区。如果未设置此项,容器中对标准输入的读取将始终导致 EOF。默认为 false

  • stdinOnce (boolean)

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

  • tty (boolean)

    此容器是否应为其自身分配一个 TTY,这还需要 stdintrue。默认为 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 Profile。有效选项有: Localhost - 预先加载在节点上的配置文件。 RuntimeDefault - 容器运行时的默认配置文件。 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 mount 类型。默认值为 Default,它使用容器运行时对只读路径和 masked 路径的默认设置。这需要启用 ProcMountType 功能标志。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.privileged (boolean)

      在特权模式下运行容器。在特权容器中运行的进程实际上等同于主机上的 root 用户。默认为 false。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.readOnlyRootFilesystem (boolean)

      此容器是否具有只读的根文件系统。默认为 false。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.runAsUser (int64)

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

    • securityContext.runAsNonRoot (boolean)

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

    • securityContext.runAsGroup (int64)

      用于运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 PodSecurityContext 中设置。如果在 SecurityContextPodSecurityContext 中都设置了,则 SecurityContext 中指定的值优先。请注意,当 spec.os.namewindows 时,不能设置此字段。

    • securityContext.seLinuxOptions (SELinuxOptions)

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

      SELinuxOptions 是要应用于容器的标签

      • securityContext.seLinuxOptions.level (string)

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

      • securityContext.seLinuxOptions.role (string)

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

      • securityContext.seLinuxOptions.type (string)

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

      • securityContext.seLinuxOptions.user (string)

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

    • securityContext.seccompProfile (SeccompProfile)

      此容器使用的 seccomp 选项。如果在 Pod 和容器级别都提供了 seccomp 选项,则容器级别的选项会覆盖 Pod 级别的选项。请注意,当 spec.os.namewindows 时,不能设置此字段。

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

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

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

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

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile 指示应该使用节点上文件中定义的配置文件。该配置文件必须事先在节点上配置才能工作。必须是相对于 kubelet 配置的 seccomp profile 位置的递减路径。仅当 type 为 "Localhost" 时必须设置此字段。对于任何其他类型都不能设置。

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      应用于所有容器的 Windows 特定设置。如果未指定,将使用 PodSecurityContext 中的选项。如果在 SecurityContextPodSecurityContext 中都设置了,则 SecurityContext 中指定的值优先。请注意,当 spec.os.namelinux 时,不能设置此字段。

      WindowsSecurityContextOptions 包含 Windows 特有选项和凭据。

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec 是 GMSA 准入 webhook (https://github.com/kubernetes-sigs/windows-gmsa) 内嵌 GMSACredentialSpecName 字段指定的 GMSA 凭据规范内容的位置。

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

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

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess 决定容器是否应作为“主机进程”容器运行。Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许混合使用 HostProcess 容器和非 HostProcess 容器)。此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。

      • securityContext.windowsOptions.runAsUserName (string)

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

不允许

  • ports ([]ContainerPort)

    Patch 策略:按键 `containerPort` 合并

    Map:合并时将保留键 `containerPort, protocol` 上的唯一值

    临时容器不允许设置端口。

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

    • ports.containerPort (int32),必需

      要在 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"。

  • resources (ResourceRequirements)

    临时容器不允许设置资源限制。临时容器使用已分配给 Pod 的备用资源。

    ResourceRequirements 描述计算资源需求。

    • resources.claims ([]ResourceClaim)

      Map:合并时将保留键名为唯一的条目

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

      这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

      • resources.claims.name (string),必需

        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;否则,默认为实现定义的值。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 请求或管理事件(例如 liveness/startup 探针失败、抢占、资源争用等)而终止之前立即调用。如果容器崩溃或退出,则不调用处理程序。Pod 的终止宽限期倒计时在 PreStop 钩子执行之前开始。无论处理程序的结果如何,容器最终都会在 Pod 的终止宽限期内终止(除非被 finalizer 延迟)。容器的其他管理将阻塞,直到钩子完成或达到终止宽限期。更多信息:https://kubernetes.ac.cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.stopSignal (string)

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

  • livenessProbe (Probe)

    临时容器不允许设置探针。

  • readinessProbe (Probe)

    临时容器不允许设置探针。

  • startupProbe (Probe)

    临时容器不允许设置探针。

生命周期处理程序

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), required

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

      IntOrString 是一种可以容纳 int32 或 string 的类型。在 JSON 或 YAML 编码和解码时,它会生成或消费内部类型。这使得您可以拥有一个可以接受名称或编号的 JSON 字段。

    • httpGet.host (string)

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

    • httpGet.httpHeaders ([]HTTPHeader)

      原子性:合并时将被替换

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

      HTTPHeader 描述了要在 HTTP 探针中使用的自定义头部

      • httpGet.httpHeaders.name (string), required

        头部字段名称。输出时将规范化此名称,因此大小写不同的名称将被理解为同一个头部。

      • httpGet.httpHeaders.value (string), required

        头部字段值

    • httpGet.path (string)

      在 HTTP 服务器上访问的路径。

    • httpGet.scheme (string)

      连接到主机使用的方案(协议)。默认为 HTTP。

  • sleep (SleepAction)

    Sleep 表示容器应休眠的时长。

    SleepAction 描述了一种“休眠”的操作。

    • sleep.seconds (int64), required

      Seconds 是休眠的秒数。

  • tcpSocket (TCPSocketAction)

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

    TCPSocketAction 描述基于打开一个 socket 的操作

    • tcpSocket.port (IntOrString), required

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

      IntOrString 是一种可以容纳 int32 或 string 的类型。在 JSON 或 YAML 编码和解码时,它会生成或消费内部类型。这使得您可以拥有一个可以接受名称或编号的 JSON 字段。

    • tcpSocket.host (string)

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

节点亲和性

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)

    原子性:合并时将被替换

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

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

    • preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), required

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

      一个 null 或空的节点选择器项不匹配任何对象。它们的条件是按 AND 逻辑组合的。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的子集。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)

        原子性:合并时将被替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)

        原子性:合并时将被替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

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

  • requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)

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

    节点选择器表示在一个节点集上执行一个或多个标签查询结果的并集;也就是说,它表示由节点选择器项表示的选择器的 OR 逻辑组合。

    • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm), required

      原子性:合并时将被替换

      必需。节点选择器项列表。各项是按 OR 逻辑组合的。

      一个 null 或空的节点选择器项不匹配任何对象。它们的条件是按 AND 逻辑组合的。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的子集。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        原子性:合并时将被替换

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

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        原子性:合并时将被替换

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

Pod 亲和性

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子性:合并时将被替换

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

    每个节点上的所有匹配的 WeightedPodAffinityTerm 字段的权重将被相加,以找到最优选的节点。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), required

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

      定义一组 Pod(即,相对于给定命名空间(们)匹配 labelSelector 的 Pod),此 Pod 应与这些 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 标签的值与该组 Pod 中任何 Pod 运行的任何节点上的相应标签值匹配。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), required

        此 Pod 应与指定命名空间中匹配 labelSelector 的 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 topologyKey 标签的值与任何选定 Pod 运行的任何节点上的相应标签值匹配。不允许使用空的 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 (反) 亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为空。禁止在 matchLabelKeys 和 labelSelector 中同时存在相同的键。此外,当未设置 labelSelector 时,不能设置 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子性:合并时将被替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        对该项适用的命名空间集合的标签查询。该项适用于由本字段选择的命名空间和 namespaces 字段中列出的命名空间的并集。null 选择器和 null 或空的 namespaces 列表表示“此 Pod 的命名空间”。空选择器 ({}) 匹配所有命名空间。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子性:合并时将被替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

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

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子性:合并时将被替换

    如果调度时无法满足此字段指定的亲和性要求,Pod 将不会调度到该节点上。如果在 Pod 执行期间的某个时间点(例如,由于 Pod 标签更新)此字段指定的亲和性要求不再满足,系统 *可能* 会或 *可能不会* 尝试最终将 Pod 从其节点中驱逐。当存在多个元素时,与每个 podAffinityTerm 对应的节点列表会进行交集计算,即必须满足所有项。

    定义一组 Pod(即,相对于给定命名空间(们)匹配 labelSelector 的 Pod),此 Pod 应与这些 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 标签的值与该组 Pod 中任何 Pod 运行的任何节点上的相应标签值匹配。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), required

      此 Pod 应与指定命名空间中匹配 labelSelector 的 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 topologyKey 标签的值与任何选定 Pod 运行的任何节点上的相应标签值匹配。不允许使用空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      对一组资源(此处指 Pod)的标签查询。如果为 null,则此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子性:合并时将被替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子性:合并时将被替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      对该项适用的命名空间集合的标签查询。该项适用于由本字段选择的命名空间和 namespaces 字段中列出的命名空间的并集。null 选择器和 null 或空的 namespaces 列表表示“此 Pod 的命名空间”。空选择器 ({}) 匹配所有命名空间。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子性:合并时将被替换

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

Pod 反亲和性

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子性:合并时将被替换

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

    每个节点上的所有匹配的 WeightedPodAffinityTerm 字段的权重将被相加,以找到最优选的节点。

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), required

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

      定义一组 Pod(即,相对于给定命名空间(们)匹配 labelSelector 的 Pod),此 Pod 应与这些 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 标签的值与该组 Pod 中任何 Pod 运行的任何节点上的相应标签值匹配。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), required

        此 Pod 应与指定命名空间中匹配 labelSelector 的 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 topologyKey 标签的值与任何选定 Pod 运行的任何节点上的相应标签值匹配。不允许使用空的 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 (反) 亲和性。传入 Pod 标签中不存在的键将被忽略。默认值为空。禁止在 matchLabelKeys 和 labelSelector 中同时存在相同的键。此外,当未设置 labelSelector 时,不能设置 matchLabelKeys。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子性:合并时将被替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        对该项适用的命名空间集合的标签查询。该项适用于由本字段选择的命名空间和 namespaces 字段中列出的命名空间的并集。null 选择器和 null 或空的 namespaces 列表表示“此 Pod 的命名空间”。空选择器 ({}) 匹配所有命名空间。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子性:合并时将被替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

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

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子性:合并时将被替换

    如果调度时无法满足此字段指定的反亲和性要求,Pod 将不会调度到该节点上。如果在 Pod 执行期间的某个时间点(例如,由于 Pod 标签更新)此字段指定的反亲和性要求不再满足,系统 *可能* 会或 *可能不会* 尝试最终将 Pod 从其节点中驱逐。当存在多个元素时,与每个 podAffinityTerm 对应的节点列表会进行交集计算,即必须满足所有项。

    定义一组 Pod(即,相对于给定命名空间(们)匹配 labelSelector 的 Pod),此 Pod 应与这些 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 标签的值与该组 Pod 中任何 Pod 运行的任何节点上的相应标签值匹配。

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), required

      此 Pod 应与指定命名空间中匹配 labelSelector 的 Pod 共同定位 (affinity) 或不共同定位 (anti-affinity)。共同定位定义为运行在某个节点上,该节点的 topologyKey 标签的值与任何选定 Pod 运行的任何节点上的相应标签值匹配。不允许使用空的 topologyKey。

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      对一组资源(此处指 Pod)的标签查询。如果为 null,则此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子性:合并时将被替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子性:合并时将被替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      对该项适用的命名空间集合的标签查询。该项适用于由本字段选择的命名空间和 namespaces 字段中列出的命名空间的并集。null 选择器和 null 或空的 namespaces 列表表示“此 Pod 的命名空间”。空选择器 ({}) 匹配所有命名空间。

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子性:合并时将被替换

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

探针

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), required

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

      IntOrString 是一种可以容纳 int32 或 string 的类型。在 JSON 或 YAML 编码和解码时,它会生成或消费内部类型。这使得您可以拥有一个可以接受名称或编号的 JSON 字段。

    • httpGet.host (string)

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

    • httpGet.httpHeaders ([]HTTPHeader)

      原子性:合并时将被替换

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

      HTTPHeader 描述了要在 HTTP 探针中使用的自定义头部

      • httpGet.httpHeaders.name (string), required

        头部字段名称。输出时将规范化此名称,因此大小写不同的名称将被理解为同一个头部。

      • httpGet.httpHeaders.value (string), required

        头部字段值

    • httpGet.path (string)

      在 HTTP 服务器上访问的路径。

    • httpGet.scheme (string)

      连接到主机使用的方案(协议)。默认为 HTTP。

  • tcpSocket (TCPSocketAction)

    TCPSocket 指定与一个 TCP 端口的连接。

    TCPSocketAction 描述基于打开一个 socket 的操作

    • tcpSocket.port (IntOrString), required

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

      IntOrString 是一种可以容纳 int32 或 string 的类型。在 JSON 或 YAML 编码和解码时,它会生成或消费内部类型。这使得您可以拥有一个可以接受名称或编号的 JSON 字段。

    • tcpSocket.host (string)

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

  • initialDelaySeconds (int32)

    容器启动后多久(秒)开始启动存活探针。更多信息: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。对于存活探针和启动探针,必须为 1。最小值为 1。

  • grpc (GRPCAction)

    GRPC 指定一个 GRPC 健康检查请求。

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

Pod 状态

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


  • nominatedNodeName (string)

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

  • hostIP (string)

    hostIP 保存分配给 Pod 的主机的 IP 地址。如果 Pod 尚未启动,则为空。Pod 可能被分配到一个 Kubelet 存在问题的节点,这意味着即使节点已分配给 Pod,HostIP 也不会更新。

  • hostIPs ([]HostIP)

    Patch 策略:基于键 ip 合并

    原子性:合并时将被替换

    hostIPs 保存分配给主机的 IP 地址。如果指定了此字段,第一个条目必须与 hostIP 字段匹配。如果 Pod 尚未启动,此列表为空。Pod 可能被分配到一个 Kubelet 存在问题的节点,这意味着即使节点已分配给此 Pod,HostIPs 也不会更新。

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

    • hostIPs.ip (string), required

      IP 是分配给主机的 IP 地址

  • startTime (Time)

    对象被 Kubelet 确认的 RFC 3339 日期和时间。这早于 Kubelet 拉取 Pod 的容器镜像(们)的时间。

    Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

  • phase (string)

    Pod 的 Phase 是 Pod 生命周期所处阶段的简单、高层总结。conditions 数组、reasonmessage 字段以及单个容器状态数组包含有关 Pod 状态的更多详细信息。Phase 有五种可能的值:

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

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

  • message (string)

    可读的消息,指示 Pod 处于此状况的详细原因。

  • reason (string)

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

  • podIP (string)

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

  • podIPs ([]PodIP)

    Patch 策略:基于键 ip 合并

    Map:合并时将保留键 ip 唯一的条目

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

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

    • podIPs.ip (string), required

      IP 是分配给 Pod 的 IP 地址

  • conditions ([]PodCondition)

    Patch 策略:按键 type 合并

    Map:合并时将保留键 type 上的唯一值

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

    PodCondition 包含此 Pod 当前状况的详细信息。

    • conditions.status (string), required

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

    • conditions.type (string), required

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

    • conditions.lastProbeTime (Time)

      上次探测此状况的时间。

      Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

    • conditions.lastTransitionTime (Time)

      状况上次从一个状态转换到另一个状态的时间。

      Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

    • conditions.message (string)

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

    • conditions.observedGeneration (int64)

      如果设置,这表示 Pod 状况基于的 .metadata.generation。这是一个 alpha 字段。要使用此字段,需要启用 PodObservedGenerationTracking 功能。

    • conditions.reason (string)

      状况上次转换的唯一、单字、CamelCase 格式的原因。

  • qosClass (string)

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

  • 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)

      Patch 策略:基于键 name 合并

      Map:合并时将保留键名为唯一的条目

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

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

      • initContainerStatuses.allocatedResourcesStatus.name (string),必需

        资源的名称。在 Pod 内必须唯一,对于非 DRA 资源,必须与 Pod 规范(Pod spec)中的资源之一匹配。对于 DRA 资源,其值必须为 "claim:<claim_name>/<request>"。当为某个容器报告此状态时,"claim_name" 和 "request" 必须与此容器的声明之一匹配。

      • initContainerStatuses.allocatedResourcesStatus.resources([]ResourceHealth)

        Map:在合并期间将保留键 resourceID 的唯一值

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

        ResourceHealth 表示资源的健康状况。它包含最新的设备健康信息。这是 KEP https://kep.k8s.io/4680 的一部分。

        • initContainerStatuses.allocatedResourcesStatus.resources.resourceID (string),必需

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

        • initContainerStatuses.allocatedResourcesStatus.resources.health (string)

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

          • Healthy: 正常运行
          • Unhealthy: 报告不健康。我们认为这是暂时的健康问题,因为目前我们没有机制来区分临时和永久性问题。
          • Unknown: 状态无法确定。例如,设备插件(Device Plugin)已注销且此后未重新注册。

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

    • initContainerStatuses.containerID (string)

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

    • initContainerStatuses.image (string),必需

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

    • initContainerStatuses.imageID (string),必需

      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。提供了许多 time 包提供的工厂方法的包装器。

      • initContainerStatuses.lastState.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • initContainerStatuses.lastState.terminated.containerID (string)

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

        • initContainerStatuses.lastState.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • initContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • initContainerStatuses.lastState.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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),必需

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

    • initContainerStatuses.ready (boolean),必需

      Ready 指定容器当前是否通过了就绪性检查(readiness check)。该值将随着就绪性探针(readiness probes)的持续执行而改变。如果未指定就绪性探针,则容器完全启动后此字段默认为 true(参见 Started 字段)。

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

    • initContainerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述计算资源需求。

      • initContainerStatuses.resources.claims([]ResourceClaim)

        Map:合并时将保留键名为唯一的条目

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

        这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

        • initContainerStatuses.resources.claims.name (string),必需

          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;否则,默认为实现定义的值。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • initContainerStatuses.restartCount (int32),必需

      RestartCount 保存容器已重启的次数。Kubelet 尽力总是增加此值,但在节点重启时,状态可能会丢失,此时值可能重置为 0。该值永远不为负。

    • initContainerStatuses.started (boolean)

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

    • initContainerStatuses.state (ContainerState)

      State 保存关于容器当前状况的详细信息。

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

      • initContainerStatuses.state.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的一种运行状态。

        • initContainerStatuses.state.running.startedAt (Time)

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

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

      • initContainerStatuses.state.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • initContainerStatuses.state.terminated.containerID (string)

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

        • initContainerStatuses.state.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • initContainerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • initContainerStatuses.state.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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 报告此容器的有效停止信号

    • initContainerStatuses.user (ContainerUser)

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

      ContainerUser 表示用户身份信息

      • initContainerStatuses.user.linux (LinuxContainerUser)

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

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

        • initContainerStatuses.user.linux.gid (int64),必需

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

        • initContainerStatuses.user.linux.uid (int64),必需

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

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

          原子性:合并时将被替换

          SupplementalGroups 是最初附加到容器中第一个进程的补充组

    • initContainerStatuses.volumeMounts([]VolumeMountStatus)

      Patch 策略:按键 `mountPath` 合并

      Map:合并时将保留键 mountPath 上的唯一值

      卷挂载(volume mounts)的状态。

      VolumeMountStatus 显示卷挂载(volume mounts)的状态。

      • initContainerStatuses.volumeMounts.mountPath (string),必需

        MountPath 对应于原始的 VolumeMount。

      • initContainerStatuses.volumeMounts.name (string),必需

        Name 对应于原始 VolumeMount 的名称。

      • initContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始的 VolumeMount。

      • initContainerStatuses.volumeMounts.recursiveReadOnly (string)

        RecursiveReadOnly 必须设置为 Disabled、Enabled 或未指定(对于非只读挂载)。原始 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)

      Patch 策略:基于键 name 合并

      Map:合并时将保留键名为唯一的条目

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

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

      • containerStatuses.allocatedResourcesStatus.name (string),必需

        资源的名称。在 Pod 内必须唯一,对于非 DRA 资源,必须与 Pod 规范(Pod spec)中的资源之一匹配。对于 DRA 资源,其值必须为 "claim:<claim_name>/<request>"。当为某个容器报告此状态时,"claim_name" 和 "request" 必须与此容器的声明之一匹配。

      • containerStatuses.allocatedResourcesStatus.resources([]ResourceHealth)

        Map:在合并期间将保留键 resourceID 的唯一值

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

        ResourceHealth 表示资源的健康状况。它包含最新的设备健康信息。这是 KEP https://kep.k8s.io/4680 的一部分。

        • containerStatuses.allocatedResourcesStatus.resources.resourceID (string),必需

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

        • containerStatuses.allocatedResourcesStatus.resources.health (string)

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

          • Healthy: 正常运行
          • Unhealthy: 报告不健康。我们认为这是暂时的健康问题,因为目前我们没有机制来区分临时和永久性问题。
          • Unknown: 状态无法确定。例如,设备插件(Device Plugin)已注销且此后未重新注册。

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

    • containerStatuses.containerID (string)

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

    • containerStatuses.image (string),必需

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

    • containerStatuses.imageID (string),必需

      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。提供了许多 time 包提供的工厂方法的包装器。

      • containerStatuses.lastState.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • containerStatuses.lastState.terminated.containerID (string)

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

        • containerStatuses.lastState.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • containerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • containerStatuses.lastState.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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),必需

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

    • containerStatuses.ready (boolean),必需

      Ready 指定容器当前是否通过了就绪性检查(readiness check)。该值将随着就绪性探针(readiness probes)的持续执行而改变。如果未指定就绪性探针,则容器完全启动后此字段默认为 true(参见 Started 字段)。

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

    • containerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述计算资源需求。

      • containerStatuses.resources.claims([]ResourceClaim)

        Map:合并时将保留键名为唯一的条目

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

        这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

        • containerStatuses.resources.claims.name (string),必需

          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;否则,默认为实现定义的值。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • containerStatuses.restartCount (int32),必需

      RestartCount 保存容器已重启的次数。Kubelet 尽力总是增加此值,但在节点重启时,状态可能会丢失,此时值可能重置为 0。该值永远不为负。

    • containerStatuses.started (boolean)

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

    • containerStatuses.state (ContainerState)

      State 保存关于容器当前状况的详细信息。

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

      • containerStatuses.state.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的一种运行状态。

        • containerStatuses.state.running.startedAt (Time)

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

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

      • containerStatuses.state.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • containerStatuses.state.terminated.containerID (string)

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

        • containerStatuses.state.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • containerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • containerStatuses.state.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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 报告此容器的有效停止信号

    • containerStatuses.user (ContainerUser)

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

      ContainerUser 表示用户身份信息

      • containerStatuses.user.linux (LinuxContainerUser)

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

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

        • containerStatuses.user.linux.gid (int64),必需

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

        • containerStatuses.user.linux.uid (int64),必需

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

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

          原子性:合并时将被替换

          SupplementalGroups 是最初附加到容器中第一个进程的补充组

    • containerStatuses.volumeMounts([]VolumeMountStatus)

      Patch 策略:按键 `mountPath` 合并

      Map:合并时将保留键 mountPath 上的唯一值

      卷挂载(volume mounts)的状态。

      VolumeMountStatus 显示卷挂载(volume mounts)的状态。

      • containerStatuses.volumeMounts.mountPath (string),必需

        MountPath 对应于原始的 VolumeMount。

      • containerStatuses.volumeMounts.name (string),必需

        Name 对应于原始 VolumeMount 的名称。

      • containerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始的 VolumeMount。

      • containerStatuses.volumeMounts.recursiveReadOnly (string)

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

  • ephemeralContainerStatuses([]ContainerStatus)

    原子性:合并时将被替换

    此 Pod 中运行过的任何临时容器(ephemeral containers)的状态。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)

      Patch 策略:基于键 name 合并

      Map:合并时将保留键名为唯一的条目

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

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

      • ephemeralContainerStatuses.allocatedResourcesStatus.name (string),必需

        资源的名称。在 Pod 内必须唯一,对于非 DRA 资源,必须与 Pod 规范(Pod spec)中的资源之一匹配。对于 DRA 资源,其值必须为 "claim:<claim_name>/<request>"。当为某个容器报告此状态时,"claim_name" 和 "request" 必须与此容器的声明之一匹配。

      • ephemeralContainerStatuses.allocatedResourcesStatus.resources([]ResourceHealth)

        Map:在合并期间将保留键 resourceID 的唯一值

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

        ResourceHealth 表示资源的健康状况。它包含最新的设备健康信息。这是 KEP https://kep.k8s.io/4680 的一部分。

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.resourceID (string),必需

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

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (string)

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

          • Healthy: 正常运行
          • Unhealthy: 报告不健康。我们认为这是暂时的健康问题,因为目前我们没有机制来区分临时和永久性问题。
          • Unknown: 状态无法确定。例如,设备插件(Device Plugin)已注销且此后未重新注册。

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

    • ephemeralContainerStatuses.containerID (string)

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

    • ephemeralContainerStatuses.image (string),必需

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

    • ephemeralContainerStatuses.imageID (string),必需

      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。提供了许多 time 包提供的工厂方法的包装器。

      • ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • ephemeralContainerStatuses.lastState.terminated.containerID (string)

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

        • ephemeralContainerStatuses.lastState.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • ephemeralContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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),必需

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

    • ephemeralContainerStatuses.ready (boolean),必需

      Ready 指定容器当前是否通过了就绪性检查(readiness check)。该值将随着就绪性探针(readiness probes)的持续执行而改变。如果未指定就绪性探针,则容器完全启动后此字段默认为 true(参见 Started 字段)。

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

    • ephemeralContainerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述计算资源需求。

      • ephemeralContainerStatuses.resources.claims([]ResourceClaim)

        Map:合并时将保留键名为唯一的条目

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

        这是一个 alpha 字段,需要启用 DynamicResourceAllocation 特性门控。

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

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

        • ephemeralContainerStatuses.resources.claims.name (string),必需

          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;否则,默认为实现定义的值。Requests 不能超过 Limits。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/manage-resources-containers/

    • ephemeralContainerStatuses.restartCount (int32),必需

      RestartCount 保存容器已重启的次数。Kubelet 尽力总是增加此值,但在节点重启时,状态可能会丢失,此时值可能重置为 0。该值永远不为负。

    • ephemeralContainerStatuses.started (boolean)

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

    • ephemeralContainerStatuses.state (ContainerState)

      State 保存关于容器当前状况的详细信息。

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

      • ephemeralContainerStatuses.state.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的一种运行状态。

        • ephemeralContainerStatuses.state.running.startedAt (Time)

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

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

      • ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的一种已终止状态。

        • ephemeralContainerStatuses.state.terminated.containerID (string)

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

        • ephemeralContainerStatuses.state.terminated.exitCode (int32),必需

          容器最后一次终止时的退出状态

        • ephemeralContainerStatuses.state.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • ephemeralContainerStatuses.state.terminated.finishedAt (Time)

          容器最后一次终止的时间

          Time 是 time.Time 的一个包装器,支持正确地编码为 YAML 和 JSON。提供了许多 time 包提供的工厂方法的包装器。

        • 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 报告此容器的有效停止信号

    • ephemeralContainerStatuses.user (ContainerUser)

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

      ContainerUser 表示用户身份信息

      • ephemeralContainerStatuses.user.linux (LinuxContainerUser)

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

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

        • ephemeralContainerStatuses.user.linux.gid (int64),必需

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

        • ephemeralContainerStatuses.user.linux.uid (int64),必需

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

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

          原子性:合并时将被替换

          SupplementalGroups 是最初附加到容器中第一个进程的补充组

    • ephemeralContainerStatuses.volumeMounts([]VolumeMountStatus)

      Patch 策略:按键 `mountPath` 合并

      Map:合并时将保留键 mountPath 上的唯一值

      卷挂载(volume mounts)的状态。

      VolumeMountStatus 显示卷挂载(volume mounts)的状态。

      • ephemeralContainerStatuses.volumeMounts.mountPath (string),必需

        MountPath 对应于原始的 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.name (string),必需

        Name 对应于原始 VolumeMount 的名称。

      • ephemeralContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始的 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (string)

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

  • resourceClaimStatuses([]PodResourceClaimStatus)

    Patch 策略:retainKeys,基于键 name 合并

    Map:合并时将保留键名为唯一的条目

    资源声明(resource claims)的状态。

    PodResourceClaimStatus 存储在 PodStatus 中,对应于引用 ResourceClaimTemplate 的每个 PodResourceClaim。它存储相应 ResourceClaim 生成的名称。

    • resourceClaimStatuses.name (string),必需

      Name 在 Pod 内唯一标识此资源声明。这必须与 pod.spec.resourceClaims 中条目的名称匹配,这意味着该字符串必须是 DNS_LABEL。

    • resourceClaimStatuses.resourceClaimName (string)

      ResourceClaimName 是在 Pod 的命名空间中为该 Pod 生成的 ResourceClaim 的名称。如果未设置此字段,则无需生成 ResourceClaim。在这种情况下,可以忽略 pod.spec.resourceClaims 条目。

  • resize (string)

    Pod 容器所需资源调整大小的状态。如果没有待处理的资源调整大小,则此字段为空。对容器资源的任何更改都将自动把此字段设置为 "Proposed"。已废弃(Deprecated):调整大小状态已移至两个 Pod 条件(PodResizePending 和 PodResizeInProgress)。PodResizePending 将跟踪规范已调整大小但 Kubelet 尚未分配资源的状态。PodResizeInProgress 将跟踪进行中的调整大小,并且每当分配的资源 != 确认的资源时都应存在。

  • observedGeneration (int64)

    如果设置,这表示 Pod 状态所基于的 .metadata.generation。这是一个 alpha 字段。启用 PodObservedGenerationTracking 可使用此字段。

PodList

PodList 是 Pod 的列表。


操作


get 读取指定的 Pod

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

401:未授权

get 读取指定的 Pod 的 ephemeralcontainers

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

401:未授权

get 读取指定的 Pod 的日志

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/log

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • container (在查询中):string

    要流式传输日志的容器。如果 Pod 中只有一个容器,则默认为该容器。

  • follow (在查询中):boolean

    跟踪 Pod 的日志流。默认为 false。

  • insecureSkipTLSVerifyBackend (在查询中):boolean

    insecureSkipTLSVerifyBackend 表示 apiserver 不应确认其连接到的后端服务证书的有效性。这将使 apiserver 与后端之间的 HTTPS 连接变得不安全。这意味着 apiserver 无法验证其接收到的日志数据是否来自真实的 kubelet。如果 kubelet 配置为验证 apiserver 的 TLS 凭据,则不意味着与真实 kubelet 的连接容易受到中间人攻击(例如,攻击者无法拦截来自真实 kubelet 的实际日志数据)。

  • limitBytes (在查询中):integer

    如果设置,表示在终止日志输出之前从服务器读取的字节数。这可能不会显示完整的最后一行日志,并且返回的字节数可能略多于或略少于指定限制。

  • pretty (在查询中):string

    pretty

  • previous (在查询中):boolean

    返回之前已终止容器的日志。默认为 false。

  • sinceSeconds (在查询中):integer

    显示日志相对于当前时间的秒数。如果此值早于 Pod 启动时间,则仅返回 Pod 启动以来的日志。如果此值在未来,则不返回任何日志。只能指定 sinceSeconds 或 sinceTime 中的一个。

  • stream (在查询中):string

    指定返回给客户端的容器日志流。可接受的值为 "All"、"Stdout" 和 "Stderr"。如果未指定,则使用 "All",并交错返回 stdout 和 stderr。请注意,指定 "TailLines" 时,"Stream" 只能设置为 nil 或 "All"。

  • tailLines (在查询中):integer

    如果设置,表示从日志末尾显示的行数。如果未指定,则显示从容器创建以来或 sinceSeconds 或 sinceTime 以来的日志。请注意,指定 "TailLines" 时,"Stream" 只能设置为 nil 或 "All"。

  • timestamps (在查询中):boolean

    如果为 true,则在每行日志输出的开头添加 RFC3339 或 RFC3339Nano 时间戳。默认为 false。

响应

200 (string):OK

401:未授权

get 读取指定的 Pod 的 resize

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/resize

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

401:未授权

get 读取指定的 Pod 的 status

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods/{name}/status

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

401:未授权

list 列出或监听(watch)Kind 为 Pod 的对象

HTTP 请求

GET /api/v1/namespaces/{namespace}/pods

参数

响应

200 (PodList):OK

401:未授权

list 列出或监听(watch)Kind 为 Pod 的对象

HTTP 请求

GET /api/v1/pods

参数

响应

200 (PodList):OK

401:未授权

create 创建一个 Pod

HTTP 请求

POST /api/v1/namespaces/{namespace}/pods

参数

响应

200 (Pod):OK

201 (Pod):已创建

202 (Pod):已接受

401:未授权

update 替换指定的 Pod

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • 请求体(body)Pod,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

update 替换指定的 Pod 的 ephemeralcontainers

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • 请求体(body)Pod,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

update 替换指定的 Pod 的 resize

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/resize

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • 请求体(body)Pod,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

update 替换指定的 Pod 的 status

HTTP 请求

PUT /api/v1/namespaces/{namespace}/pods/{name}/status

参数

  • name (在路径中):string,必需

    Pod 的名称

  • namespace (在路径中):string,必需

    命名空间

  • 请求体(body)Pod,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

patch 部分更新指定的 Pod

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}

参数

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

patch 部分更新指定的 Pod 的 ephemeralcontainers

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers

参数

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

patch 部分更新指定的 Pod 的 resize

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/resize

参数

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

patch 部分更新指定的 Pod 的 status

HTTP 请求

PATCH /api/v1/namespaces/{namespace}/pods/{name}/status

参数

响应

200 (Pod):OK

201 (Pod):已创建

401:未授权

delete 删除一个 Pod

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/pods/{name}

参数

响应

200 (Pod):OK

202 (Pod):已接受

401:未授权

deletecollection 删除 Pod 集合

HTTP 请求

DELETE /api/v1/namespaces/{namespace}/pods

参数

响应

200 (Status):OK

401:未授权

此页面为自动生成。

如果您计划报告此页面问题,请在问题描述中提及此页面为自动生成。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2025 年 4 月 24 日 上午 9:14 PST:v1.33 的 Markdown API 参考 (b84ec30bbb)