Pod

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

apiVersion: v1

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

Pod

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


PodSpec

PodSpec 是对 Pod 的描述。


容器

  • containers ([]Container), 必需

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

  • initContainers ([]Container)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

  • ephemeralContainers ([]EphemeralContainer)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

  • imagePullSecrets ([]LocalObjectReference)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

  • enableServiceLinks (boolean)

    EnableServiceLinks 指示是否应将有关服务的信息注入到 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 的操作系统参数。

调度

  • 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 的容忍度。

    附加此容忍度的 Pod 可容忍任何使用匹配运算符 <operator> 匹配三元组 <key,value,effect> 的污点。

    • tolerations.key (string)

      Key 是容忍度应用的污点键。空值表示匹配所有污点键。如果键为空,则操作符必须为 Exists;这种组合表示匹配所有值和所有键。

    • tolerations.operator (字符串)

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

    • tolerations.value (字符串)

      Value 是容忍度匹配的污点值。如果操作符为 Exists,则该值应为空,否则只是一个普通的字符串。

    • tolerations.effect (字符串)

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

    • tolerations.tolerationSeconds (int64)

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

  • schedulerName (字符串)

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

  • runtimeClassName (字符串)

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

  • priorityClassName (字符串)

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

  • priority (int32)

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

  • preemptionPolicy (字符串)

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

  • topologySpreadConstraints ([]TopologySpreadConstraint)

    补丁策略:在键 topologyKey 上合并

    映射:在合并期间将保留键 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 (字符串), 必需

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

    • topologySpreadConstraints.whenUnsatisfiable (字符串), 必需

      WhenUnsatisfiable 表示如果 Pod 不满足分布约束,则如何处理该 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 ([]字符串)

      原子操作:将在合并期间替换

      MatchLabelKeys 是一组 Pod 标签键,用于选择将计算分布的 Pod。这些键用于从传入的 Pod 标签中查找值,这些键值标签与 labelSelector 进行 AND 运算,以选择现有 Pod 的组,将在该组上为传入的 Pod 计算分布。MatchLabelKeys 和 LabelSelector 中禁止存在相同的键。当未设置 LabelSelector 时,不能设置 MatchLabelKeys。将忽略传入 Pod 标签中不存在的键。空列表或空列表表示仅针对 labelSelector 进行匹配。

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

    • topologySpreadConstraints.minDomains (int32)

      MinDomains 表示合格域的最小数量。当具有匹配拓扑键的合格域的数量小于 minDomains 时,Pod 拓扑分布会将“全局最小值”视为 0,然后执行 Skew 的计算。当具有匹配拓扑键的合格域的数量等于或大于 minDomains 时,此值对调度没有影响。因此,当合格域的数量小于 minDomains 时,调度器不会将超过 maxSkew 的 Pod 调度到这些域。如果值为空,则约束的行为就像 MinDomains 等于 1。有效值是大于 0 的整数。当值不为空时,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 (字符串)

      NodeAffinityPolicy 指示在计算 Pod 拓扑分布倾斜时,我们将如何处理 Pod 的 nodeAffinity/nodeSelector。选项为:- Honor:仅在计算中包含与 nodeAffinity/nodeSelector 匹配的节点。- Ignore:忽略 nodeAffinity/nodeSelector。计算中包含所有节点。

      如果此值为空,则行为等效于 Honor 策略。这是 NodeInclusionPolicyInPodTopologySpread 功能标志默认启用的 beta 级功能。

    • topologySpreadConstraints.nodeTaintsPolicy (字符串)

      NodeTaintsPolicy 指示在计算 Pod 拓扑分布倾斜时,我们将如何处理节点污点。选项为:- Honor:包括没有污点的节点,以及传入 Pod 具有容忍度的污点节点。- Ignore:忽略节点污点。包含所有节点。

      如果此值为空,则行为等效于 Ignore 策略。这是 NodeInclusionPolicyInPodTopologySpread 功能标志默认启用的 beta 级功能。

  • overhead (map[string]Quantity)

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

生命周期

  • restartPolicy (字符串)

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

  • terminationGracePeriodSeconds (int64)

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

  • activeDeadlineSeconds (int64)

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

  • readinessGates ([]PodReadinessGate)

    原子操作:将在合并期间替换

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

    PodReadinessGate 包含对 Pod 条件的引用

    • readinessGates.conditionType (字符串), 必需

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

主机名和名称解析

  • hostname (字符串)

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

  • setHostnameAsFQDN (布尔值)

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

  • subdomain (字符串)

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

  • hostAliases ([]HostAlias)

    Patch 策略:根据键 ip 进行合并

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

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

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

    • hostAliases.ip (字符串),必需

      hosts 文件条目的 IP 地址。

    • hostAliases.hostnames ([]字符串)

      原子操作:将在合并期间替换

      上述 IP 地址的主机名。

  • dnsConfig (PodDNSConfig)

    指定 Pod 的 DNS 参数。此处指定的参数将根据 DNSPolicy 合并到生成的 DNS 配置中。

    PodDNSConfig 定义了 Pod 的 DNS 参数,这些参数是在从 DNSPolicy 生成的参数之外的补充。

    • dnsConfig.nameservers ([]字符串)

      原子操作:将在合并期间替换

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

    • dnsConfig.options ([]PodDNSConfigOption)

      原子操作:将在合并期间替换

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

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

      • dnsConfig.options.name (字符串)

        必需。

      • dnsConfig.options.value (字符串)

    • dnsConfig.searches ([]字符串)

      原子操作:将在合并期间替换

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

  • dnsPolicy (字符串)

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

