From 2ea19853d25c53125396e171c66f1a261ecc804c Mon Sep 17 00:00:00 2001 From: ydFu Date: Mon, 18 Jul 2022 14:40:14 +0800 Subject: [PATCH] [zh-cn] resync workload-resources/pod-v1.md Signed-off-by: ydFu --- .../workload-resources/pod-v1.md | 6570 +++++++++++++++++ 1 file changed, 6570 insertions(+) create mode 100644 content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md diff --git a/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md new file mode 100644 index 0000000000000..4bc73e00fe0a5 --- /dev/null +++ b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/pod-v1.md @@ -0,0 +1,6570 @@ +--- +api_metadata: + apiVersion: "v1" + import: "k8s.io/api/core/v1" + kind: "Pod" +content_type: "api_reference" +description: "Pod 是可以在主机上运行的容器的集合。" +title: "Pod" +weight: 1 +--- + + +`apiVersion: v1` + +`import "k8s.io/api/core/v1"` + +## Pod {#Pod} + + + +Pod 是可以在主机上运行的容器的集合。此资源由客户端创建并调度到主机上。 + +
+ +- **apiVersion**: v1 + +- **kind**: Pod + + +- **metadata** (}}">ObjectMeta) + + 标准的对象元数据。 + 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + + +- **spec** (}}">PodSpec) + + 对 Pod 预期行为的规约。 + 更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + + +- **status** (}}">PodStatus) + + 最近观察到的 Pod 状态。这些数据可能不是最新的。由系统填充。只读。 + 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + +## PodSpec {#PodSpec} + + +PodSpec 是对 Pod 的描述。 + +
+ + +### 容器 + + +- **containers** ([]}}">Container),必需 + + **补丁策略:基于键 `name` 合并** + + 属于 Pod 的容器列表。当前无法添加或删除容器。 + Pod 中必须至少有一个容器。无法更新。 + +- **initContainers** ([]}}">Container) + + **补丁策略:基于键 `name` 合并** + + 属于 Pod 的 Init 容器列表。 + Init 容器在容器启动之前按顺序执行。 + 如果任何一个 Init 容器发生故障,则认为该 Pod 发生故障,并根据其 restartPolicy 进行处理。 + Init 容器或普通容器的名称在所有容器中必须是唯一的。 + Init 容器可能没有生命周期操作、就绪态探针、存活态探针或启动探针。 + 在调度过程中会考虑 Init 容器的资源需求,方法是查找每种资源类型的最高请求/限制,然后使用该值的最大值或正常容器的总和。 + 限制以类似的方式应用于 Init 容器。 + 当前无法添加或删除 Init 容器。无法更新。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/init-containers/ + + +- **imagePullSecrets** ([]}}">LocalObjectReference) + + **补丁策略:基于键 `name` 合并** + + imagePullSecrets 是对同一命名空间中 Secret 的引用列表,用于拉取此 PodSpec 使用的任何镜像,此字段可选。 + 如果指定,这些 Secret 将被传递给各个 puller 实现供他们使用。更多信息: + https://kubernetes.io/zh-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.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.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` + + 此字段为 Beta 字段,需要启用 `IdentifyPodOS` 特性。 + + + **PodOS 定义了一个 Pod 的操作系统参数。** + + + + - **os.name** (string),必需 + + name 是操作系统的名称。当前支持的值是 `linux` 和 `windows`。 + 将来可能会定义附加值,并且可以是以下之一: + https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration + 客户端应该期望处理附加值并将此字段无法识别时视其为 `os: null`。 + + +### 卷 + + +- **volumes** ([]}}">Volume) + + **补丁策略:retainKeys,基于键 `name` 合并** + + 可以由属于 Pod 的容器挂载的卷列表。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/storage/volumes + + +### 调度 + + +- **nodeSelector** (map[string]string) + + nodeSelector 是一个选择算符,这些算符必须取值为 true 才能认为 Pod 适合在节点上运行。 + 选择算符必须与节点的标签匹配,以便在该节点上调度 Pod。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/configuration/assign-pod-node/ + + +- **nodeName** (string) + + nodeName 是将此 Pod 调度到特定节点的请求。 + 如果它不是空的,调度程序只是直接将这个 Pod 调度到所指定节点上,假设节点符合资源要求。 + + +- **affinity** (Affinity) + + 如果指定了,则作为 Pod 的调度约束。 + + + **Affinity 是一组亲和性调度规则。** + + - **affinity.nodeAffinity** (}}">NodeAffinity) + + 描述 Pod 的节点亲和性调度规则。 + + - **affinity.podAffinity** (}}">PodAffinity) + + 描述 Pod 亲和性调度规则(例如,将此 Pod 与其他一些 Pod 放在同一节点、区域等中)。 + + - **affinity.podAntiAffinity** (}}">PodAntiAffinity) + + 描述 Pod 反亲和性调度规则(例如,避免将此 Pod 与其他一些 Pod 放在相同的节点、区域等)。 + + +- **tolerations** ([]Toleration) + + 如果指定了,则作为 Pod 的容忍度 + + + **这个 Toleration 所附加到的 Pod 能够容忍任何使用匹配运算符 `` 匹配三元组 `` 所得到的污点。** + + + + - **tolerations.key** (string) + + key 是容忍度所适用的污点的键名。 + 此字段为空意味着匹配所有的污点键。 + 如果 key 为空,则 operator 必须为 `Exists`; + 这种组合意味着匹配所有值和所有键。 + + + + - **tolerations.operator** (string) + + operator 表示 key 与 value 之间的关系。 + 有效的 operator 取值是 `Exists` 和 `Equal`。默认为 `Equal`。 + `Exists` 相当于 value 为某种通配符,因此 Pod 可以容忍特定类别的所有污点。 + + + + - **tolerations.value** (string) + + value 是容忍度所匹配的污点值。 + 如果 operator 为 `Exists`,则此 value 值应该为空,否则 value 值应该是一个正常的 `string`。 + + + - **tolerations.effect** (string) + + effect 指示要匹配的污点效果。空值意味著匹配所有污点效果。如果设定了此字段,允许的值为 + `NoSchedule`、`PreferNoSchedule` 和 `NoExecute` 之一。 + + + - **tolerations.tolerationSeconds** (int64) + + tolerationSeconds 表示(必须是有效的不执行,否则该是被涂抹) 标注污点的时间段。 + 在这种情况下,它没有设置,这意味着永远使用污点(不要使用)。 + 系统零值和负值参考 0(立即奖励)。 + + + +- **schedulerName** (string) + + 如果指定,则 Pod 将由指定的调度程序调度。 + 如果未指定,则默认调度程序会分派 Pod。 + +- **runtimeClassName** (string) + + runtimeClassName 是指 node.k8s.io 组中的一个 RuntimeClass 对象,应该使用它来运行这个 Pod。 + 如果没有 RuntimeClass 资源与命名类匹配,则 Pod 将不会运行。 + 如果未设置或为空,将使用“旧版”RuntimeClass,这是一个具有空定义的隐式类,使用默认运行时处理程序。 + 更多信息: + https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class + +- **priorityClassName** (string) + + 如果指定,则指示 Pod 的优先级。 + "system-node-critical" 和"system-cluster-critical" 是两个特殊关键字,表示最高优先级,前者为最高优先级。 + 任何其他名称都必须通过创建具有该名称的 PriorityClass 对象来定义。如果未指定,则 Pod 优先级将为默认值,如果没有默认值,则为零。 + +- **priority** (int32) + + priority。各种系统组件使用该字段来查找 Pod 的优先级。 + 当启用优先准入控制器时,它会阻止用户设置此字段。 + 准入控制器从 PriorityClassName 填充此字段。 + 值越高,优先级越高。 + + +- **topologySpreadConstraints** ([]TopologySpreadConstraint) + + **补丁策略:基于键 `topologyKey` 合并** + + **映射:鍵的唯一值 `topologyKey, whenUnsatisfiable` 將在合併期間保留** + + TopologySpreadConstraints 描述了一組 Pod 應該如何跨拓撲域分佈。 + 調度程序將以遵守約束的方式調度 Pod。 + 所有 topologySpreadConstraints 都是 ANDed。 + + + **TopologySpreadConstraint 指定如何在給定的拓撲中傳播匹配的 Pod。** + + + - **topologySpreadConstraints.maxSkew** (int32),必需 + + MaxSkew 描述了 Pod 可能分布不均的程度。 + 当 `whenUnsatisfiable=DoNotSchedule` 时,是目标拓扑中匹配的 Pod 数量与全局最小值之间的最大允许差值。 + 全局最小值是合格域中匹配 Pod 的最小数量,如果合格域的数量小于 MinDomains,则为零。 + 例如,在一个 3-zone 集群中,MaxSkew 设置为 1,具有相同 labelSelector 的 Pod 分布为 2/2/1:在这种情况下,全局最小值为 1。区域1 |区域2 |区域3 | | PP | PP | P | - 如果 MaxSkew 为 1,传入的 pod 只能调度到 zone3 变成 2/2/2; + 将其调度到 zone1(zone2) 将使 zone1(zone2) 上的 ActualSkew(3-1) 违反 MaxSkew(1)。 + - 如果 MaxSkew 为 2,则可以将传入的 Pod 调度到任何区域。 + 当 `whenUnsatisfiable=ScheduleAnyway` 时,它被用来给满足它的拓扑更高的优先级。这是一个必填字段。默认值为 1,不允许为 0。 + + + - **topologySpreadConstraints.topologyKey** (string),必需 + + TopologyKey 是节点标签的键。具有带有此键的标签和相同值的节点被认为在相同的拓扑中。 + 我们将每个 视为一个 "bucket",并尝试将平衡数量的 Pod 放入每个桶中。 + 我们将域定义为拓扑的特定实例。 + 此外,我们将合格域定义为其节点与节点选择器匹配的域。 + 例如如果 TopologyKey 是"kubernetes.io/hostname",则每个节点都是该拓扑的域。 + 而且,如果 TopologyKey 是 "topology.kubernetes.io/zone",则每个区域都是该拓扑的一个域。这是一个必填字段。 + + + - **topologySpreadConstraints.whenUnsatisfiable** (string),必需 + + WhenUnsatisfiable 表示如果 Pod 不满足传播约束,如何处理它。 + - DoNotSchedule(默认)告诉调度器不要调度它。 + - ScheduleAnyway 告诉调度程序将 Pod 安排在任何位置, + 但给予拓扑更高的优先级,这将有助于减少 + 偏斜。 + 当且仅当该 Pod 的每个可能的节点分配都会违反某些拓扑上的“MaxSkew”时,才认为传入 Pod 的约束是“不可满足的”。 + 例如,在 3-zone 集群中,MaxSkew 设置为 1,具有相同 labelSelector 的 Pod 分布为 3/1/1: |区域1 |区域2 |区域3 | | 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.minDomains** (int32) + + minDomains 表示符合条件的域的最小数量。 + 当符合拓扑键的符合条件的域个数小于 minDomains 时,Pod Topology Spread 将“全局最小值”视为 0,然后进行 Skew 的计算。 + 并且当匹配拓扑键的合格域的数量等于或大于 minDomains 时,该值对调度没有影响。 + 因此,当合格域的数量少于 minDomains 时,调度程序不会将超过 maxSkew Pods 调度到这些域。 + 如果 value 为 nil,则约束表现为 MinDomains 等于 1。 + 有效值为大于 0 的整数。当 value 不为 nil 时,WhenUnsatisfiable 必须为 DoNotSchedule。 + + 例如,在 3-zone 集群中,MaxSkew 设置为 2,MinDomains 设置为 5,具有相同 labelSelector 的 Pod 分布为 2/2/2: |区域 1 |区域 2 |区域 3 | | PP | PP | PP |域的数量小于 5(MinDomains),因此“全局最小值”被视为 0。在这种情况下,无法调度具有相同 labelSelector 的新 Pod,因为如果新 Pod 计算的 skew 将为 3(3 - 0)被安排到三个区域中的任何一个,都会违反 MaxSkew。 + + 这是一个 alpha 字段,需要启用 MinDomainsInPodTopologySpread 功能门。 + + +### 生命周期 + + +- **restartPolicy** (string) + + Pod 内所有容器的重启策略。Always、OnFailure、Never。 + 默认为 Always。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy + + +- **terminationGracePeriodSeconds** (int64) + + Pod 需要优雅终止的可选持续时间(以秒为单位)。 + 可以在删除请求中减少。 + 值必须是非负整数。 + 零值表示通过终止信号立即停止(没有机会关闭)。 + 如果此值为 nil,则将使用默认宽限期。 + 宽限期是 Pod 中运行的进程收到终止信号后的持续时间(以秒为单位),以及进程被终止信号强制停止的时间。 + 将此值设置为比你的进程的预期清理时间更长。默认为 30 秒。 + + +- **activeDeadlineSeconds** (int64) + + 在系统将主动尝试将其标记为失败并终止相关容器之前,Pod 可能在节点上相对于 StartTime 处于活动状态的可选持续时间(以秒为单位)。 + 值必须是正整数。 + + +- **readinessGate** ([]PodReadinessGate) + + 如果指定了,则将评估所有就绪门的 Pod 就绪情况。当所有容器都准备好并且准备就绪门中指定的所有条件都具有等于 "true" 的状态时,Pod 就准备好了。 + 更多信息: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates + + + **PodReadinessGate 包含对 Pod 条件的引用** + + - **readinessGates.conditionType** (string),必需 + + ConditionType 是指 Pod 的条件列表中匹配类型的条件。 + +### 主机名和名称解析 + + +- **hostname** (string) + + 指定 Pod 的主机名如果未指定,则 Pod 的主机名将设置为系统定义的值。 + + +- **setHostnameAsFQDN** (boolean) + + 如果为 true,则 Pod 的主机名将配置为 Pod 的 FQDN,而不是叶名称(默认值)。 + 在 Linux 容器中,这意味着在内核的主机名字段(struct utsname 的节点名字段)中设置 FQDN。 + 在 Windows 容器中,这意味着将注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 的主机名的注册表值设置为 FQDN。 + 如果 Pod 没有 FQDN,则这不起作用。 + 默认为 false。 + + +- **subdomain** (string) + + 如果指定了,则作为完全限定的 Pod 主机名将是“\.\.\.svc.\”。 + 如果未指定,则该 Pod 将根本没有域名。 + + +- **hostAliases** ([]HostAlias) + + **补丁策略:基于键 `ip` 合并** + + HostAliases 是一个可选的主机和 IP 列表,如果指定,它们将被注入到 Pod 的 hosts 文件中。 + 这仅对非 hostNetwork Pod 有效。 + + + **HostAlias 保存 IP 和主机名之间的映射,这些映射将作为 Pod 的 hosts 文件中的条目注入。** + + - **hostAliases.hostnames** ([]string) + + 上述 IP 地址的主机名。 + + - **hostAliases.ip** (string) + + 主机文件条目的 IP 地址。 + + +- **dnsConfig** (PodDNSConfig) + + 指定 Pod 的 DNS 参数。 + 此处指定的参数将合并到基于 DNSPolicy 生成的 DNS 配置中。 + + + **PodDNSConfig 定义了 Pod 的 DNS 参数以及从 DNSPolicy 生成的参数。** + + + - **dnsConfig.nameservers** ([]string) + + DNS 名称服务器 IP 地址列表。 + 这将附加到从 DNSPolicy 生成的基本名称服务器中。 + 重复的名称服务器将被删除。 + + + - **dnsConfig.options** ([]PodDNSConfigOption) + + DNS 解析器选项列表。这将与从 DNSPolicy 生成的基本选项合并。重复的条目将被删除。 Options 中给出的解析选项将覆盖基本 DNSPolicy 中出现的那些。 + + + **PodDNSConfigOption 定义 Pod 的 DNS 解析器选项。** + + - **dnsConfig.options.name** (string) + + 必需的。 + + - **dnsConfig.options.value** (string) + + + - **dnsConfig.searches** ([]string) + + 用于主机名查找的 DNS 搜索域列表。这将附加到从 DNSPolicy 生成的基本搜索路径中。重复的搜索路径将被删除。 + + +- **dnsPolicy** (string) + + 为 pod 设置 DNS 策略。默认为“集群优先”。有效值为“ClusterFirstWithHostNet”、“ClusterFirst”、“Default”或“None”。 DNSConfig 中给出的 DNS 参数将与使用 DNSPolicy 选择的策略合并。要将 DNS 选项与 hostNetwork 一起设置,你必须将 DNS 策略明确指定为“ClusterFirstWithHostNet”。 + + + +### 主机命名空间 + +- **hostNetwork** (boolean) + + 为此 Pod 请求的主机网络。使用主机的网络命名空间。 + 如果设置了此选项,则必须指定将使用的端口。 + 默认为 false。 + +- **hostPID** (boolean) + + 使用主机的 pid 命名空间。可选:默认为 false。 + +- **hostIPC** (boolean) + + 使用主机的 ipc 命名空间。可选:默认为 false。 + +- **shareProcessNamespace** (boolean) + + 在 Pod 中的所有容器之间共享单个进程命名空间。 + 设置后,容器将能够查看来自同一 Pod 中其他容器的进程并发出信号,并且每个容器中的第一个进程不会被分配 PID 1。 + HostPID 和 ShareProcessNamespace 不能同时设置。 + 可选:默认为 false。 + + +### 服务账号 + +- **serviceAccountName** (string) + + ServiceAccountName 是用于运行此 Pod 的服务账号的名称。 + 更多信息: + https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-service-account/ + +- **automountServiceAccountToken** (boolean) + + AutomountServiceAccountToken 指示是否应自动挂载服务帐户令牌。 + + +### 安全上下文 + + +- **securityContext** (PodSecurityContext) + + SecurityContext 包含 Pod 级别的安全属性和常见的容器设置。 + 可选:默认为空。每个字段的默认值见类型描述。 + + + **PodSecurityContext 包含 Pod 级别的安全属性和常用容器设置。一些字段也存在于 container.securityContext 中。container.securityContext 的字段值优先于 PodSecurityContext 的字段值。** + + + - **securityContext.runAsUser** (int64) + + 运行容器进程入口点的 UID。 + 如果未指定,则默认为镜像元数据中指定的用户。 + 也可以在 SecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先于该容器。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.runAsNonRoot** (boolean) + + 指示容器必须以非 root 用户身份运行。 + 如果为 true,Kubelet 将在运行时验证镜像,以确保它不会以 UID 0(root)身份运行,如果是,则无法启动容器。 + 如果未设置或为 false,则不会执行此类验证。 + 也可以在 SecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + + + - **securityContext.runAsGroup** (int64) + + 运行容器进程入口点的 GID。 + 如果未设置,则使用运行时默认值。 + 也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先于该容器。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.supplementalGroups** ([]int64) + + 除了容器的主 GID 之外,应用于每个容器中运行的第一个进程的组列表。 + 如果未指定,则不会将任何组添加到任何容器中。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.fsGroup** (int64) + + 适用于 Pod 中所有容器的特殊补充组。某些卷类型允许 Kubelet 将该卷的所有权更改为由 Pod 拥有: + + 1. 拥有 GID 将是 FSGroup 2. setgid 位已设置(在卷中创建的新文件将归 FSGroup 所有) 3. 权限位元与为 OR'd rw-rw---- + + 如果未设置,Kubelet 不会修改任何卷的所有权和权限。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.fsGroupChangePolicy** (string) + + fsGroupChangePolicy 定义了在卷暴露在 Pod 之前更改所有权和权限的行为。 + 此字段仅适用于支持基于 fsGroup 的所有权(和权限)的卷类型。它不会影响临时卷类型,例如:secret、configmaps 和 emptydir。 + 有效值为 "OnRootMismatch" 和 "Always"。 + 如果未指定,则使用 "Always"。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.seccompProfile** (SeccompProfile) + + 此 Pod 中的容器使用的 seccomp 选项。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + **SeccompProfile 定义 Pod/容器的 seccomp 配置文件设置。只能设置一个配置文件源。** + + + - **securityContext.seccompProfile.type** (string),必需 + + type 指示将应用哪种 seccomp 配置文件。有效的选项是: + + `Localhost` - 应使用在节点上的文件中定义的配置文件。`RuntimeDefault` - 应使用容器运行时默认配置文件。 + `Unconfined` - 不应应用任何配置文件。 + + + - **securityContext.seccompProfile.localhostProfile** (string) + + localhostProfile 指示应使用在节点上的文件中定义的配置文件。该配置文件必须在节点上预先配置才能工作。 + 必须是相对于 kubelet 配置的 seccomp 配置文件位置的下降路径。 + 仅当类型为 "Localhost" 时才必须设置。 + + + - **securityContext.seLinuxOptions** (SELinuxOptions) + + 应用于所有容器的 SELinux 上下文。 + 如果未指定,容器运行时将为每个容器分配一个随机 SELinux 上下文。 + 也可以在 SecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先于该容器。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + + + + **SELinuxOptions 是要应用于容器的标签** + + - **securityContext.seLinuxOptions.level** (string) + + Level 是应用于容器的 SELinux 级别标签。 + + - **securityContext.seLinuxOptions.role** (string) + + Role 是应用于容器的 SELinux 角色标签。 + + - **securityContext.seLinuxOptions.type** (string) + + Type 是适用于容器的 SELinux 类型标签。 + + - **securityContext.seLinuxOptions.user** (string) + + User 是应用于容器的 SELinux 用户标签。 + + + - **securityContext.sysctls** ([]Sysctl) + + Sysctls 包含用于 Pod 的命名空间 sysctl 列表。 + 具有不受支持的 sysctls(由容器运行时)的 Pod 可能无法启动。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + **Sysctl 定义要设置的内核参数** + + - **securityContext.sysctls.name** (string),必需 + + 要设置的属性的名称 + + - **securityContext.sysctls.value** (string),必需 + + 要设置的属性值 + + + - **securityContext.windowsOptions** (WindowsSecurityContextOptions) + + 适用于所有容器的 Windows 特定设置。 + 如果未指定,将使用容器的 SecurityContext 中的选项。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Linux 时不能设置该字段。 + + + **WindowsSecurityContextOptions 包含特定于 Windows 的选项和凭据。** + + + - **securityContext.windowsOptions.gmsaCredentialSpec** (string) + + GMSACredentialSpec 是 GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) 内嵌由 GMSACredentialSpecName 字段命名的 GMSA 凭证规范内容的地方。 + + - **securityContext.windowsOptions.gmsaCredentialSpecName** (string) + + GMSACredentialSpecName 是要使用的 GMSA 凭证规范的名称。 + + - **securityContext.windowsOptions.hostProcess** (boolean) + + HostProcess 确定容器是否应作为“主机进程”容器运行。 + 此字段是 alpha 级别的,只有启用 WindowsHostProcessContainers 功能标志的组件才会使用。 + 在验证 Pod 时设置此字段而不使用功能标志将导致错误。 + 一个 Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许有 HostProcess 容器和非 HostProcess 容器的混合)。 + 此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。 + + - **securityContext.windowsOptions.runAsUserName** (string) + + Windows 中运行容器进程入口点的用户名。 + 如果未指定,则默认为镜像元数据中指定的用户。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + + + +### Beta 级别 + + + +- **ephemeralContainers** ([]}}">EphemeralContainer) + + **补丁策略:基于键 `name` 合并** + + 在此 Pod 中运行的临时容器列表。 + 临时容器可以在现有的 Pod 中运行,以执行用户启动的操作,例如调试。 + 此列表在创建 Pod 时不能指定,也不能通过更新 Pod spec 来修改。要将临时容器添加到现有 Pod,请使用 Pod 的 ephemeralcontainers 子资源。 + 此字段是 beta 级别的,可在尚未禁用 EphemeralContainers 功能门的集群上使用。 + +- **preemptionPolicy** (string) + + PreemptionPolicy 是抢占优先级较低的 Pod 的策略。 + 从不,PreemptLowerPriority 之一。 + 如果未设置,则默认为 PreemptLowerPriority。 + +- **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 + + +### 已弃用的 + +- **serviceAccount** (string) + + DeprecatedServiceAccount 是 ServiceAccountName 的折旧别名。已弃用的:改用 serviceAccountName。 + + +## 容器 {#Container} + +要在 Pod 中运行的单个应用程序容器。 + +
+ +- **name** (string),必需 + + 指定为 DNS_LABEL 的容器的名称。 + Pod 中的每个容器都必须有一个唯一的名称 (DNS_LABEL)。无法更新。 + + + +### 镜像 + + +- **image** (string) + + 容器镜像名称。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images。 + 此字段是可选的,以允许更高级别的配置管理默认或覆盖工作负载控制器(如部署和 StatefulSets)中的容器镜像。 + +- **imagePullPolicy** (string) + + 镜像拉取策略。Always、Never、IfNotPresent。如 + 果指定了 :latest 标签,则默认为 Always,否则默认为 IfNotPresent。 + 无法更新。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images#updating-images + + + +### 入口点 + + +- **command** ([]string) + + 入口点数组。不在 shell 中执行。 + 如果未提供,则使用容器镜像的 ENTRYPOINT。 + 变量引用 $(VAR_NAME) 使用容器的环境进行扩展。 + 如果无法解析变量,则输入 `string` 中的引用将保持不变。双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生 `string` 文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。无法更新。 + 更多信息: + https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + + +- **args** ([]string) + + 入口点的参数。如果未提供,则使用容器镜像的 CMD。 + 变量引用 $(VAR_NAME) 使用容器的环境进行扩展。 + 如果无法解析变量,则输入 `string` 中的引用将保持不变。 + 双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生`string`文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。无法更新。 + 更多信息: + https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + + +- **workingDir** (string) + + 容器的工作目录。如果未指定,将使用容器运行时的默认值,这可能在容器映像中配置。无法更新。 + +### 端口 + + +- **prots**([]ContainerPort) + + **补丁策略:基于键 `containerPort` 合并** + + **映射:键 `containerPort, protocol` 的唯一值将在合并期间保留** + + 要从容器公开的端口列表。 + 在此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是信息性的。 + 此处不指定端口不会阻止该端口被暴露。 + 任何侦听容器内默认 "0.0.0.0" 地址的端口都可以从网络访问。无法更新。 + + + **ContainerPort 表示单个容器中的网络端口。** + + + - **ports.containerPort** (int32),必需 + + 要在 Pod 的 IP 地址上公开的端口数。这必须是有效的端口号,0 \< x \< 65536。 + + - **ports.hostIP** (string) + + 绑定外部端口的主机 IP。 + + - **ports.hostPort** (int32) + + 要在主机上公开的端口数。如果指定,这必须是一个有效的端口号,0 \< x \< 65536。如果指定了 HostNetwork,这必须与 ContainerPort 匹配。大多数容器不需要这个。 + + - **ports.name** (string) + + 如果指定,这必须是 IANA_SVC_NAME 并且在 Pod 中是唯一的。 Pod 中的每个命名端口都必须具有唯一的名称。服务可以引用的端口的名称。 + + - **ports.protocol** (string) + + 端口协议。必须是 UDP、TCP 或 SCTP。默认为 “TCP”。 + + +### 环境变量 + + +- **env**([]EnvVar) + + **补丁策略:基于键 `name` 合并** + + 要在容器中设置的环境变量列表。无法更新。 + + + **EnvVar 表示容器中存在的环境变量。** + + + - **env.name** (string),必需 + + 环境变量的名称。必须是 C_IDENTIFIER。 + + - **env.value** (string) + + 变量引用 $(VAR_NAME) 使用容器中先前定义的环境变量和任何服务环境变量进行扩展。 + 如果无法解析变量,则输入`string`中的引用将保持不变。 + 双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生`string`文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。默认为 ""。 + + +- **env.valueFrom** (EnvVarSource) + + 环境变量值的来源。如果值不为空,则不能使用。 + + + **EnvVarSource 表示 EnvVar 值的来源。** + + + + - **env.valueFrom.configMapKeyRef.key** (string),必需 + + key 的选择。 + + - **env.valueFrom.configMapKeyRef.name** (string) + + 引用者的名称。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **env.valueFrom.configMapKeyRef.optional** (boolean) + + 指定是否必须定义 ConfigMap 或其键 + + + - **env.valueFrom.fieldRef** (}}">ObjectFieldSelector) + + 选择 Pod 的一个字段:支持 metadata.name、metadata.namespace、`metadata.labels['\']`、`metadata.annotations['\']`、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 的命名空间中选择密钥的密钥 + + + **SecretKeySelector 选择一个 Secret 的密钥。** + + - **env.valueFrom.secretKeyRef.key** (string),必需 + + 要从中选择的 Secret 的密钥。必须是有效的密钥。 + + - **env.valueFrom.secretKeyRef.name** (string) + + 引用者的名称。更多信息: + https://kubernetes.io/docs/zh-cn/concepts/overview/working-with-objects/names/#names + + - **env.valueFrom.secretKeyRef.optional** (boolean) + + 指定是否必须定义 Secret 或其密钥 + + +- **envFrom** ([]EnvFromSource) + + 在容器中填充环境变量的源列表。 + 在源中定义的键必须是 C_IDENTIFIER。 + 容器启动时,所有无效键都将作为事件报告。 + 当一个键存在于多个源中时,与最后一个源关联的值将优先。 + 由具有重复键的 Env 定义的值将优先。无法更新。 + + + **EnvFromSource 表示一组 ConfigMaps 的来源** + + + - **envFrom.configMapRef** (ConfigMapEnvSource) + + 要从中选择的 ConfigMap + + + **ConfigMapEnvSource 选择一个 ConfigMap 来填充环境变量。目标 ConfigMap 的 Data 字段的内容将键值对表示为环境变量。** + + - **envFrom.configMapRef.name** (string) + + 引用者的名称。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **envFrom.configMapRef.optional** (boolean) + + 指定是否必须定义 ConfigMap + + - **envFrom.prefix** (string) + + 附加到 ConfigMap 中每个键的可选标识符。必须是 C_IDENTIFIER。 + + - **envFrom.secretRef** (SecretEnvSource) + + 可供选择的 Secret + + + **SecretEnvSource 选择一个 Secret 来填充环境变量。目标 Secret 的 Data 字段的内容将键值对表示为环境变量。** + + - **envFrom.secretRef.name** (string) + + 引用者的名称。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **envFrom.secretRef.optional** (boolean) + + 指定是否必须定义 Secret + + +### 卷 + +- **volumeMounts** ([]VolumeMount) + + **补丁策略:基于键 `mountPath` 合并** + + 要挂载到容器文件系统中的 Pod 卷。无法更新。 + + + **VolumeMount 描述了在容器中安装卷。** + + + +- **volumeMounts.mountPath** (string),必需 + + 容器内应安装卷的路径。不得包含 ':'。 + + - **volumeMounts.name** (string),必需 + + 这必须与卷的名称匹配。 + + - **volumeMounts.mountPropagation** (string) + + mountPropagation 确定挂载如何从主机传播到容器,反之亦然。 + 如果未设置,则使用 MountPropagationNone。 + 该字段在 1.10 中是 beta 版。 + + - **volumeMounts.readOnly** (boolean) + + 如果为 true,则以只读方式挂载,否则以读写方式挂载(false 或unspecified)。 + 默认为 false。 + + - **volumeMounts.subPath** (boolean) + + 应该从其安装容器的卷的卷中的路径。默认为 ""(卷的根)。 + + - **volumeMounts.subPathExpr** (string) + + 应安装容器卷的卷内的扩展路径。行为类似于 SubPath,但环境变量引用 $(VAR_NAME) 使用容器的环境进行扩展。默认为 ""(卷的根)。 SubPathExpr 和 SubPath 是互斥的。 + +- **volumeDevices** ([]VolumeDevice) + + **补丁策略:基于键 `devicePath` 合并** + + volumeDevices 是容器要使用的块设备列表。 + + + **volumeDevice 描述了容器内原始块设备的映射。** + + + - **volumeDevices.devicePath** (string),必需 + + devicePath 是设备将被映射到的容器内的路径。 + + - **volumeDevices.name** (string),必需 + + name 必须与 Pod 中的 persistentVolumeClaim 的名称匹配 + + + +### 资源 + +- **resources**(ResourceRequirements) + + 计算此容器所需的资源。无法更新。更多信息: + https://kubernetes.io/docs/zh-cn/concepts/configuration/manage-resources-containers/ + + + **ResourceRequirements 描述了计算资源要求。** + + + - **resources.limits** (map[string]}}">Quantity) + + 限制描述了允许的最大计算资源量。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ + + - **resources.requests** (map[string]}}">Quantity) + + 请求描述了所需的最小计算资源量。 + 如果容器省略了 Requests,如果明确指定,则默认为 Limits,否则为实现定义的值。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ + + +### 生命周期 + +- **lifecycle** (Lifecycle) + + 管理系统应对容器生命周期事件采取的行动。无法更新。 + + + **生命周期描述了管理系统为响应容器生命周期事件应采取的行动。对于 PostStart 和 PreStop 生命周期处理程序,容器的管理会阻塞,直到操作完成,除非容器进程失败,在这种情况下处理程序被中止。** + + + - **lifecycle.postStart** (}}">LifecycleHandler) + + 创建容器后立即调用 PostStart。 + 如果处理程序失败,则容器将根据其重新启动策略终止并重新启动。容器的其他管理阻塞直到钩子完成。 + 更多信息: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + + + - **lifecycle.preStop** (}}">LifecycleHandler) + + PreStop 在容器因 API 请求或管理事件(如存活态探针/启动探针 失败、抢占、资源争用等)而终止之前立即调用。 + 如果容器崩溃或退出,则不会调用处理程序。 + Pod 的终止宽限期倒计时在 PreStop 钩子执行之前开始。 + 无论处理程序的结果如何,容器最终都会在 Pod 的终止宽限期内终止(除非被终结器延迟)。 + 容器的其他管理会阻塞,直到钩子完成或达到终止宽限期。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + + +- **terminationMessagePath** (string) + + 可选:将写入容器终止消息的文件挂载到容器文件系统的路径。 + 写入的消息旨在成为简短的最终状态,例如断言失败消息。 + 如果大于 4096 字节,将被节点截断。 + 所有容器的总消息长度将限制为 12kb。 + 默认为 /dev/termination-log。无法更新。 + + +- **terminationMessagePolicy** (string) + + 指示应如何填充终止消息。 + File 将使用 terminateMessagePath 的内容来填充成功和失败的容器状态消息。 + 如果终止消息文件为空并且容器因错误退出,FallbackToLogsOnError 将使用容器日志输出的最后一块。 + 日志输出限制为 2048 字节或 80 行,以较小者为准。 + 默认为文件。无法更新。 + + +- **livenessProbe** (}}">Probe) + + 定期探针容器活跃度。如果探针失败,容器将重新启动。无法更新。 + 更多信息: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +- **readinessProbe** (}}">Probe) + + 定期探针容器服务就绪情况。 + 如果探针失败,容器将从服务端点中删除。无法更新。 + 更多信息: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +- **startupProbe** (}}">Probe) + + 启动探针表示 Pod 已成功初始化。 + 如果指定了,则作为在成功完成之前不会执行其他探针。 + 如果这个探针失败,Pod 会重新启动,就像存活态探针失败一样。 + 这可用于在 Pod 生命周期开始时提供不同的探针参数,此时加载数据或预热缓存可能需要比稳态操作期间更长的时间。 + 这无法更新。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes + + +### 安全上下文 + +- **securityContext** (SecurityContext) + + SecurityContext 定义了容器应该运行的安全选项。如果设置,SecurityContext 的字段将覆盖 PodSecurityContext 的等效字段。更多信息: + https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/security-context/ + + + **SecurityContext 保存将应用于容器的安全配置。 SecurityContext 和 PodSecurityContext 中都存在一些字段。当两者都设置时,SecurityContext 中的值优先。** + + + - **securityContext.runAsUser** (int64) + + 运行容器进程入口点的 UID。 + 如果未指定,则默认为镜像元数据中指定的用户。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.runAsNonRoot** (boolean) + + 指示容器必须以非 root 用户身份运行。 + 如果为 true,Kubelet 将在运行时验证镜像,以确保它不会以 UID 0(root)身份运行,如果是,则无法启动容器。 + 如果未设置或为 false,则不会执行此类验证。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + + - **securityContext.runAsGroup** (int64) + + 运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.readOnlyRootFilesystem** (boolean) + + 此容器是否具有只读根文件系统。默认为 false。注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.procMount** (string) + + procMount 表示用于容器的 proc 挂载类型。 + 默认值为 DefaultProcMount,它将容器运行时默认值用于只读路径和掩码路径。 + 这需要启用 ProcMountType 功能标志。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.privileged** (boolean) + + 以特权模式运行容器。 + 特权容器中的进程本质上等同于主机上的 root。 + 默认为 false。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + - **securityContext.allowPrivilegeEscalation** (boolean) + + AllowPrivilegeEscalation 控制进程是否可以获得比其父进程更多的权限。 + 此布尔值直接控制是否在容器进程上设置 no_new_privs 标志。 AllowPrivilegeEscalation 在容器处于以下状态时始终为 true: 1) 以特权身份运行 2) 具有 CAP_SYS_ADMIN 请注意,当 spec.os.name 为 Windows 时,无法设置此字段。 + + + - **securityContext.capabilities** (Capabilities) + + 運行容器時添加/刪除的功能。 + 默認為容器運行時授予的默認功能集。 + 注意,spec.os.name 為 Windows 時不能設置該字段。 + + + **在正在運行的容器中添加和刪除 POSIX 功能。** + + - **securityContext.capabilities.add** ([]string) + + 新增功能 + + - **securityContext.capabilities.drop** ([]string) + + 刪除的功能 + + - **securityContext.seccompProfile** (SeccompProfile) + + 此容器使用的 seccomp 選項。 + 如果在 Pod 和容器級別都提供了 seccomp 選項,則容器選項會覆蓋 Pod 選項。 + 注意,spec.os.name 為 Windows 時不能設置該字段。 + + + **SeccompProfile 定義 Pod/容器的 seccomp 配置文件設置。只能設置一個配置文件源。** + + - **securityContext.seccompProfile.type** (string),必需 + + type 指示將應用哪種 seccomp 配置文件。有效的選項是: + + 本地主機 - 應使用在節點上的文件中定義的配置文件。 RuntimeDefault - 應使用容器運行時默認配置文件。無限制 - 不應應用任何配置文件。 + + - **securityContext.seccompProfile.localhostProfile** (string) + + localhostProfile 指示應使用在節點上的文件中定義的配置文件。 + 該配置文件必須在節點上預先配置才能工作。 + 必須是相對於 kubelet 配置的 seccomp 配置文件位置的下降路徑。僅當類型為"Localhost"時才必須設置。 + + + - **securityContext.seLinuxOptions** (SELinuxOptions) + + 要應用於容器的 SELinux 上下文。 + 如果未指定,容器運行時將為每個容器分配一個隨機 SELinux 上下文。 + 也可以在 PodSecurityContext 中設置。 + 如果同時在 SecurityContext 和 PodSecurityContext 中設置,則在 SecurityContext 中指定的值優先。 + 注意,spec.os.name 為 Windows 時不能設置該字段。 + + + **SELinuxOptions 是要應用於容器的標籤** + + - **securityContext.seLinuxOptions.level** (string) + + Level 是應用於容器的 SELinux 級別標籤。 + + - **securityContext.seLinuxOptions.role** (string) + + Role 是應用於容器的 SELinux 角色標籤。 + + - **securityContext.seLinuxOptions.type** (string) + + Type 是適用於容器的 SELinux 類型標籤。 + + - **securityContext.seLinuxOptions.user** (string) + + User 是應用於容器的 SELinux 用戶標籤。 + + + - **securityContext.windowsOptions** (WindowsSecurityContextOptions) + + 适用于所有容器的 Windows 特定设置。 + 如果未指定,将使用 PodSecurityContext 中的选项。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Linux 时不能设置该字段。 + + + **WindowsSecurityContextOptions 包含特定于 Windows 的选项和凭据。** + + + - **securityContext.windowsOptions.gmsaCredentialSpec** (string) + + GMSACredentialSpec 是 GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) 内嵌由 GMSACredentialSpecName 字段命名的 GMSA 凭证规范内容的地方。 + + - **securityContext.windowsOptions.gmsaCredentialSpecName** (string) + + GMSACredentialSpecName 是要使用的 GMSA 凭证规范的名称。 + + - **securityContext.windowsOptions.hostProcess** (boolean) + + HostProcess 确定容器是否应作为"主机进程"容器运行。 + 此字段是 alpha 级别的,只有启用 WindowsHostProcessContainers 功能标志的组件才会使用。 + 在验证 Pod 时设置此字段而不使用功能标志将导致错误。 + 一个 Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许有 HostProcess 容器和非 HostProcess 容器的混合)。 + 此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。 + + - **securityContext.windowsOptions.runAsUserName** (string) + + 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 {#EphemeralContainer} + + +EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod 以用于用户启动的活动,例如调试。 +临时容器没有资源或调度保证,它们在退出或 Pod 被移除或重新启动时不会重新启动。 +如果临时容器导致 Pod 超出其资源分配,kubelet 可能会驱逐 Pod。 + +要添加临时容器,请使用现有 Pod 的 ephemeralcontainers 子资源。临时容器不能被删除或重新启动。 + +这是未禁用 EphemeralContainers 功能门的集群上可用的 beta 功能。 + +
+ + +- **name** (string),必需 + + 指定为 DNS_LABEL 的临时容器的名称。此名称在所有容器、初始化容器和临时容器中必须是唯一的。 + +- **targetContainerName** (string) + + 如果设置,则为 PodSpec 中此临时容器所针对的容器的名称。 + 临时容器将在该容器的命名空间(IPC、PID 等)中运行。 + 如果未设置,则临时容器使用 Pod 规范中配置的命名空间。 + + 容器运行时必须实现对此功能的支持。如果运行时不支持命名空间定位,则设置此字段的结果是未定义的。 + + + +### 镜像 + + +- **image** (string) + + 容器镜像名称。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images + +- **imagePullPolicy** (string) + + 镜像拉取策略。Always、Never、IfNotPresent。如果指定了 :latest 标签,则默认为 Always,否则默认为 IfNotPresent。 + 无法更新。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images#updating-images + + + +### 入口点 + + +- **command**([]string) + + 入口点数组。不在 shell 中执行。如果未提供,则使用镜像的 ENTRYPOINT。 + 变量引用 $(VAR_NAME) 使用容器的环境进行扩展。如果无法解析变量,则输入`string`中的引用将保持不变。 + 双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生`string`文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。无法更新。 + 更多信息: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +- **args** ([]string) + + 入口点的参数。如果未提供,则使用镜像的 CMD。变量引用 $(VAR_NAME) 使用容器的环境进行扩展。如果无法解析变量,则输入 `string` 中的引用将保持不变。 + 双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生 `string` 文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息: + https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +- **workingDir** (string) + + 容器的工作目录。 + 如果未指定,将使用容器运行时的默认值,这可能在容器映像中配置。无法更新。 + + +### 环境变量 + + +- **env**([]EnvVar) + + **补丁策略:基于键 `name` 合并** + + 要在容器中设置的环境变量列表。无法更新。 + + + **EnvVar 表示容器中存在的环境变量。** + + + - **env.name** (string),必需 + + 环境变量的名称。必须是 C_IDENTIFIER。 + + - **env.value** (string) + + 变量引用 $(VAR_NAME) 使用容器中先前定义的环境变量和任何服务环境变量进行扩展。 + 如果无法解析变量,则输入`string`中的引用将保持不变。 + 双 $$ 被简化为单 $,这允许转义 $(VAR_NAME) 语法:即 "$$(VAR_NAME)" 将产生`string`文字 "$(VAR_NAME)"。 + 无论变量是否存在,转义引用都不会被扩展。默认为 ""。 + + + - **env.valueFrom** (EnvVarSource) + + 环境变量值的来源。如果值不为空,则不能使用。 + + + **EnvVarSource 表示 EnvVar 值的来源。** + + - **env.valueFrom.configMapKeyRef** (ConfigMapKeySelector) + + 选择 ConfigMap 的键。 + + + **从 ConfigMap 中选择一个键。** + + + - **env.valueFrom.configMapKeyRef.key** (string),必需 + + 选择的关键。 + + - **env.valueFrom.configMapKeyRef.name** (string) + + 引用者的名称。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **env.valueFrom.configMapKeyRef.optional** (boolean) + + 指定是否必须定义 ConfigMap 或其键 + + + - **env.valueFrom.fieldRef** (}}">ObjectFieldSelector) + + 选择 Pod 的一个字段:支持 metadata.name、metadata.namespace、`metadata.labels['\']`、`metadata.annotations['\']`、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 的命名空间中选择密钥的密钥 + + + **SecretKeySelector 选择一个 Secret 的密钥。** + + - **env.valueFrom.secretKeyRef.key** (string),必需 + + 要从中选择的 Secret 的密钥。必须是有效的密钥。 + + - **env.valueFrom.secretKeyRef.name** (string) + + 引用者的名称。更多信息: + https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **env.valueFrom.secretKeyRef.optional** (boolean) + + 指定是否必须定义 Secret 或其密钥 + +- **envFrom** ([]EnvFromSource) + + 在容器中填充环境变量的源列表。 + 在源中定义的键必须是 C_IDENTIFIER。容器启动时,所有无效键都将作为事件报告。 + 当一个键存在于多个源中时,与最后一个源关联的值将优先。 + 由具有重复键的 Env 定义的值将优先。无法更新。 + + + **EnvFromSource 表示一组 ConfigMaps 的来源** + + + - **envFrom.configMapRef** (ConfigMapEnvSource) + + 要从中选择的 ConfigMap + + + **ConfigMapEnvSource 选择一个 ConfigMap 来填充环境变量。目标 ConfigMap 的 Data 字段的内容将键值对表示为环境变量。** + + - **envFrom.configMapRef.name** (string) + + 引用者的名称。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **envFrom.configMapRef.optional** (boolean) + + 指定是否必须定义 ConfigMap + + + - **envFrom.prefix** (string) + + 附加到 ConfigMap 中每个键的可选标识符。必须是 C_IDENTIFIER。 + + - **envFrom.secretRef** (SecretEnvSource) + + 可供选择的 Secret + + + **SecretEnvSource 选择一个 Secret 来填充环境变量。目标 Secret 的 Data 字段的内容将键值对表示为环境变量。** + + - **envFrom.secretRef.name** (string) + + 引用者的名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names + + - **envFrom.secretRef.optional** (boolean) + + 指定是否必须定义 Secret + + +### 卷 + + + + +- **volumeMounts** ([]VolumeMount) + + **补丁策略:基于键 `mountPath` 合并** + + 要挂载到容器文件系统中的 Pod 卷。临时容器不允许子路径挂载。无法更新。 + + + **VolumeMount 描述了在容器中安装卷。** + + +- **volumeMounts.mountPath** (string),必需 + + 容器内应安装卷的路径。不得包含 ':'。 + + - **volumeMounts.name** (string),必需 + + 这必须与卷的名称匹配。 + + - **volumeMounts.mountPropagation** (string) + + mountPropagation 确定挂载如何从主机传播到容器,反之亦然。 + 如果未设置,则使用 MountPropagationNone。 + 该字段在 1.10 中是 beta 版。 + + - **volumeMounts.readOnly** (string) + + 如果为 true,则以只读方式挂载,否则以读写方式挂载(false 或 unspecified)。默认为 false。 + + - **volumeMounts.subPath** (string) + + 应该从其安装容器的卷的卷中的路径。默认为 "" (卷的根)。 + + - **volumeMounts.subPathExpr** (string) + + 应安装容器卷的卷内的扩展路径。 + 行为类似于 SubPath,但环境变量引用 $(VAR_NAME) 使用容器的环境进行扩展。默认为 "" (卷的根)。 + SubPathExpr 和 SubPath 是互斥的。 + + +- **volumeDevices** ([]VolumeDevice) + + **补丁策略:基于键 `devicePath` 合并** + + volumeDevices 是容器要使用的块设备列表。 + + + **volumeDevice 描述了容器内原始块设备的映射。** + + + - **volumeDevices.devicePath** (string),必需 + + devicePath 是设备将被映射到的容器内的路径。 + + - **volumeDevices.name** (string),必需 + + name 必须与 Pod 中的 persistentVolumeClaim 的名称匹配 + + + +### 生命周期 + + +- **terminationMessagePath** (string) + + 可选:将写入容器终止消息的文件挂载到容器文件系统的路径。 + 写入的消息旨在成为简短的最终状态,例如断言失败消息。 + 如果大于 4096 字节,将被节点截断。 + 所有容器的总消息长度将限制为 12kb。默认为 /dev/termination-log。 + 无法更新。 + +- **terminationMessagePolicy** (string) + + 指示应如何填充终止消息。 + File 将使用 terminateMessagePath 的内容来填充成功和失败的容器状态消息。 + 如果终止消息文件为空并且容器因错误退出,FallbackToLogsOnError 将使用容器日志输出的最后一块。 + 日志输出限制为 2048 字节或 80 行,以较小者为准。默认为文件。无法更新。 + + + + +### 故障排除 + + +- **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.runAsUser** (int64) + + 运行容器进程入口点的 UID。 + 如果未指定,则默认为镜像元数据中指定的用户。 + 也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + - **securityContext.runAsNonRoot** (boolean) + + 指示容器必须以非 root 用户身份运行。 + 如果为 true,Kubelet 将在运行时验证镜像,以确保它不会以 UID 0(root)身份运行,如果是,则无法启动容器。 + 如果未设置或为 false,则不会执行此类验证。 + 也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + + - **securityContext.runAsGroup** (int64) + + 运行容器进程入口点的 GID。 + 如果未设置,则使用运行时默认值。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + - **securityContext.readOnlyRootFilesystem** (boolean) + + 此容器是否具有只读根文件系统。 + 默认为 false。注意,spec.os.name 为 Windows 时不能设置该字段。 + + - **securityContext.procMount** (string) + + procMount 表示用于容器的 proc 挂载类型。默认值为 DefaultProcMount,它将容器运行时默认值用于只读路径和掩码路径。这需要启用 ProcMountType 功能标志。注意,spec.os.name 为 Windows 时不能设置该字段。 + + - **securityContext.privileged** (boolean) + + 以特权模式运行容器。特权容器中的进程本质上等同于主机上的 root。默认为 false。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + - **securityContext.allowPrivilegeEscalation** (boolean) + + AllowPrivilegeEscalation 控制进程是否可以获得比其父进程更多的权限。 + 此布尔值直接控制是否在容器进程上设置 no_new_privs 标志。 AllowPrivilegeEscalation 在容器处于以下状态时始终为 true: 1) 以特权身份运行 2) 具有 CAP_SYS_ADMIN + 请注意,当 spec.os.name 为 Windows 时,无法设置此字段。 + + - **securityContext.capabilities**(Capabilities) + + 运行容器时添加/删除的功能。 + 默认为容器运行时授予的默认功能集。注意,spec.os.name 为 Windows 时不能设置该字段。 + + + **在正在运行的容器中添加和删除 POSIX 功能。** + + - **securityContext.capabilities.add** ([]string) + + 新增功能 + + - **securityContext.capabilities.drop** ([]string) + + 删除的功能 + + + - **securityContext.seccompProfile** (SeccompProfile) + + 此容器使用的 seccomp 选项。如果在 Pod 和容器级别都提供了 seccomp 选项,则容器选项会覆盖 Pod 选项。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + **SeccompProfile 定义 Pod/容器的 seccomp 配置文件设置。只能设置一个配置文件源。** + + - **securityContext.seccompProfile.type** (string),必需 + + type 指示将应用哪种 seccomp 配置文件。有效的选项是: + + Localhost - 应使用在节点上的文件中定义的配置文件。 RuntimeDefault - 应使用容器运行时默认配置文件。 + Unconfined - 不应应用任何配置文件。 + + - **securityContext.seccompProfile.localhostProfile** (string) + + localhostProfile 指示应使用在节点上的文件中定义的配置文件。该配置文件必须在节点上预先配置才能工作。 + 必须是相对于 kubelet 配置的 seccomp 配置文件位置的下降路径。 + 仅当类型为 "Localhost" 时才必须设置。 + + + - **securityContext.seLinuxOptions** (SELinuxOptions) + + + 要应用于容器的 SELinux 上下文。 + 如果未指定,容器运行时将为每个容器分配一个随机 SELinux 上下文。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 Windows 时不能设置该字段。 + + + **SELinuxOptions 是要应用于容器的标签** + + - **securityContext.seLinuxOptions.level** (string) + + Level 是应用于容器的 SELinux 级别标签。 + + - **securityContext.seLinuxOptions.role** (string) + + Role 是应用于容器的 SELinux 角色标签。 + + - **securityContext.seLinuxOptions.type** (string) + + Type 是适用于容器的 SELinux 类型标签。 + + - **securityContext.seLinuxOptions.user** (string) + + User 是应用于容器的 SELinux 用户标签。 + + - **securityContext.windowsOptions** (WindowsSecurityContextOptions) + + 适用于所有容器的 Windows 特定设置。 + 如果未指定,将使用 PodSecurityContext 中的选项。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + 注意,spec.os.name 为 linux 时不能设置该字段。 + + + **WindowsSecurityContextOptions 包含特定于 Windows 的选项和凭据。** + + - **securityContext.windowsOptions.gmsaCredentialSpec** (string) + + GMSACredentialSpec 是 GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) 内嵌由 GMSACredentialSpecName 字段命名的 GMSA 凭证规范内容的地方。 + + - **securityContext.windowsOptions.gmsaCredentialSpecName** (string) + + GMSACredentialSpecName 是要使用的 GMSA 凭证规范的名称。 + + - **securityContext.windowsOptions.hostProcess** (boolean) + + HostProcess 确定容器是否应作为“主机进程”容器运行。 + 此字段是 alpha 级别的,只有启用 WindowsHostProcessContainers 功能标志的组件才会使用。 + 在验证 Pod 时设置此字段而不使用功能标志将导致错误。 + 一个 Pod 的所有容器必须具有相同的有效 HostProcess 值(不允许有 HostProcess 容器和非 HostProcess 容器的混合)。 + 此外,如果 HostProcess 为 true,则 HostNetwork 也必须设置为 true。 + + - **securityContext.windowsOptions.runAsUserName** (string) + + Windows 中运行容器进程入口点的用户名。 + 如果未指定,则默认为镜像元数据中指定的用户。 + 也可以在 PodSecurityContext 中设置。 + 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。 + +### 不允许 + +- **prot**([]ContainerPort) + + **补丁策略:基于键 `containerPort`上合并** + + **映射:键 `containerPort, protocol` 的唯一值将在合并期间保留** + + 临时容器不允许使用端口。 + + + **ContainerPort 表示单个容器中的网络端口。** + + + - **ports.containerPort** (int32),必需 + + 要在 Pod 的 IP 地址上公开的端口数。 + 这必须是有效的端口号,0 \< x \< 65536。 + + - **ports.hostIP** (string) + + 绑定外部端口的主机 IP。 + + - **ports.hostPort** (int32) + + 要在主机上公开的端口数。 + 如果指定了,则作为必须是一个有效的端口号,0 \< x \< 65536。 + 如果指定了 HostNetwork,这必须与 ContainerPort 匹配。 + 大多数容器不需要这个。 + + - **ports.name** (string) + + 如果指定了,则作为必须是 IANA_SVC_NAME 并且在 Pod 中是唯一的。 + Pod 中的每个命名端口都必须具有唯一的名称。 + 服务可以引用的端口的名称。 + + - **ports.protocol** (string) + + 端口协议。必须是 `UDP`、`TCP` 或 `SCTP`。默认为 "TCP"。 + +- **resources** (ResourceRequirements) + + 临时容器不允许使用资源。 + 临时容器使用已分配给 Pod 的备用资源。 + + + **ResourceRequirements 描述了计算资源要求。** + + - **resources.limits** (map[string]}}">Quantity) + + 限制描述了允许的最大计算资源量。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ + + - **resources.requests** (map[string]}}">Quantity) + + 请求描述了所需的最小计算资源量。 + 如果容器省略了请求,如果明确指定,则默认为 Limits,否则为实现定义的值。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/ + +- **lifecycle** (Lifecycle) + + 临时容器不允许使用生命周期。 + + + **生命周期描述了管理系统为响应容器生命周期事件应采取的行动。对于 PostStart 和 PreStop 生命周期处理程序,容器的管理会阻塞,直到操作完成,除非容器进程失败,在这种情况下处理程序被中止。** + + - **lifecycle.postStart** (}}">LifecycleHandler) + + 创建容器后立即调用 PostStart。 + 如果处理程序失败,则容器将根据其重新启动策略终止并重新启动。 + 容器的其他管理阻塞直到钩子完成。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + + - **lifecycle.preStop** (}}">LifecycleHandler) + + PreStop 在容器因 API 请求或管理事件(例如:存活态探针/启动探针失败、抢占、资源争用等)而终止之前立即调用。如果容器崩溃或退出,则不会调用处理程序。 + Pod 的终止宽限期倒计时在 PreStop 钩子执行之前开始。 + 无论处理程序的结果如何,容器最终都会在 Pod 的终止宽限期内终止(除非被终结器延迟)。 + 容器的其他管理会阻塞,直到钩子完成或达到终止宽限期。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + + +- **livenessProbe** (}}">Probe) + + 临时容器不允许使用探针。 + +- **readinessProbe** (}}">Probe) + + 临时容器不允许使用探针。 + +- **startupProbe** (}}">Probe) + + 临时容器不允许使用探针。 + +## LifecycleHandler {#LifecycleHandler} + + +LifecycleHandler 定义了应在生命周期挂钩中执行的特定操作。 +必须指定一个且只有一个字段,TCPSocket 除外。 + +
+ + +- **exec** (ExecAction) + + Exec 指定要执行的操作。 + + + **ExecAction 描述了 “在容器中运行” 操作。** + + - **exec.command** ([]string) + + 命令是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。 + 该命令只是 exec'd,它不在 shell 内运行,因此传统的 shell 指令('|'等)将不起作用。 + 要使用 shell,你需要显式调用该 shell。 + 退出状态 0 被视为活动/健康,非零表示不健康。 + + +- **httpGet** (HTTPGetAction) + + HTTPGet 指定要执行的 http 请求。 + + + **HTTPGetAction 描述基于 HTTP Get 请求的操作。** + + - **httpGet.port** (IntOrString),必需 + + 容器上要访问的端口的名称或编号。 + 编号必须在 1 到 65535 的范围内。 + 名称必须是 IANA_SVC_NAME。 + + + **IntOrString 是一种可以保存 int32 或 string 的类型。在 JSON 或 YAML 编组和解组中使用时,它会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。** + + - **httpGet.host** (string) + + 要连接的主机名,默认为 Pod IP。 + 你可能想在 httpHeaders 中设置 "Host"。 + + - **httpGet.httpHeaders** ([]HTTPHeader) + + 要在请求中设置的自定义标头。HTTP 允许重复的标头。 + + + **HTTPHeader 描述了在 HTTP 探针中使用的自定义标头** + + - **httpGet.httpHeaders.name** (string),必需 + + 头域名称 + + - **httpGet.httpHeaders.value** (string),必需 + + 头域值 + + - **httpGet.path** (string) + + HTTP 服务器上的访问路径。 + + - **httpGet.scheme** (string) + + 用于连接到主机的方案。默认为 HTTP。 + + +- **tcpSocket** (TCPSocketAction) + + 已弃用。`tcpSocket` 不支持作为 LifecycleHandler 并保留为向后兼容。 + 当指定 `tcp` 处理程序时,此字段没有验证,并且生命周期挂钩将在运行时失败。 + + + **TCPSocketAction 描述基于打开套接字的动作** + + - **tcpSocket.port** (IntOrString),必需 + + 容器上要访问的端口的编号或名称。 编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。 + + + **IntOrString 是一种可以保存 int32 或 string 的类型。在 JSON 或 YAML 编组和解组中使用时,它会生成或使用内部型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。** + + - **tcpSocket.host** (string) + + 可选:要连接的主机名,默认为 Pod IP。 + + +## 节点亲和性 {#NodeAffinity} + + +节点亲和性是一组节点亲和性调度规则。 + +
+ + +- **preferredDuringSchedulingIgnoredDuringExecution** ([]PreferredSchedulingTerm) + + 调度程序会更倾向于将 Pod 调度到满足该字段指定的亲和性表达式的节点,但它可能会选择违反一个或多个表达式的节点。 + 最优选的节点是权重总和最大的节点,即对于满足所有调度要求(资源请求、requiredDuringScheduling 亲和表达式等)的每个节点, + 通过迭代该字段的元素来计算总和如果节点匹配相应的matchExpressions,则将 “权重” 添加到总和中; + 具有最高和的节点是最优选的。 + + + **一个空的首选调度项匹配所有具有隐式权重 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) + + 按节点字段列出的节点选择器要求列表。 + + +## Pod 反亲和性 {#PodAntiAffinity} + + +Pod 反亲和性是一组 Pod 间反亲和性调度规则。 + +
+ +- **preferredDuringSchedulingIgnoredDuringExecution** ([]WeightedPodAffinityTerm) + +调度器更倾向于将 Pod 调度到满足该字段指定的反亲和性表达式的节点,但它可能会选择违反一个或多个表达式的节点。 +最优选的节点是权重总和最大的节点,即对于满足所有调度要求(资源请求、`requiredDuringScheduling` 反亲和性表达式等)的每个节点,通过遍历元素来计算总和如果节点具有与相应 `podAffinityTerm` 匹配的 Pod,则此字段并在总和中添加“权重”; +具有最高和的节点是最优选的。 + + + + + **所有匹配的 WeightedPodAffinityTerm 字段的权重都是按节点添加的,以找到最喜欢的节点** + + +- **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm** (PodAffinityTerm),必需 + + 必需的。一个 Pod 亲和性术语,与相应的权重相关联。 + + + **定义一组 Pod(即那些与给定命名空间相关的标签选择算符匹配的那些),该 Pod 应该与该 Pod 位于同一位置(亲和性)或不位于同一位置(反亲和性),其中定义了 `co-located` 运行在一个节点上,其键 的标签值与运行一组 Pod 的 Pod 的任何节点的值匹配** + + - **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey** (string),必需 + + 此 Pod 应与指定命名空间中与标签选择算符匹配的 Pod 位于同一位置(亲和性)或不位于同一位置(反亲和性), + 其中 `co-located` 定义为运行在其标签值为键 `topologyKey` 的节点上与运行任何选定 Pod 的任何节点匹配。 + 不允许使用空的 `topologyKey`。 + + - **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector** (}}">LabelSelector) + + 对一组资源的标签查询,在本例中为 Pod。 + + - **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector** (}}">LabelSelector) + + 对术语适用的命名空间集的标签查询。 + 该术语应用于此字段选择的名称空间和名称空间字段中列出的名称空间的联合。 + null 选择器和 null 或空命名空间列表表示 “此 Pod 的命名空间”。 + 空选择器 ({}) 匹配所有命名空间。 + + - **preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces** ([]string) + + 命名空间指定该术语适用的命名空间名称的静态列表。 + 该术语适用于该字段中列出的名称空间和由命名空间择器选择的名称空间的联合。 + null 或空命名空间列表和 null 命名空间选择器表示 “此 Pod 的命名空间”。 + + - **preferredDuringSchedulingIgnoredDuringExecution.weight** (int32),必需 + + 与匹配相应 `podAffinityTerm` 关联的权重,范围为 1-100。 + +- **requiredDuringSchedulingIgnoredDuringExecution** ([]PodAffinityTerm) + + 如果在调度时不满足该字段指定的反亲和性要求,则该 Pod 不会被调度到该节点上。 + 如果在 Pod 执行期间的某个时间点不再满足此字段指定的反亲和性要求(例如:由于 Pod 标签更新),系统可能会或可能不会尝试最终将 Pod 从其节点中逐出。 + 当有多个元素时,每个 `podAffinityTerm` 对应的节点列表是相交的,即必须满足所有条件。 + + + **定义一组 Pod(即那些与给定命名空间相关的标签选择算符匹配的那些),该 Pod 应该与该 Pod 位于同一位置(亲和性)或不位于同一位置(反亲和性),其中定义了 `co-located` 运行在一个节点上,其键 的标签值与运行一组 Pod 的 Pod 的任何节点的值匹配** + + - **requiredDuringSchedulingIgnoredDuringExecution.topologyKey** (string),必需 + + 此 Pod 应与指定命名空间中与标签选择算符匹配的 Pod 位于同一位置(亲和性)或不位于同一位置(反亲和性),其中 `co-located` 定义为运行在其标签值为键 `topologyKey` 的节点上与运行任何选定 Pod 的任何节点匹配。不允许使用空的 `topologyKey`。 + + - **requiredDuringSchedulingIgnoredDuringExecution.labelSelector** (}}">LabelSelector) + + 对一组资源的标签查询,在本例中为 Pod。 + + - **requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector** (}}">LabelSelector) + + 对术语适用的命名空间集的标签查询。 + 该术语应用于此字段选择的名称空间和名称空间字段中列出的名称空间的联合。 + null 选择器和 null 或空命名空间列表表示“此 Pod 的命名空间”。空选择器 ({}) 匹配所有命名空间。 + + - **requiredDuringSchedulingIgnoredDuringExecution.namespaces** ([]string) + + namespaces 指定该术语适用的命名空间名称的静态列表。 + 该术语适用于该字段中列出的名称空间和由命名空间择器选择的名称空间的联合。 + null 或空命名空间列表和 null 命名空间择器表示“此 Pod 的命名空间”。 + + +## 探针 {#Probe} + + +探针描述了要对容器执行的健康检查,以确定它是否处于活动状态或准备好接收流量。 + +
+ + +- **exec** (ExecAction) + + Exec 指定要执行的操作。 + + + **ExecAction 描述了 “在容器中运行” 操作。** + + - **exec.command** ([]string) + + 命令是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。 + 该命令只是执行,它不在 `shell` 内运行,因此传统的 `shell `指令('|'等)将不起作用。 + 要使用 shell,你需要显式调用该 `shell`。 + 退出状态 0 被视为活动/健康,非零表示不健康。 + + +- **httpGet** (HTTPGetAction) + + HTTPGet 指定要执行的 http 请求。 + + + **HTTPGetAction 描述基于 HTTP Get 请求的操作。** + + - **httpGet.port** (IntOrString),必需 + + 容器上要访问的端口的名称或编号。 + 编号必须在 1 到 65535 的范围内。 + 名称必须是 IANA_SVC_NAME。 + + + **`IntOrString` 是一种可以保存 `int32` 或 `string` 的类型。在 `JSON `或 `YAML` 编组和解组中使用时,它会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 `JSON` 字段。** + + - **httpGet.host** (string) + + 要连接的主机名,默认为 Pod IP。你可能想在 `httpHeaders` 中设置“主机”。 + + - **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` 或 `string` 的类型。 在 `JSON` 或 `YAML` 编组和解组中使用时,它会生成或使用内部类型。 例如,这允许你拥有一个可以接受名称或数字的 `JSON 字段`。** + + - **tcpSocket.host** (string) + + 可选:要连接的主机名,默认为 Pod IP。 + +- **initialDelaySeconds** (int32) + + 容器启动后启动活动探针之前的秒数。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +- **terminationGracePeriodSeconds** (int64) + + Pod 需要在探针失败时正常终止的可选持续时间(以秒为单位)。 + 宽限期是 Pod 中运行的进程收到终止信号后的持续时间(以秒为单位),以及进程被终止信号强制停止的时间。 + 将此值设置为比你的进程的预期清理时间更长。 + 如果此值为 nil,则将使用 Pod 的 `terminateGracePeriodSeconds`。 + 否则,此值将覆盖 Pod 规范提供的值。值必须是非负整数。 + 零值表示通过终止信号立即停止(没有机会关闭)。 + 这是一个 beta 字段,需要启用 `ProbeTerminationGracePeriod` 功能门。最小值为 1。 + 如果未设置,则使用 `spec.terminationGracePeriodSeconds`。 + +- **periodSeconds** (int32) + + 执行探针的频率(以秒为单位)。默认为 10 秒。最小值为 1。 + +- **timeoutSeconds** (int32) + + 探针超时的秒数。默认为 1 秒。最小值为 1。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +- **failureThreshold** (int32) + + 探针成功后被视为失败的最小连续失败次数。默认为 3。最小值为 1。 + +- **successThreshold** (int32) + + 探针失败后被视为成功的最小连续成功次数。默认为 1。活性和启动必须为 1。最小值为 1。 + + + +- **grpc** (GRPCAction) + + GRPC 指定涉及 GRPC 端口的操作。 + 这是一个 beta 字段,需要启用 GRPCContainerProbe 功能门。 + + + ** + + - **grpc.port** (int32),必需 + + gRPC 服务的端口号。 数字必须在 1 到 65535 的范围内。 + + - **grpc.service** (string) + + 服务是放置在 gRPC 健康检查请求中的服务的名称(请参阅 https://github.com/grpc/grpc/blob/master/doc/health-checking.md)。 + + 如果未指定,则默认行为由 gRPC 定义。 + +## PodStatus {#PodStatus} + + +`PodStatus` 表示有关 Pod 状态的信息。 +状态可能会跟踪系统的实际状态,尤其是在托管 Pod 的节点无法联系控制平面的情况下。 + +
+ + +- **nominatedNodeName** (string) + + 仅当此 Pod 抢占节点上的其他 Pod 时才设置 `nominatedNodeName`,但由于抢占受害者收到其优雅终止期,因此无法立即安排它。 + 该字段不保证 Pod 会在该节点上调度。 + 如果其他节点更快可用,调度程序可能会决定将 Pod 放置在其他地方。调度程序也可能决定将此节点上的资源分配给优先级更高的 Pod,该 Pod 是在抢占后创建的。 + 因此,当 Pod 被调度时,该字段可能与 PodSpec.nodeName 不同。 + +- **hostIP** (string) + + 分配 Pod 的主机的 IP 地址。如果尚未安排,则为空。 + +- **startTime** (Time) + + RFC 3339 对象被 `kubelet` 确认的日期和时间。 + 这是在 `kubelet` 为 Pod 拉取容器镜像之前。 + + + **Time 是 `time.Time` 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + +- **phase** (string) + + Pod 的阶段是对 Pod 在其生命周期中所处位置的简单、高级摘要。条件数组、原因和消息字段以及各个容器状态数组包含有关 Pod 状态的更多详细信息。有五个可能的相位值: + + `Pending`:Pod 已被 Kubernetes 系统接受,但尚未创建一个或多个容器镜像。这包括计划之前的时间以及通过网络下载镜像所花费的时间,这可能需要一段时间。 + `Running`:Pod 已经绑定到一个节点,并且所有的容器都已经创建完毕。至少有一个容器仍在运行,或者正在启动或重新启动过程中。 `Succeeded`:Pod 中的所有容器都已成功终止,不会重新启动。 `Failed`:Pod 中的所有容器都已终止,并且至少有一个容器因故障而终止。容器要么以非零状态退出,要么被系统终止。 + `Unknown`:由于某种原因无法获取 Pod 的状态,通常是由于与 Pod 的主机通信时出错。 + + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-phase + + +- **message*** (string) + + 一条人类可读的消息,指示有关 Pod 为何处于这种情况的详细信息。 + +- **message*** (string) + + 一条简短的驼峰式命名消息,指示有关 Pod 为何处于此状态的详细信息。 例如 'Evicted' + +- **podIP** (string) + + 分配给 Pod 的 IP 地址。 + 至少在集群内可路由。 如果尚未分配则为空。 + +- **podIPs** ([]PodIP) + + **补丁策略:基于键 `ip` 合并** + + podIPs 保存分配给 Pod 的 IP 地址。 + 如果指定了该字段,则第 0 个条目必须与 podIP 字段匹配。 + Pod 最多可以为 IPv4 和 IPv6 分配 1 个值。 + 如果尚未分配 IP,则此列表为空。 + + + **(复数)PodIPs 字段中条目的 IP 地址信息。每个条目包括:IP:分配给 Pod 的 IP 地址。至少在集群内可路由。** + + - **podIPs.ip** (string) + + ip 是分配给 Pod 的 IP 地址(IPv4 或 IPv6) + + +- **conditions** ([]PodCondition) + + **补丁策略:基于键 `ip` 合并** + + Pod 的当前服务状态。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + + + **PodCondition 包含此 Pod 当前状况的详细信息。** + + + - **conditions.status** (string),必需 + + 状态是条件的状态。可以是 True、False、Unknown。 + 更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions + + - **conditions.type** (string),必需 + + 类型是条件的类型。 + 更多信息: https://kubernetes.io/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) + + 条件最后一次转换的唯一、一个单词、驼峰式命名原因。 + +- **qosClass** (string) + + 根据资源要求分配给 Pod 的服务质量 (QOS) 分类有关可用的 QOS 类,请参阅 PodQOSClass 类型。 + 更多信息: https://git.k8s.io/design-proposals-archive/node/resource-qos.md + +- **initContainerStatuses** ([]ContainerStatus) + + 该列表在清单中的每个 Init 容器中都有一个条目。 + 最近成功的 Init 容器将设置为 ready = true,最近启动的容器将设置开始时间。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + + + **ContainerStatus 包含此容器当前状态的详细信息。** + + + - **initContainerStatuses.name** (string),必需 + + 这必须是 `DNS_LABEL`。 + Pod 中的每个容器都必须具有唯一的名称。无法更新。 + + - **initContainerStatuses.image** (string),必需 + + 容器正在运行的镜像。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images。 + + - **initContainerStatuses.imageID** (string),必需 + + 容器镜像的镜像 ID。 + + - **initContainerStatuses.containerID** (string) + + 格式为 '\://\' 的容器 ID。 + + - **initContainerStatuses.state** (ContainerState) + + 有关容器当前状况的详细信息。 + + + **`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 + + - **initContainerStatuses.state.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **initContainerStatuses.state.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **initContainerStatuses.state.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **initContainerStatuses.state.terminated.message** (string) + + 关于容器最后终止的消息 + + - **initContainerStatuses.state.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **initContainerStatuses.state.terminated.signal** (int32) + + 来自容器最后终止的信号 + + - **initContainerStatuses.state.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **initContainerStatuses.state.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **initContainerStatuses.state.waiting.reason** (string) + + (简要)容器尚未运行的原因。 + + - **initContainerStatuses.lastState** (ContainerState) + + 有关容器的最后终止条件的详细信息。 + + + **`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 + + - **initContainerStatuses.lastState.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **initContainerStatuses.lastState.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **initContainerStatuses.lastState.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **initContainerStatuses.lastState.terminated.message** (string) + + 关于容器最后终止的消息 + + - **initContainerStatuses.lastState.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **initContainerStatuses.lastState.terminated.signal** (int32) + + 来自容器最后终止的信号 + + - **initContainerStatuses.lastState.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **initContainerStatuses.lastState.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **initContainerStatuses.lastState.waiting.reason** (string) + + (简要)容器尚未运行的原因。 + + - **initContainerStatuses.ready** (boolean),必需 + + 指定容器是否已通过其就绪态探针。 + + - **initContainerStatuses.restartCount** (int32),必需 + + 容器重启的次数。 + + - **initContainerStatuses.started** (boolean) + + 指定容器是否已通过其启动探针。 + 初始化为 false,启动探针被认为成功后变为 true。 + 当容器重新启动或 kubelet 暂时丢失状态时重置为 false。 + 未定义启动探针时始终为 true。 + +- **containerStatuses** ([]ContainerStatus) + + 该列表在清单中的每个容器都有一个条目。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status + + + **ContainerStatus 包含此容器当前状态的详细信息。** + + - **containerStatuses.name** (string),必需 + + + 这必须是 DNS_LABEL。 + Pod 中的每个容器都必须具有唯一的名称。 + 无法更新。 + + - **containerStatuses.image** (string),必需 + + 容器正在运行的镜像。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images。 + + - **containerStatuses.imageID** (string),必需 + + 容器镜像的镜像 ID。 + + - **containerStatuses.containerID** (string) + + 格式为 '\://\' 的容器 ID。 + + - **containerStatuses.state** (ContainerState) + + 有关容器当前状况的详细信息。 + + + **`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 + + - **containerStatuses.state.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **containerStatuses.state.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **containerStatuses.state.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **containerStatuses.state.terminated.message** (string) + + 关于容器最后终止的消息 + + - **containerStatuses.state.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **containerStatuses.state.terminated.signal** (int32) + + 来自容器最后终止的信号 + + - **containerStatuses.state.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **containerStatuses.state.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **containerStatuses.state.waiting.reason** (string) + + (简要)容器尚未运行的原因。 + + - **containerStatuses.lastState** (ContainerState) + + 有关容器的最后终止条件的详细信息。 + + + **`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 + + - **containerStatuses.lastState.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **containerStatuses.lastState.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **containerStatuses.lastState.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **containerStatuses.lastState.terminated.message** (string) + + 关于容器最后终止的消息 + + - **containerStatuses.lastState.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **containerStatuses.lastState.terminated.signal** (int32) + + 来自容器最后终止的信号 + + + - **containerStatuses.lastState.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **containerStatuses.lastState.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **containerStatuses.lastState.waiting.reason** (string) + + (简要)容器尚未运行的原因 + + + - **containerStatuses.ready** (boolean),必需 + + 指定容器是否已通过其就绪态探针。 + + - **containerStatuses.restartCount** (int32),必需 + + 容器重启的次数。 + + - **containerStatuses.started** (boolean) + + 指定容器是否已通过其启动探针。 + 初始化为 false,启动探针被认为成功后变为 true。 + 当容器重新启动或 kubelet 暂时丢失状态时重置为 false。 + 未定义启动探针时始终为 true。 + + +- **ephemeralContainerStatuses** ([]ContainerStatus) + + 已在此 Pod 中运行的任何临时容器的状态。 + 此字段是 beta 级别的,可在尚未禁用 `EphemeralContainers` 功能门的集群上使用。 + + + **`ContainerStatus` 包含此容器当前状态的详细信息。** + + + - **ephemeralContainerStatuses.name** (string),必需 + + 这必须是 `DNS_LABEL`。 + Pod 中的每个容器都必须具有唯一的名称。无法更新。 + + - **ephemeralContainerStatuses.image** (string),必需 + + 容器正在运行的镜像。 + 更多信息: + https://kubernetes.io/zh-cn/docs/concepts/containers/images。 + + - **ephemeralContainerStatuses.imageID** (string),必需 + + 容器镜像的镜像 ID。 + + - **ephemeralContainerStatuses.containerID** (string) + + 格式为 '\://\' 的容器 ID。 + + + - **ephemeralContainerStatuses.state** (ContainerState) + + 有关容器当前状况的详细信息。 + + + **`ContainerState` 保存容器的可能状态。只能指定其成员之一。如果没有指定,则默认为 `ContainerStateWaiting`。** + + + - **ephemeralContainerStatuses.state.running** (ContainerStateRunning) + + 有关正在运行的容器的详细信息 + + + **`ContainerStateRunning` 是容器的运行状态。** + + - **ephemeralContainerStatuses.state.running.startedAt** (Time) + + 容器上次(重新)启动的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + + - **ephemeralContainerStatuses.state.terminated** (ContainerStateTerminated) + + 有关已终止容器的详细信息 + + + **ContainerStateTerminated 是容器的终止状态。** + + - **ephemeralContainerStatuses.state.terminated.containerID** (string) + + 格式为 '\://\' 的容器 ID + + - **ephemeralContainerStatuses.state.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **ephemeralContainerStatuses.state.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **ephemeralContainerStatuses.state.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **ephemeralContainerStatuses.state.terminated.message** (string) + + 关于容器最后终止的消息 + + - **ephemeralContainerStatuses.state.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **ephemeralContainerStatuses.state.terminated.signal** (int32) + + 来自容器最后终止的信号 + + - **ephemeralContainerStatuses.state.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **ephemeralContainerStatuses.state.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **ephemeralContainerStatuses.state.waiting.reason** (string) + + (简要)容器尚未运行的原因。 + + - **ephemeralContainerStatuses.lastState** (ContainerState) + + 有关容器的最后终止条件的详细信息。 + + + **`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 + + - **ephemeralContainerStatuses.lastState.terminated.exitCode** (int32),必需 + + 容器最后终止的退出状态 + + - **ephemeralContainerStatuses.lastState.terminated.startedAt** (Time) + + 容器先前执行的开始时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **ephemeralContainerStatuses.lastState.terminated.finishedAt** (Time) + + 容器最后终止的时间 + + + **Time 是 time.Time 的包装器,支持正确编组为 `YAML` 和 `JSON`。为 time 包提供的许多工厂方法提供了包装器。** + + - **ephemeralContainerStatuses.lastState.terminated.message** (string) + + 关于容器最后终止的消息 + + - **ephemeralContainerStatuses.lastState.terminated.reason** (string) + + (简要)容器最后终止的原因 + + - **ephemeralContainerStatuses.lastState.terminated.signal** (int32) + + 来自容器最后终止的信号 + + - **ephemeralContainerStatuses.lastState.waiting** (ContainerStateWaiting) + + 有关等待容器的详细信息 + + + **`ContainerStateWaiting` 是容器的等待状态。** + + - **ephemeralContainerStatuses.lastState.waiting.message** (string) + + 关于容器尚未运行的原因的消息。 + + - **ephemeralContainerStatuses.lastState.waiting.reason** (string) + + (简要)容器尚未运行的原因。 + + + - **ephemeralContainerStatuses.ready** (boolean),必需 + + 指定容器是否已通过其就绪态探针。 + + - **ephemeralContainerStatuses.restartCount** (int32),必需 + + 容器重启的次数。 + + - **ephemeralContainerStatuses.started** (boolean) + + 指定容器是否已通过其启动探针。 + 初始化为 false,启动探针被认为成功后变为 true。 + 当容器重新启动或 `kubelet` 暂时丢失状态时重置为 false。 + 未定义启动探针时始终为 true。 + +## PodList {#PodList} + + + +PodList 是 Pod 的列表。 + +
+ + +- **items** ([]}}">Pod),必需 + + Pod 列表。 + 更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md + +- **apiVersion** (string) + + apiVersion 定义对象表示的版本化模式。服务器应将已识别的模式转换为最新的内部值,并可能拒绝无法识别的值。 + 更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + +- **kind** (string) + + kind 是一个 `string` 值,表示此对象表示的 `REST` 资源。 + 服务器可以从客户端提交请求的端点推断出这一点。 + 无法更新。在驼峰式命名下。 + 更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + +- **metadata** (}}">ListMeta) + + 标准列表元数据。 + 更多信息: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + + +## 操作 {#Operations} + + +
+ + + +### `get` 读取指定的 Pod + + +#### HTTP 请求 + +GET /api/v1/namespaces/{namespace}/pods/{name} + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +401: Unauthorized + + +### `get` 读取指定 Pod 的 ephemeralcontainers + + +#### HTTP 请求 + +GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers + + +#### 参数 + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +401: Unauthorized + + + +### `get` 读取指定 Pod 的日志 + + +#### HTTP 请求 + +GET /api/v1/namespaces/{namespace}/pods/{name}/log + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + + +- **container** (**查询参数**): string + + 为其流式传输日志的容器。如果 Pod 中有一个容器,则默认为仅容器。 + + +- **follow** (**查询参数**) :boolean + + 跟踪 Pod 的日志流。默认为 false。 + + +- **insecureSkipTLSVerifyBackend** (**查询参数**) :boolean + + `insecureSkipTLSVerifyBackend` 表示 API 服务器不应确认它所连接的后端的服务证书的有效性。这将使 API 服务器和后端之间的 HTTPS 连接不安全。 + 这意味着 API 服务器无法验证它接收到的日志数据是否来自真正的 `kubelet`。 + 如果 `kubelet` 配置为验证 API 服务器的 `TLS` 凭据,这并不意味着与真实 `kubelet` 的连接容易受到中间人攻击(例如,攻击者无法拦截来自真实 `kubelet` 的实际日志数据)。 + + +- **limitBytes** (**查询参数**): integer + + 如果设置,则在终止日志输出之前从服务器读取的字节数。 + 这可能不会显示完整的最后一行日志记录,并且可能返回略多于或略小于指定限制。 + + +- **pretty** (**查询参数**): string + + }}">pretty + + +- **previous** (**查询参数**) :boolean + + 返回以前终止的容器日志。默认为 false。 + + +- **sinceSeconds** (**查询参数**): integer + + 显示日志的当前时间之前的相对时间(以秒为单位)。 + 如果此值早于 Pod 启动时间,则仅返回自 Pod 启动以来的日志。 + 如果此值是将来的值,则不会返回任何日志。 + 只能指定 `sinceSeconds` 或 `sinceTime` 之一。 + + +- **tailLines** (**查询参数**): integer + + 如果设置,则从日志末尾开始显示的行数。 + 如果未指定,则从容器创建或 `sinceSeconds `或 `sinceTime `显示日志 + + +- **timestamps** (**查询参数**) :boolean + + 如果为 true,则在每行日志输出的开头添加 `RFC3339` 或 `RFC3339Nano` 时间戳。默认为 false。 + + +#### 响应 + + +200 (string): OK + +401: Unauthorized + + +### `get` 读取指定 Pod 的状态 + + +#### HTTP 请求 + +GET /api/v1/namespaces/{namespace}/pods/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +401: Unauthorized + +### `list` 列出或观察 Pod 种类的对象 + + +#### HTTP 请求 + +GET /api/v1/namespaces/{namespace}/pods + + +#### 参数 + + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **allowWatchBookmarks** (**查询参数**) :boolean + + }}">allowWatchBookmarks + +- **continue** (**查询参数**): string + + }}">continue + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + +- **limit** (**查询参数**): integer + + }}">limit + +- **pretty** (**查询参数**): string + + }}">pretty + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + +- **timeoutSeconds** (**查询参数**): integer + + }}">timeoutSeconds + +- **watch** (**查询参数**) :boolean + + }}">watch + + +#### 响应 + + +200 (}}">PodList): OK + +401: Unauthorized + + +### `list` 列出或观察 Pod 种类的对象 + + +#### HTTP 请求 + +GET /api/v1/pods + + +#### 参数 + + +- **allowWatchBookmarks** (**查询参数**) :boolean + + }}">allowWatchBookmarks + +- **continue** (**查询参数**): string + + }}">continue + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + +- **limit** (**查询参数**): integer + + }}">limit + +- **pretty** (**查询参数**): string + + }}">pretty + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + +- **timeoutSeconds** (**查询参数**):整数 + + }}">timeoutSeconds + +- **watch** (**查询参数**) :boolean + + }}">watch + +#### 响应 + +200 (}}">PodList): OK + +401: Unauthorized + + +### `create` 创建一个 Pod + +#### HTTP 请求 + +POST /api/v1/namespaces/{namespace}/pods + + +#### 参数 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Pod,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +202 (}}">Pod): Accepted + +401: Unauthorized + +### `update` 替换指定的 Pod + +#### HTTP 请求 + +PUT /api/v1/namespaces/{namespace}/pods/{name} + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Pod,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + + +### `update` 替换指定 Pod 的 ephemeralcontainers + + +#### HTTP 请求 + +PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers + + +#### 参数 + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Pod,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + +### `update` 替换指定 Pod 的状态 + +#### HTTP 请求 + +PUT /api/v1/namespaces/{namespace}/pods/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Pod,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + +### `patch` 部分更新指定 Pod + + +#### HTTP 请求 + +PATCH /api/v1/namespaces/{namespace}/pods/{name} + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Patch,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **force** (**查询参数**) :boolean + + }}">force + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + +### `patch` 部分更新指定 Pod 的 ephemeralcontainers + +#### HTTP 请求 + +PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers + + +#### 参数 + + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Patch,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **force** (**查询参数**) :boolean + + }}">force + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + +### `patch` 部分更新指定 Pod 的状态 + +#### HTTP 请求 + +PATCH /api/v1/namespaces/{namespace}/pods/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">Patch,必需 + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + +- **force** (**查询参数**) :boolean + + }}">force + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">Pod): OK + +201 (}}">Pod): Created + +401: Unauthorized + +### `delete` 删除一个 Pod + + +#### HTTP 请求 + +DELETE /api/v1/namespaces/{namespace}/pods/{name} + + +#### 参数 + +- **name** (**路径参数**): string,必需 + + Pod 的名称 + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">DeleteOptions + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **gracePeriodSeconds** (**查询参数**): integer + + }}">gracePeriodSeconds + +- **pretty** (**查询参数**): string + + }}">pretty + +- **propagationPolicy** (**查询参数**): string + + }}">propagationPolicy + + +#### 响应 + +200 (}}">Pod): OK + +202 (}}">Pod): Accepted + +401: Unauthorized + +### `deletecollection` 删除 Pod 的集合 + +#### HTTP 请求 + +DELETE /api/v1/namespaces/{namespace}/pods + + +#### 参数 + + +- **namespace** (**路径参数**): string,必需 + + }}">namespace + +- **body**:}}">DeleteOptions + +- **continue** (**查询参数**): string + + }}">continue + +- **dryRun** (**查询参数**): string + + }}">dryRun + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + +- **gracePeriodSeconds** (**查询参数**): integer + + }}">gracePeriodSeconds + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + +- **limit** (**查询参数**): integer + + }}">limit + +- **pretty** (**查询参数**): string + + }}">pretty + +- **propagationPolicy** (**查询参数**): string + + }}">propagationPolicy + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + +- **timeoutSeconds** (**查询参数**): integer + + }}">timeoutSeconds + + +#### 响应 + +200 (}}">Status): OK + +401: Unauthorized \ No newline at end of file