主机命名空间

  • hostNetwork (布尔值)

    为此 Pod 请求主机网络。使用主机网络命名空间。如果设置此选项,则必须指定将要使用的端口。默认为 false。

  • hostPID (布尔值)

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

  • hostIPC (布尔值)

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

  • shareProcessNamespace (布尔值)

    在 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 (字符串),必需

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

      • securityContext.appArmorProfile.localhostProfile (字符串)

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

    • securityContext.fsGroup (int64)

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

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

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

    • securityContext.fsGroupChangePolicy (字符串)

      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 (布尔值)

      指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证映像,以确保它不以 UID 0 (root) 身份运行,如果以 UID 0 身份运行,则无法启动容器。如果未设置或为 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 配置文件设置。只能设置一个配置文件源。

      • securityContext.seccompProfile.type (字符串),必需

        type 指示将应用哪种类型的 seccomp 配置文件。有效选项为

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

      • securityContext.seccompProfile.localhostProfile (字符串)

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

    • securityContext.seLinuxOptions (SELinuxOptions)

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

      SELinuxOptions 是要应用于容器的标签

      • securityContext.seLinuxOptions.level (字符串)

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

      • securityContext.seLinuxOptions.role (字符串)

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

      • securityContext.seLinuxOptions.type (字符串)

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

      • securityContext.seLinuxOptions.user (字符串)

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

    • securityContext.supplementalGroups ([]int64)

      原子操作:将在合并期间替换

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

    • securityContext.supplementalGroupsPolicy (字符串)

      定义如何计算第一个容器进程的补充组。有效值为 “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 (字符串),必需

        要设置的属性的名称

      • securityContext.sysctls.value (字符串),必需

        要设置的属性的值

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

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

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

      • securityContext.windowsOptions.gmsaCredentialSpec (字符串)

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

      • securityContext.windowsOptions.gmsaCredentialSpecName (字符串)

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

      • securityContext.windowsOptions.hostProcess (布尔值)

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

      • securityContext.windowsOptions.runAsUserName (字符串)

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

Alpha 级别

  • hostUsers (布尔值)

    使用宿主机的用户命名空间。可选:默认为 true。如果设置为 true 或未指定,则 pod 将在宿主机用户命名空间中运行。当 pod 需要仅在宿主机用户命名空间中可用的功能时(例如使用 CAP_SYS_MODULE 加载内核模块),此选项很有用。当设置为 false 时,将为 pod 创建一个新的 userns。设置为 false 可用于缓解容器逃逸漏洞,甚至允许用户以 root 身份运行容器,而实际上在主机上不具有 root 权限。此字段为 alpha 级别,并且仅在启用了 UserNamespacesSupport 功能的服务器上生效。

  • resourceClaims ([]PodResourceClaim)

    补丁策略:保留键,在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

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

    此字段是不可变的。

    *PodResourceClaim 引用一个 ResourceClaim,可以直接引用,也可以通过命名一个 ResourceClaimTemplate,然后将其转换为 pod 的 ResourceClaim。

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

    • resourceClaims.name (字符串),必需

      在 pod 内部唯一标识此资源声明的名称。这必须是 DNS_LABEL。

    • resourceClaims.resourceClaimName (字符串)

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

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

    • resourceClaims.resourceClaimTemplateName (字符串)

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

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

      此字段是不可变的,并且在创建 ResourceClaim 后,控制平面不会对相应的 ResourceClaim 进行任何更改。

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

  • schedulingGates ([]PodSchedulingGate)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

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

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

    • schedulingGates.name (字符串),必需

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

已弃用

  • serviceAccount (字符串)

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

容器

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


  • name (字符串),必需

    以 DNS_LABEL 指定的容器名称。pod 中的每个容器必须具有唯一的名称 (DNS_LABEL)。不能更新。

镜像

入口点

  • command ([]字符串)

    原子操作:将在合并期间替换

    入口点数组。不在 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 ([]字符串)

    原子操作:将在合并期间替换

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

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

端口

  • ports ([]ContainerPort)

    补丁策略:在键 containerPort 上合并

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

    要从容器公开的端口列表。不在此处指定端口并不会阻止该端口被公开。任何在容器内部的默认 “0.0.0.0” 地址上侦听的端口都可从网络访问。使用策略合并补丁修改此数组可能会损坏数据。有关更多信息,请参阅 https://github.com/kubernetes/kubernetes/issues/108255。不能更新。

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

    • ports.containerPort (int32),必需

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

    • ports.hostIP (字符串)

      要将外部端口绑定到的主机 IP。

    • ports.hostPort (int32)

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

    • ports.name (字符串)

      如果指定,则必须是 IANA_SVC_NAME 并且在 pod 中是唯一的。pod 中的每个命名端口都必须具有唯一的名称。可以由服务引用的端口的名称。

    • ports.protocol (字符串)

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

环境变量

  • env ([]EnvVar)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

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

    • env.name (字符串),必需

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

    • env.value (字符串)

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

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 的一个键。

        从 ConfigMap 中选择一个键。

        • env.valueFrom.configMapKeyRef.key (字符串),必需

          要选择的键。

        • env.valueFrom.configMapKeyRef.name (字符串)

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

        • env.valueFrom.configMapKeyRef.optional (布尔值)

          指定是否必须定义 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.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

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

        SecretKeySelector 选择 Secret 的一个键。

        • env.valueFrom.secretKeyRef.key (字符串),必需

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

        • env.valueFrom.secretKeyRef.name (字符串)

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

        • env.valueFrom.secretKeyRef.optional (布尔值)

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

  • envFrom ([]EnvFromSource)

    原子操作:将在合并期间替换

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

    EnvFromSource 表示一组 ConfigMap 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      从中选择的 ConfigMap

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

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

    • envFrom.prefix (string)

      一个可选的标识符,用于前置到 ConfigMap 中的每个键。必须是 C_IDENTIFIER。

    • envFrom.secretRef (SecretEnvSource)

      从中选择的 Secret

      *SecretEnvSource 选择一个 Secret 以使用其填充环境变量。

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

  • volumeMounts ([]VolumeMount)

    补丁策略:在键 mountPath 上合并

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

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

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

    • volumeMounts.mountPath (string), 必需

      卷应挂载到的容器内的路径。不得包含 ':'。

    • volumeMounts.name (string), 必需

      这必须与 Volume 的名称匹配。

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

    补丁策略:在键 devicePath 上合并

    映射:在合并期间,将保留键 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)

      映射:在合并期间,键名称的唯一值将被保留

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

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

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

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

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

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

      • resources.claims.request (string)

        Request 是为引用的声明中的请求选择的名称。如果为空,则会提供声明中的所有内容,否则仅提供此请求的结果。

    • 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 生命周期处理程序,除非容器进程失败(在这种情况下,将中止处理程序),否则对容器的管理将一直阻塞,直到操作完成。

  • 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 (字符串)

    RestartPolicy 定义了 Pod 中单个容器的重启行为。此字段只能为 init 容器设置,并且唯一允许的值是 "Always"。对于非 init 容器或未指定此字段的情况,重启行为由 Pod 的重启策略和容器类型定义。将 init 容器的 RestartPolicy 设置为 "Always" 将具有以下效果:此 init 容器将在退出时持续重启,直到所有常规容器都终止。一旦所有常规容器都完成,所有 restartPolicy 为 "Always" 的 init 容器都将被关闭。此生命周期与普通的 init 容器不同,通常被称为 “sidecar” 容器。尽管此 init 容器仍然在 init 容器序列中启动,但它不会等待容器完成,然后再继续下一个 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 (字符串),必需

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

      • securityContext.appArmorProfile.localhostProfile (字符串)

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

    • securityContext.capabilities (Capabilities)

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

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

      • securityContext.capabilities.add ([]string)

        原子操作:将在合并期间替换

        添加的功能

      • securityContext.capabilities.drop ([]string)

        原子操作:将在合并期间替换

        删除的功能

    • securityContext.procMount (string)

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

    • securityContext.privileged (boolean)

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

    • securityContext.readOnlyRootFilesystem (boolean)

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

    • securityContext.runAsUser (int64)

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

    • securityContext.runAsNonRoot (布尔值)

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

    • securityContext.runAsGroup (int64)

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

    • securityContext.seLinuxOptions (SELinuxOptions)

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

      SELinuxOptions 是要应用于容器的标签

      • securityContext.seLinuxOptions.level (字符串)

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

      • securityContext.seLinuxOptions.role (字符串)

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

      • securityContext.seLinuxOptions.type (字符串)

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

      • securityContext.seLinuxOptions.user (字符串)

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

    • securityContext.seccompProfile (SeccompProfile)

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

      SeccompProfile 定义 Pod/容器的 seccomp 配置文件设置。只能设置一个配置文件源。

      • securityContext.seccompProfile.type (字符串),必需

        type 指示将应用哪种类型的 seccomp 配置文件。有效选项为

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

      • securityContext.seccompProfile.localhostProfile (字符串)

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

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

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

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

      • securityContext.windowsOptions.gmsaCredentialSpec (字符串)

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

      • securityContext.windowsOptions.gmsaCredentialSpecName (字符串)

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

      • securityContext.windowsOptions.hostProcess (布尔值)

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

      • securityContext.windowsOptions.runAsUserName (字符串)

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

调试

  • stdin (boolean)

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

  • stdinOnce (boolean)

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

  • tty (boolean)

    此容器是否应为其自身分配 TTY,也需要 'stdin' 为 true。默认为 false。

临时容器

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

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


  • name (字符串),必需

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

  • targetContainerName (string)

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

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

镜像

入口点

  • command ([]字符串)

    原子操作:将在合并期间替换

    入口点数组。不在 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 ([]字符串)

    原子操作:将在合并期间替换

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

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

环境变量

  • env ([]EnvVar)

    补丁策略:在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

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

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

    • env.name (字符串),必需

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

    • env.value (字符串)

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

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource 表示 EnvVar 值的来源。

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        选择 ConfigMap 的一个键。

        从 ConfigMap 中选择一个键。

        • env.valueFrom.configMapKeyRef.key (字符串),必需

          要选择的键。

        • env.valueFrom.configMapKeyRef.name (字符串)

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

        • env.valueFrom.configMapKeyRef.optional (布尔值)

          指定是否必须定义 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.cpu、limits.memory、limits.ephemeral-storage、requests.cpu、requests.memory 和 requests.ephemeral-storage)。

      • env.valueFrom.secretKeyRef (SecretKeySelector)

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

        SecretKeySelector 选择 Secret 的一个键。

        • env.valueFrom.secretKeyRef.key (字符串),必需

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

        • env.valueFrom.secretKeyRef.name (字符串)

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

        • env.valueFrom.secretKeyRef.optional (布尔值)

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

  • envFrom ([]EnvFromSource)

    原子操作:将在合并期间替换

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

    EnvFromSource 表示一组 ConfigMap 的来源

    • envFrom.configMapRef (ConfigMapEnvSource)

      从中选择的 ConfigMap

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

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

    • envFrom.prefix (string)

      一个可选的标识符,用于前置到 ConfigMap 中的每个键。必须是 C_IDENTIFIER。

    • envFrom.secretRef (SecretEnvSource)

      从中选择的 Secret

      *SecretEnvSource 选择一个 Secret 以使用其填充环境变量。

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

  • volumeMounts ([]VolumeMount)

    补丁策略:在键 mountPath 上合并

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

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

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

    • volumeMounts.mountPath (string), 必需

      卷应挂载到的容器内的路径。不得包含 ':'。

    • volumeMounts.name (string), 必需

      这必须与 Volume 的名称匹配。

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

    补丁策略:在键 devicePath 上合并

    映射:在合并期间,将保留键 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 (字符串)

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

调试

  • stdin (boolean)

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

  • stdinOnce (boolean)

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

  • tty (boolean)

    此容器是否应为其自身分配 TTY,也需要 'stdin' 为 true。默认为 false。

安全上下文

  • securityContext (SecurityContext)

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

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

    • securityContext.allowPrivilegeEscalation (boolean)

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

    • securityContext.appArmorProfile (AppArmorProfile)

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

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

      • securityContext.appArmorProfile.type (字符串),必需

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

      • securityContext.appArmorProfile.localhostProfile (字符串)

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

    • securityContext.capabilities (Capabilities)

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

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

      • securityContext.capabilities.add ([]string)

        原子操作:将在合并期间替换

        添加的功能

      • securityContext.capabilities.drop ([]string)

        原子操作:将在合并期间替换

        删除的功能

    • securityContext.procMount (string)

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

    • securityContext.privileged (boolean)

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

    • securityContext.readOnlyRootFilesystem (boolean)

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

    • securityContext.runAsUser (int64)

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

    • securityContext.runAsNonRoot (布尔值)

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

    • securityContext.runAsGroup (int64)

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

    • securityContext.seLinuxOptions (SELinuxOptions)

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

      SELinuxOptions 是要应用于容器的标签

      • securityContext.seLinuxOptions.level (字符串)

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

      • securityContext.seLinuxOptions.role (字符串)

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

      • securityContext.seLinuxOptions.type (字符串)

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

      • securityContext.seLinuxOptions.user (字符串)

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

    • securityContext.seccompProfile (SeccompProfile)

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

      SeccompProfile 定义 Pod/容器的 seccomp 配置文件设置。只能设置一个配置文件源。

      • securityContext.seccompProfile.type (字符串),必需

        type 指示将应用哪种类型的 seccomp 配置文件。有效选项为

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

      • securityContext.seccompProfile.localhostProfile (字符串)

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

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

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

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

      • securityContext.windowsOptions.gmsaCredentialSpec (字符串)

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

      • securityContext.windowsOptions.gmsaCredentialSpecName (字符串)

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

      • securityContext.windowsOptions.hostProcess (布尔值)

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

      • securityContext.windowsOptions.runAsUserName (字符串)

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

不允许

  • ports ([]ContainerPort)

    补丁策略:在键 containerPort 上合并

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

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

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

    • ports.containerPort (int32),必需

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

    • ports.hostIP (字符串)

      要将外部端口绑定到的主机 IP。

    • ports.hostPort (int32)

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

    • ports.name (字符串)

      如果指定,则必须是 IANA_SVC_NAME 并且在 pod 中是唯一的。pod 中的每个命名端口都必须具有唯一的名称。可以由服务引用的端口的名称。

    • ports.protocol (字符串)

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

  • resources (ResourceRequirements)

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

    ResourceRequirements 描述了计算资源需求。

    • resources.claims ([]ResourceClaim)

      映射:在合并期间,键名称的唯一值将被保留

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

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

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

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

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

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

      • resources.claims.request (string)

        Request 是为引用的声明中的请求选择的名称。如果为空,则会提供声明中的所有内容,否则仅提供此请求的结果。

    • 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 生命周期处理程序,除非容器进程失败(在这种情况下,将中止处理程序),否则对容器的管理将一直阻塞,直到操作完成。

  • livenessProbe (Probe)

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

  • readinessProbe (Probe)

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

  • startupProbe (Probe)

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

LifecycleHandler

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


  • exec (ExecAction)

    Exec 指定要执行的操作。

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

    • exec.command ([]string)

      原子操作:将在合并期间替换

      Command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录 ('/')。该命令只是 exec'd,它不是在 shell 中运行的,因此传统的 shell 指令 ('|' 等) 将不起作用。要使用 shell,您需要显式调用该 shell。退出状态 0 被视为正常/健康,而非零被视为不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要执行的 http 请求。

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

    • httpGet.port (IntOrString), 必需

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

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

    • httpGet.host (string)

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

    • httpGet.httpHeaders ([]HTTPHeader)

      原子操作:将在合并期间替换

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

      HTTPHeader 描述 HTTP 探测中使用的自定义标头

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

        标头字段名称。这将在输出时进行规范化,因此大小写变体名称将被理解为相同的标头。

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

        标头字段值

    • httpGet.path (string)

      要访问 HTTP 服务器的路径。

    • httpGet.scheme (string)

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

  • sleep (SleepAction)

    Sleep 表示容器在终止之前应休眠的持续时间。

    SleepAction 描述了一个 “睡眠” 操作。

    • sleep.seconds (int64), 必需

      Seconds 是睡眠的秒数。

  • tcpSocket (TCPSocketAction)

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

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

    • tcpSocket.port (IntOrString), 必需

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

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

    • tcpSocket.host (string)

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

NodeAffinity

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)

    原子操作:将在合并期间替换

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

    一个空的偏好调度项匹配所有隐式权重为 0 的对象(即,它是一个空操作)。一个空的偏好调度项不匹配任何对象(即,也是一个空操作)。

    • preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), 必需

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

      一个空或空的节点选择器项不匹配任何对象。它们的要求是 ANDed。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)

        原子操作:将在合并期间替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)

        原子操作:将在合并期间替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

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

  • requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)

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

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

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

      原子操作:将在合并期间替换

      必需。 节点选择器项列表。 这些项是 ORed。

      一个空或空的节点选择器项不匹配任何对象。它们的要求是 ANDed。TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        原子操作:将在合并期间替换

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

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        原子操作:将在合并期间替换

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

PodAffinity

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子操作:将在合并期间替换

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

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

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必需

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

      定义一组 Pod(即,那些匹配相对于给定命名空间的 labelSelector 的 Pod),此 Pod 应与其共存(亲和性)或不共存(反亲和性),其中共存定义为运行在标签键为 的值与 Pod 集中任何 Pod 运行的任何节点的值相匹配的节点上

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

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        对一组资源(在本例中为 Pod)的标签查询。 如果它为空,则此 PodAffinityTerm 不匹配任何 Pod。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子操作:将在合并期间替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子操作:将在合并期间替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子操作:将在合并期间替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

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

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子操作:将在合并期间替换

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

    定义一组 Pod(即,那些匹配相对于给定命名空间的 labelSelector 的 Pod),此 Pod 应与其共存(亲和性)或不共存(反亲和性),其中共存定义为运行在标签键为 的值与 Pod 集中任何 Pod 运行的任何节点的值相匹配的节点上

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必需

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

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      对一组资源(在本例中为 Pod)的标签查询。 如果它为空,则此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子操作:将在合并期间替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子操作:将在合并期间替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子操作:将在合并期间替换

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

PodAntiAffinity

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


  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    原子操作:将在合并期间替换

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

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

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), 必需

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

      定义一组 Pod(即,那些匹配相对于给定命名空间的 labelSelector 的 Pod),此 Pod 应与其共存(亲和性)或不共存(反亲和性),其中共存定义为运行在标签键为 的值与 Pod 集中任何 Pod 运行的任何节点的值相匹配的节点上

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

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        对一组资源(在本例中为 Pod)的标签查询。 如果它为空,则此 PodAffinityTerm 不匹配任何 Pod。

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)

        原子操作:将在合并期间替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)

        原子操作:将在合并期间替换

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        原子操作:将在合并期间替换

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

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), 必需

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

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    原子操作:将在合并期间替换

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

    定义一组 Pod(即,那些匹配相对于给定命名空间的 labelSelector 的 Pod),此 Pod 应与其共存(亲和性)或不共存(反亲和性),其中共存定义为运行在标签键为 的值与 Pod 集中任何 Pod 运行的任何节点的值相匹配的节点上

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), 必需

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

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      对一组资源(在本例中为 Pod)的标签查询。 如果它为空,则此 PodAffinityTerm 不匹配任何 Pod。

    • requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)

      原子操作:将在合并期间替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)

      原子操作:将在合并期间替换

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

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

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      原子操作:将在合并期间替换

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

Probe

Probe 描述了要对容器执行的运行状况检查,以确定它是存活还是准备好接收流量。


  • exec (ExecAction)

    Exec 指定要执行的操作。

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

    • exec.command ([]string)

      原子操作:将在合并期间替换

      Command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录 ('/')。该命令只是 exec'd,它不是在 shell 中运行的,因此传统的 shell 指令 ('|' 等) 将不起作用。要使用 shell,您需要显式调用该 shell。退出状态 0 被视为正常/健康,而非零被视为不健康。

  • httpGet (HTTPGetAction)

    HTTPGet 指定要执行的 http 请求。

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

    • httpGet.port (IntOrString), 必需

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

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

    • httpGet.host (string)

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

    • httpGet.httpHeaders ([]HTTPHeader)

      原子操作:将在合并期间替换

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

      HTTPHeader 描述 HTTP 探测中使用的自定义标头

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

        标头字段名称。这将在输出时进行规范化,因此大小写变体名称将被理解为相同的标头。

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

        标头字段值

    • httpGet.path (string)

      要访问 HTTP 服务器的路径。

    • httpGet.scheme (string)

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

  • tcpSocket (TCPSocketAction)

    TCPSocket 指定一个涉及 TCP 端口的操作。

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

    • tcpSocket.port (IntOrString), 必需

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

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

    • tcpSocket.host (string)

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

  • initialDelaySeconds (int32)

    容器启动后,在启动存活探针之前等待的秒数。更多信息:https://kubernetes.ac.cn/zh-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/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • failureThreshold (int32)

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

  • successThreshold (int32)

    在探测失败后,被视为成功的最小连续成功次数。默认为 1。对于存活和启动探测,必须为 1。最小值为 1。

  • grpc (GRPCAction)

    GRPC 指定一个涉及 GRPC 端口的操作。

    **

PodStatus

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


  • nominatedNodeName (string)

    仅当此 Pod 抢占节点上的其他 Pod 时才设置 nominatedNodeName,但由于抢占受害者会收到其优雅终止期,因此它无法立即被调度。此字段不保证 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), 必需

      IP 是分配给主机的 IP 地址

  • startTime (Time)

    Kubelet 确认对象的 RFC 3339 日期和时间。这在 Kubelet 为 Pod 拉取容器镜像之前。

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

  • phase (string)

    Pod 的阶段是 Pod 生命周期中所在位置的简单、高级摘要。conditions 数组、reason 和 message 字段以及各个容器状态数组包含有关 Pod 状态的更多详细信息。有五个可能的阶段值

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

    更多信息:https://kubernetes.ac.cn/zh-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 各分配 1 个值。如果尚未分配任何 IP,则此列表为空。

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

    • podIPs.ip (string), 必需

      IP 是分配给 Pod 的 IP 地址

  • conditions ([]PodCondition)

    补丁策略:合并键 type

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

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

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

    • conditions.status (string), 必需

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

    • conditions.type (string), 必需

      类型是条件的类型。更多信息:https://kubernetes.ac.cn/zh-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.reason (string)

      条件上次转换的唯一、单字、CamelCase 原因。

  • qosClass (string)

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

  • initContainerStatuses ([]ContainerStatus)

    原子操作:将在合并期间替换

    该列表在清单中为每个初始化容器包含一个条目。最近成功的初始化容器的 ready = true,最近启动的容器将设置 startTime。更多信息:https://kubernetes.ac.cn/zh-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)

      补丁策略:在键 `name` 上合并

      映射:在合并期间,键名称的唯一值将被保留

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

      **

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

        资源的名称。在 Pod 中必须是唯一的,并且与 Pod 规范中的资源之一匹配。

      • initContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

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

        唯一的资源运行状况列表。列表中的每个元素都包含唯一的资源 ID 和资源运行状况。至少,ResourceID 必须在 Pod 的生命周期内唯一标识分配给节点上 Pod 的资源。有关其定义,请参阅 ResourceID 类型。

        ResourceHealth 表示资源的运行状况。它具有最新的设备运行状况信息。这是 KEP https://kep.k8s.io/4680 的一部分,并且计划在 KEP 的未来迭代中添加历史运行状况更改。

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

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

        • initContainerStatuses.allocatedResourcesStatus.resources.health (string)

          资源的运行状况。可以是以下之一

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

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

    • initContainerStatuses.containerID (string)

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

    • initContainerStatuses.image (string), 必需

      Image 是容器正在运行的容器镜像的名称。容器镜像可能与 PodSpec 中使用的镜像不匹配,因为它可能已被运行时解析。更多信息:https://kubernetes.ac.cn/zh-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), required

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

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

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

    • initContainerStatuses.ready (boolean), required

      Ready 指定容器当前是否通过了其就绪性检查。该值会随着就绪性探测的不断执行而更改。如果未指定就绪性探测,则一旦容器完全启动(请参见 Started 字段),此字段将默认为 true。

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

    • initContainerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述了计算资源需求。

      • initContainerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间,键名称的唯一值将被保留

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

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

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

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

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

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

        • initContainerStatuses.resources.claims.request (string)

          Request 是为引用的声明中的请求选择的名称。如果为空,则会提供声明中的所有内容,否则仅提供此请求的结果。

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

      RestartCount 记录容器已重新启动的次数。Kubelet 会尽力始终递增该值,但在某些情况下,由于节点重新启动,状态可能会丢失,然后该值可能会重置为 0。该值永远不会为负数。

    • initContainerStatuses.started (boolean)

      Started 表示容器是否已完成其 postStart 生命周期钩子并传递了其启动探测。初始值为 false,在启动探测被认为成功后变为 true。当容器重新启动或 kubelet 临时丢失状态时,会重置为 false。在这两种情况下,启动探测都将再次运行。当未定义 startupProbe 且容器正在运行并已通过 postStart 生命周期钩子时,始终为 true。空值必须被视为与 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), required

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

        • 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.user (ContainerUser)

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

      ContainerUser 表示用户身份信息

      • initContainerStatuses.user.linux (LinuxContainerUser)

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

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

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

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

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

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

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

          原子操作:将在合并期间替换

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

    • initContainerStatuses.volumeMounts ([]VolumeMountStatus)

      补丁策略:在键 mountPath 上合并

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

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • initContainerStatuses.volumeMounts.mountPath (string), required

        MountPath 对应于原始的 VolumeMount。

      • initContainerStatuses.volumeMounts.name (string), required

        Name 对应于原始 VolumeMount 的名称。

      • initContainerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始的 VolumeMount。

      • initContainerStatuses.volumeMounts.recursiveReadOnly (string)

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

  • containerStatuses ([]ContainerStatus)

    原子操作:将在合并期间替换

    该列表在清单中每个容器有一个条目。更多信息: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)

      补丁策略:在键 `name` 上合并

      映射:在合并期间,键名称的唯一值将被保留

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

      **

      • containerStatuses.allocatedResourcesStatus.name (string), required

        资源的名称。在 Pod 中必须是唯一的,并且与 Pod 规范中的资源之一匹配。

      • containerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

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

        唯一的资源运行状况列表。列表中的每个元素都包含唯一的资源 ID 和资源运行状况。至少,ResourceID 必须在 Pod 的生命周期内唯一标识分配给节点上 Pod 的资源。有关其定义,请参阅 ResourceID 类型。

        ResourceHealth 表示资源的运行状况。它具有最新的设备运行状况信息。这是 KEP https://kep.k8s.io/4680 的一部分,并且计划在 KEP 的未来迭代中添加历史运行状况更改。

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

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

        • containerStatuses.allocatedResourcesStatus.resources.health (string)

          资源的运行状况。可以是以下之一

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

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

    • containerStatuses.containerID (string)

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

    • containerStatuses.image (string), required

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

    • containerStatuses.imageID (string), required

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

    • containerStatuses.lastState (ContainerState)

      LastTerminationState 保存容器的上次终止状态,以帮助调试容器崩溃和重新启动。如果容器仍在运行且 RestartCount 为 0,则不会填充此字段。

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

      • containerStatuses.lastState.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的正在运行状态。

        • containerStatuses.lastState.running.startedAt (Time)

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

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

      • containerStatuses.lastState.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的已终止状态。

        • containerStatuses.lastState.terminated.containerID (string)

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

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

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

        • containerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

          Time 是 time.Time 的包装器,它支持正确编组为 YAML 和 JSON。为 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), required

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

    • containerStatuses.ready (boolean), required

      Ready 指定容器当前是否通过了其就绪性检查。该值会随着就绪性探测的不断执行而更改。如果未指定就绪性探测,则一旦容器完全启动(请参见 Started 字段),此字段将默认为 true。

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

    • containerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述了计算资源需求。

      • containerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间,键名称的唯一值将被保留

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

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

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

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

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

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

        • containerStatuses.resources.claims.request (string)

          Request 是为引用的声明中的请求选择的名称。如果为空,则会提供声明中的所有内容,否则仅提供此请求的结果。

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

      RestartCount 记录容器已重新启动的次数。Kubelet 会尽力始终递增该值,但在某些情况下,由于节点重新启动,状态可能会丢失,然后该值可能会重置为 0。该值永远不会为负数。

    • containerStatuses.started (boolean)

      Started 表示容器是否已完成其 postStart 生命周期钩子并传递了其启动探测。初始值为 false,在启动探测被认为成功后变为 true。当容器重新启动或 kubelet 临时丢失状态时,会重置为 false。在这两种情况下,启动探测都将再次运行。当未定义 startupProbe 且容器正在运行并已通过 postStart 生命周期钩子时,始终为 true。空值必须被视为与 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), required

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

        • 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.user (ContainerUser)

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

      ContainerUser 表示用户身份信息

      • containerStatuses.user.linux (LinuxContainerUser)

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

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

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

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

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

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

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

          原子操作:将在合并期间替换

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

    • containerStatuses.volumeMounts ([]VolumeMountStatus)

      补丁策略:在键 mountPath 上合并

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

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • containerStatuses.volumeMounts.mountPath (string), required

        MountPath 对应于原始的 VolumeMount。

      • containerStatuses.volumeMounts.name (string), required

        Name 对应于原始 VolumeMount 的名称。

      • containerStatuses.volumeMounts.readOnly (boolean)

        ReadOnly 对应于原始的 VolumeMount。

      • containerStatuses.volumeMounts.recursiveReadOnly (string)

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

  • ephemeralContainerStatuses ([]ContainerStatus)

    原子操作:将在合并期间替换

    此 Pod 中运行的任何临时容器的状态。

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

    • ephemeralContainerStatuses.allocatedResources (map[string]Quantity)

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

    • ephemeralContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)

      补丁策略:在键 `name` 上合并

      映射:在合并期间,键名称的唯一值将被保留

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

      **

      • ephemeralContainerStatuses.allocatedResourcesStatus.name (string), required

        资源的名称。在 Pod 中必须是唯一的,并且与 Pod 规范中的资源之一匹配。

      • ephemeralContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)

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

        唯一的资源运行状况列表。列表中的每个元素都包含唯一的资源 ID 和资源运行状况。至少,ResourceID 必须在 Pod 的生命周期内唯一标识分配给节点上 Pod 的资源。有关其定义,请参阅 ResourceID 类型。

        ResourceHealth 表示资源的运行状况。它具有最新的设备运行状况信息。这是 KEP https://kep.k8s.io/4680 的一部分,并且计划在 KEP 的未来迭代中添加历史运行状况更改。

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

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

        • ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (string)

          资源的运行状况。可以是以下之一

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

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

    • ephemeralContainerStatuses.containerID (string)

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

    • ephemeralContainerStatuses.image (string), required

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

    • ephemeralContainerStatuses.imageID (string), required

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

    • ephemeralContainerStatuses.lastState (ContainerState)

      LastTerminationState 保存容器的上次终止状态,以帮助调试容器崩溃和重新启动。如果容器仍在运行且 RestartCount 为 0,则不会填充此字段。

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

      • ephemeralContainerStatuses.lastState.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的正在运行状态。

        • ephemeralContainerStatuses.lastState.running.startedAt (Time)

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

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

      • ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的已终止状态。

        • ephemeralContainerStatuses.lastState.terminated.containerID (string)

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

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

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

        • ephemeralContainerStatuses.lastState.terminated.startedAt (Time)

          容器上次执行开始的时间

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

        • ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)

          容器上次终止的时间

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

        • ephemeralContainerStatuses.lastState.terminated.message (string)

          关于容器上次终止的消息

        • ephemeralContainerStatuses.lastState.terminated.reason (字符串)

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

        • ephemeralContainerStatuses.lastState.terminated.signal (int32)

          容器上次终止的信号

      • ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)

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

        ContainerStateWaiting 是容器的等待状态。

        • ephemeralContainerStatuses.lastState.waiting.message (字符串)

          关于容器尚未运行的原因的消息。

        • ephemeralContainerStatuses.lastState.waiting.reason (字符串)

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

    • ephemeralContainerStatuses.name (字符串), 必需

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

    • ephemeralContainerStatuses.ready (布尔值), 必需

      Ready 指定容器当前是否通过了其就绪性检查。该值会随着就绪性探测的不断执行而更改。如果未指定就绪性探测,则一旦容器完全启动(请参见 Started 字段),此字段将默认为 true。

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

    • ephemeralContainerStatuses.resources (ResourceRequirements)

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

      ResourceRequirements 描述了计算资源需求。

      • ephemeralContainerStatuses.resources.claims ([]ResourceClaim)

        映射:在合并期间,键名称的唯一值将被保留

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

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

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

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

        • ephemeralContainerStatuses.resources.claims.name (字符串), 必需

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

        • ephemeralContainerStatuses.resources.claims.request (字符串)

          Request 是为引用的声明中的请求选择的名称。如果为空,则会提供声明中的所有内容,否则仅提供此请求的结果。

      • 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 (布尔值)

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

    • ephemeralContainerStatuses.state (ContainerState)

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

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

      • ephemeralContainerStatuses.state.running (ContainerStateRunning)

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

        ContainerStateRunning 是容器的正在运行状态。

        • ephemeralContainerStatuses.state.running.startedAt (时间)

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

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

      • ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)

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

        ContainerStateTerminated 是容器的已终止状态。

        • ephemeralContainerStatuses.state.terminated.containerID (字符串)

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

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

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

        • ephemeralContainerStatuses.state.terminated.startedAt (时间)

          容器上次执行开始的时间

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

        • ephemeralContainerStatuses.state.terminated.finishedAt (时间)

          容器上次终止的时间

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

        • ephemeralContainerStatuses.state.terminated.message (字符串)

          关于容器上次终止的消息

        • ephemeralContainerStatuses.state.terminated.reason (字符串)

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

        • ephemeralContainerStatuses.state.terminated.signal (int32)

          容器上次终止的信号

      • ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)

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

        ContainerStateWaiting 是容器的等待状态。

        • ephemeralContainerStatuses.state.waiting.message (字符串)

          关于容器尚未运行的原因的消息。

        • ephemeralContainerStatuses.state.waiting.reason (字符串)

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

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

      补丁策略:在键 mountPath 上合并

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

      卷挂载的状态。

      VolumeMountStatus 显示卷挂载的状态。

      • ephemeralContainerStatuses.volumeMounts.mountPath (字符串), 必需

        MountPath 对应于原始的 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.name (字符串), 必需

        Name 对应于原始 VolumeMount 的名称。

      • ephemeralContainerStatuses.volumeMounts.readOnly (布尔值)

        ReadOnly 对应于原始的 VolumeMount。

      • ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (字符串)

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

  • resourceClaimStatuses ([]PodResourceClaimStatus)

    补丁策略:保留键,在键 `name` 上合并

    映射:在合并期间,键名称的唯一值将被保留

    资源声明的状态。

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

    • resourceClaimStatuses.name (字符串), 必需

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

    • resourceClaimStatuses.resourceClaimName (字符串)

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

  • resize (字符串)

    Pod 的容器所需的资源调整状态。如果没有挂起的资源调整,则为空。对容器资源的任何更改都会自动将其设置为“Proposed”。

PodList

PodList 是 Pod 的列表。


操作


get 读取指定的 Pod

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

401: 未授权

get 读取指定的 Pod 的临时容器

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

401: 未授权

get 读取指定 Pod 的日志

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • container (在查询中): 字符串

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

  • follow (在查询中): 布尔值

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

  • insecureSkipTLSVerifyBackend (在查询中): 布尔值

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

  • limitBytes (在查询中): 整数

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

  • pretty (在查询中): 字符串

    pretty

  • previous (在查询中): 布尔值

    返回上一个已终止的容器日志。默认为 false。

  • sinceSeconds (在查询中): 整数

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

  • tailLines (在查询中): 整数

    如果设置,则表示要显示日志末尾的行数。如果未指定,则显示从容器创建或 sinceSeconds 或 sinceTime 以来的日志。

  • timestamps (在查询中): 布尔值

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

响应

200 (字符串): 成功

401: 未授权

get 读取指定 Pod 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

401: 未授权

list 列出或监视 Pod 类型的对象

HTTP 请求

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

参数

响应

200 (PodList): 成功

401: 未授权

list 列出或监视 Pod 类型的对象

HTTP 请求

GET /api/v1/pods

参数

响应

200 (PodList): 成功

401: 未授权

create 创建一个 Pod

HTTP 请求

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

参数

响应

200 (Pod): 成功

201 (Pod): 已创建

202 (Pod): 已接受

401: 未授权

update 替换指定的 Pod

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Pod, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

update 替换指定的 Pod 的临时容器

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Pod, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

update 替换指定 Pod 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Pod, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

patch 部分更新指定的 Pod

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • force (在查询中): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

patch 部分更新指定的 Pod 的临时容器

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • force (在查询中): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

patch 部分更新指定 Pod 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    Pod 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): 字符串

    dryRun

  • fieldManager (在查询中): 字符串

    fieldManager

  • fieldValidation (在查询中): 字符串

    fieldValidation

  • force (在查询中): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (Pod): 成功

201 (Pod): 已创建

401: 未授权

delete 删除 Pod

HTTP 请求

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

参数

响应

200 (Pod): 成功

202 (Pod): 已接受

401: 未授权

deletecollection 删除 Pod 的集合

HTTP 请求

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

参数

响应

200 (Status): 成功

401: 未授权

此页面是自动生成的。

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

上次修改时间:2024 年 8 月 28 日下午 6:01 PST: 更新 v1.31 的生成 API 参考 (8ba98c79c1)