Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。
Kubernetes 资源和"意向记录"都是作为 API 对象储存的,并可以通过调用 RESTful 风格的 API 进行修改。
API 允许以声明方式管理配置。
用户可以直接和 Kubernetes API 交互,也可以通过 kubectl
这样的工具进行交互。
核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。
Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。
Kubernetes 资源和"意向记录"都是作为 API 对象储存的,并可以通过调用 RESTful 风格的 API 进行修改。
API 允许以声明方式管理配置。
用户可以直接和 Kubernetes API 交互,也可以通过 kubectl
这样的工具进行交互。
核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。
apiVersion: v1
import "k8s.io/api/core/v1"
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 是对 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/
ephemeralContainers ([]EphemeralContainer)
补丁策略:基于 name
键合并
在此 Pod 中运行的临时容器列表。临时容器可以在现有的 Pod 中运行,以执行用户发起的操作,例如调试。
此列表在创建 Pod 时不能指定,也不能通过更新 Pod 规约来修改。
要将临时容器添加到现有 Pod,请使用 Pod 的 ephemeralcontainers
子资源。
imagePullSecrets ([]LocalObjectReference)
补丁策略:基于 name
键合并
imagePullSecrets 是对同一名字空间中 Secret 的引用的列表,用于拉取此 Pod 规约中使用的任何镜像,此字段可选。 如果指定,这些 Secret 将被传递给各个镜像拉取组件(Puller)实现供其使用。更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
enableServiceLinks (boolean)
enableServiceLinks 指示是否应将有关服务的信息注入到 Pod 的环境变量中,服务连接的语法与 Docker links 的语法相匹配。可选。默认为 true。
os (PodOS)
指定 Pod 中容器的操作系统。如果设置了此属性,则某些 Pod 和容器字段会受到限制。
如果 os 字段设置为 linux
,则必须不能设置以下字段:
securityContext.windowsOptions
如果 os 字段设置为 windows
,则必须不能设置以下字段:
spec.hostPID
spec.hostIPC
spec.hostUsers
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
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.nodeAffinity (NodeAffinity)
描述 Pod 的节点亲和性调度规则。
affinity.podAffinity (PodAffinity)
描述 Pod 亲和性调度规则(例如,将此 Pod 与其他一些 Pod 放在同一节点、区域等)。
affinity.podAntiAffinity (PodAntiAffinity)
描述 Pod 反亲和性调度规则(例如,避免将此 Pod 与其他一些 Pod 放在相同的节点、区域等)。
tolerations ([]Toleration)
如果设置了此字段,则作为 Pod 的容忍度。
这个 Toleration 所附加到的 Pod 能够容忍任何使用匹配运算符 <operator>
匹配三元组 <key,value,effect>
所得到的污点。
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 值应该是一个正常的字符串。
tolerations.effect (string)
effect 指示要匹配的污点效果。空值意味著匹配所有污点效果。如果要设置此字段,允许的值为
NoSchedule
、PreferNoSchedule
和 NoExecute
之一。
tolerations.tolerationSeconds (int64)
tolerationSeconds 表示容忍度(effect 必须是 NoExecute
,否则此字段被忽略)容忍污点的时间长度。
默认情况下,此字段未被设置,这意味着会一直能够容忍对应污点(不会发生驱逐操作)。
零值和负值会被系统当做 0 值处理(立即触发驱逐)。
schedulerName (string)
如果设置了此字段,则 Pod 将由指定的调度器调度。如果未指定,则使用默认调度器来调度 Pod。
runtimeClassName (string)
runtimeClassName 引用 node.k8s.io
组中的一个 RuntimeClass 对象,该 RuntimeClass 将被用来运行这个 Pod。
如果没有 RuntimeClass 资源与所设置的类匹配,则 Pod 将不会运行。
如果此字段未设置或为空,将使用 "旧版" RuntimeClass。
"旧版" RuntimeClass 可以视作一个隐式的运行时类,其定义为空,会使用默认运行时处理程序。
更多信息:
https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
priorityClassName (string)
如果设置了此字段,则用来标明 Pod 的优先级。
"system-node-critical"
和 "system-cluster-critical"
是两个特殊关键字,
分别用来表示两个最高优先级,前者优先级更高一些。
任何其他名称都必须通过创建具有该名称的 PriorityClass 对象来定义。
如果未指定此字段,则 Pod 优先级将为默认值。如果没有默认值,则为零。
priority (int32)
优先级值。各种系统组件使用该字段来确定 Pod 的优先级。当启用 Priority 准入控制器时, 该控制器会阻止用户设置此字段。准入控制器基于 priorityClassName 设置来填充此字段。 字段值越高,优先级越高。
preemptionPolicy (string)
preemptionPolicy 是用来抢占优先级较低的 Pod 的策略。取值为 "Never"
、"PreemptLowerPriority"
之一。
如果未设置,则默认为 "PreemptLowerPriority"
。
topologySpreadConstraints ([]TopologySpreadConstraint)
补丁策略:基于 topologyKey
键合并
映射:topologyKey, whenUnsatisfiable
键组合的唯一值 將在合并期间保留
TopologySpreadConstraints 描述一组 Pod 应该如何跨拓扑域来分布。调度器将以遵从此约束的方式来调度 Pod。 所有 topologySpreadConstraints 条目会通过逻辑与操作进行组合。
TopologySpreadConstraint 指定如何在规定的拓扑下分布匹配的 Pod。
topologySpreadConstraints.maxSkew (int32),必需
maxSkew 描述 Pod 可能分布不均衡的程度。当 whenUnsatisfiable=DoNotSchedule
时,
此字段值是目标拓扑中匹配的 Pod 数量与全局最小值之间的最大允许差值。
全局最小值是候选域中匹配 Pod 的最小数量,如果候选域的数量小于 minDomains
,则为零。
例如,在一个包含三个可用区的集群中,maxSkew 设置为 1,具有相同 labelSelector
的 Pod 分布为 2/2/1:
在这种情况下,全局最小值为 1。
| zone1 | zone2 | zone3 |
| PP | PP | P |
当 whenUnsatisfiable=ScheduleAnyway
时,此字段被用来给满足此约束的拓扑域更高的优先级。
此字段是一个必填字段。默认值为 1,不允许为 0。
topologySpreadConstraints.topologyKey (string),必需
topologyKey 是节点标签的键名。如果节点的标签中包含此键名且键值亦相同,则被认为在相同的拓扑域中。
我们将每个 <键, 值>
视为一个 "桶(Bucket)",并尝试将数量均衡的 Pod 放入每个桶中。
我们定义域(Domain)为拓扑域的特定实例。
此外,我们定义一个候选域(Eligible Domain)为其节点与 nodeAffinityPolicy 和 nodeTaintsPolicy 的要求匹配的域。
例如,如果 topologyKey 是 "kubernetes.io/hostname"
,则每个 Node 都是该拓扑的域。
而如果 topologyKey 是 "topology.kubernetes.io/zone"
,则每个区域都是该拓扑的一个域。
这是一个必填字段。
topologySpreadConstraints.whenUnsatisfiable (string),必需
whenUnsatisfiable 表示如果 Pod 不满足分布约束,如何处理它。
DoNotSchedule
(默认):告诉调度器不要调度它。ScheduleAnyway
:告诉调度器将 Pod 调度到任何位置,但给予能够降低偏差的拓扑更高的优先级。当且仅当该 Pod 的每个可能的节点分配都会违反某些拓扑对应的 "maxSkew" 时, 才认为传入 Pod 的约束是 "不可满足的"。
例如,在一个包含三个区域的集群中,maxSkew 设置为 1,具有相同 labelSelector 的 Pod 分布为 3/1/1:
| zone1 | zone2 | zone3 |
| P P P | P | P |
如果 whenUnsatisfiable 设置为 DoNotSchedule
,则传入的 Pod 只能调度到 "zone2"("zone3"),
Pod 分布变成 3/2/1(3/1/2),因为 "zone2"("zone3")上的实际偏差(Actual Skew) 为 2-1,
满足 maxSkew 约束(1)。
换句话说,集群仍然可以不平衡,但调度器不会使其更加地不平衡。
这是一个必填字段。
topologySpreadConstraints.labelSelector (LabelSelector)
labelSelector 用于识别匹配的 Pod。对匹配此标签选择算符的 Pod 进行计数, 以确定其相应拓扑域中的 Pod 数量。
原子性:将在合并期间被替换
matchLabelKeys 是一组 Pod 标签键,用于通过计算 Pod 分布方式来选择 Pod。 新 Pod 标签中不存在的键将被忽略。这些键用于从新来的 Pod 标签中查找值,这些键值标签与 labelSelector 进行逻辑与运算, 通过计算 Pod 的分布方式来选择现有 Pod 的组。matchLabelKeys 和 labelSelector 中禁止存在相同的键。未设置 labelSelector 时无法设置 matchLabelKeys。 新来的 Pod 标签中不存在的键将被忽略。null 或空的列表意味着仅与 labelSelector 匹配。
这是一个 Beta 字段,需要启用 MatchLabelKeysInPodTopologySpread 特性门控(默认启用)。
topologySpreadConstraints.minDomains (int32)
minDomains 表示符合条件的域的最小数量。当符合拓扑键的候选域个数小于 minDomains 时,
Pod 拓扑分布特性会将 "全局最小值" 视为 0,然后进行偏差的计算。
当匹配拓扑键的候选域的数量等于或大于 minDomains 时,此字段的值对调度没有影响。
因此,当候选域的数量少于 minDomains 时,调度程序不会将超过 maxSkew 个 Pods 调度到这些域。
如果字段值为 nil,所表达的约束为 minDomains 等于 1。
字段的有效值为大于 0 的整数。当字段值不为 nil 时,whenUnsatisfiable 必须为 DoNotSchedule
。
例如,在一个包含三个区域的集群中,maxSkew 设置为 2,minDomains 设置为 5,具有相同 labelSelector 的 Pod 分布为 2/2/2:
| zone1 | zone2 | zone3 |
| PP | PP | PP |
域的数量小于 5(minDomains 取值),因此"全局最小值"被视为 0。 在这种情况下,无法调度具有相同 labelSelector 的新 Pod,因为如果基于新 Pod 计算的偏差值将为 3(3-0)。将这个 Pod 调度到三个区域中的任何一个,都会违反 maxSkew 约束。
此字段是一个 Beta 字段,需要启用 MinDomainsInPodTopologySpread 特性门控(默认被启用)。
topologySpreadConstraints.nodeAffinityPolicy (string)
nodeAffinityPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理 Pod 的 nodeAffinity/nodeSelector。 选项为:
如果此值为 nil,此行为等同于 Honor 策略。 这是通过 NodeInclusionPolicyInPodTopologySpread 特性标志默认启用的 Beta 级别特性。
nodeTaintsPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理节点污点。选项为:
如果此值为 nil,此行为等同于 Ignore 策略。 这是通过 NodeInclusionPolicyInPodTopologySpread 特性标志默认启用的 Beta 级别特性。
overhead (map[string]Quantity)
overhead 表示与用指定 RuntimeClass 运行 Pod 相关的资源开销。 该字段将由 RuntimeClass 准入控制器在准入时自动填充。 如果启用了 RuntimeClass 准入控制器,则不得在 Pod 创建请求中设置 overhead 字段。 RuntimeClass 准入控制器将拒绝已设置 overhead 字段的 Pod 创建请求。 如果在 Pod 规约中配置并选择了 RuntimeClass,overhead 字段将被设置为对应 RuntimeClass 中定义的值, 否则将保持不设置并视为零。更多信息: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
restartPolicy (string)
Pod 内所有容器的重启策略。Always
、OnFailure
、Never
之一。
在某些情况下,可能只允许这些值的一个子集。默认为 Always
。更多信息:
https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
terminationGracePeriodSeconds (int64)
可选字段,表示 Pod 需要体面终止的所需的时长(以秒为单位)。字段值可以在删除请求中减少。 字段值必须是非负整数。零值表示收到 kill 信号则立即停止(没有机会关闭)。 如果此值为 nil,则将使用默认宽限期。 宽限期是从 Pod 中运行的进程收到终止信号后,到进程被 kill 信号强制停止之前,Pod 可以继续存在的时间(以秒为单位)。 应该将此值设置为比你的进程的预期清理时间更长。默认为 30 秒。
activeDeadlineSeconds (int64)
在系统将主动尝试将此 Pod 标记为已失败并杀死相关容器之前,Pod 可能在节点上活跃的时长; 时长计算基于 startTime 计算(以秒为单位)。字段值必须是正整数。
readinessGate ([]PodReadinessGate)
如果设置了此字段,则将评估所有就绪门控(Readiness Gate)以确定 Pod 就绪状况。 当所有容器都已就绪,并且就绪门控中指定的所有状况的 status 都为 "true" 时,Pod 被视为就绪。 更多信息: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
PodReadinessGate 包含对 Pod 状况的引用
readinessGates.conditionType (string),必需
conditionType 是指 Pod 的状况列表中类型匹配的状况。
hostname (string)
指定 Pod 的主机名。如果此字段未指定,则 Pod 的主机名将设置为系统定义的值。
setHostnameAsFQDN (boolean)
如果为 true,则 Pod 的主机名将配置为 Pod 的 FQDN,而不是叶名称(默认值)。
在 Linux 容器中,这意味着将内核的 hostname 字段(struct utsname 的 nodename 字段)设置为 FQDN。
在 Windows 容器中,这意味着将注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
的 hostname 键设置为 FQDN。如果 Pod 没有 FQDN,则此字段不起作用。
默认为 false。
subdomain (string)
如果设置了此字段,则完全限定的 Pod 主机名将是 <hostname>.<subdomain>.<Pod 名字空间>.svc.<集群域名>
。
如果未设置此字段,则该 Pod 将没有域名。
hostAliases ([]HostAlias)
补丁策略:基于 ip
键合并
hostAliases 是一个可选的列表属性,包含要被注入到 Pod 的 hosts 文件中的主机和 IP 地址。 这仅对非 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 策略。默认为 "ClusterFirst"
。
有效值为 "ClusterFirstWithHostNet"
、"ClusterFirst"
、"Default"
或 "None"
。
dnsConfig 字段中给出的 DNS 参数将与使用 dnsPolicy 字段所选择的策略合并。
要针对 hostNetwork 的 Pod 设置 DNS 选项,你必须将 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)
运行容器进程入口点(Entrypoint)的 UID。如果未指定,则默认为镜像元数据中指定的用户。
也可以在 SecurityContext 中设置。
如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在对应容器中所设置的 SecurityContext 值优先。
注意,spec.os.name
为 "windows" 时不能设置此字段。
securityContext.runAsNonRoot (boolean)
指示容器必须以非 root 用户身份运行。如果为 true,kubelet 将在运行时验证镜像, 以确保它不会以 UID 0(root)身份运行。如果镜像中确实使用 root 账号启动,则容器无法被启动。 如果此字段未设置或为 false,则不会执行此类验证。也可以在 SecurityContext 中设置。 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。
securityContext.runAsGroup (int64)
运行容器进程入口点(Entrypoint)的 GID。如果未设置,则使用运行时的默认值。
也可以在 SecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,
则在对应容器中设置的 SecurityContext 值优先。
注意,spec.os.name
为 "windows" 时不能设置该字段。
securityContext.supplementalGroups ([]int64)
此字段包含将应用到每个容器中运行的第一个进程的组列表。 容器进程的组成员身份取决于容器的主 GID、fsGroup(如果指定了的话) 和在容器镜像中为容器进程的 uid 定义的组成员身份,以及这里所给的列表。
如果未指定,则不会向任何容器添加其他组。
注意,在容器镜像中为容器进程的 uid 定义的组成员身份仍然有效,
即使它们未包含在此列表中也是如此。
注意,当 spec.os.name
为 windows
时,不能设置此字段。
securityContext.fsGroup (int64)
应用到 Pod 中所有容器的特殊补充组。某些卷类型允许 kubelet 将该卷的所有权更改为由 Pod 拥有:
setgid
位已设置(在卷中创建的新文件将归 fsGroup 所有)rw-rw----
进行按位或操作如果未设置此字段,kubelet 不会修改任何卷的所有权和权限。
注意,spec.os.name
为 "windows" 时不能设置此字段。
securityContext.fsGroupChangePolicy (string)
fsGroupChangePolicy 定义了在卷被在 Pod 中暴露之前更改其属主和权限的行为。
此字段仅适用于支持基于 fsGroup 的属主权(和权限)的卷类型。它不会影响临时卷类型,
例如:secret
、configmap
和 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 配置文件位置的下降路径。
仅当 type 为 "Localhost"
时才必须设置。不得为任何其他类别设置此字段。
securityContext.seLinuxOptions (SELinuxOptions)
应用于所有容器的 SELinux 上下文。如果未设置,容器运行时将为每个容器分配一个随机 SELinux 上下文。
也可以在 SecurityContext 中设置。
如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在对应容器中设置的 SecurityContext 值优先。
注意,spec.os.name
为 "windows" 时不能设置该字段。
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 列表。具有不受(容器运行时)支持的 sysctl 的 Pod 可能无法启动。
注意,spec.os.name
为 "windows" 时不能设置此字段。
securityContext.sysctls.name (string),必需
要设置的属性的名称。
securityContext.sysctls.value (string),必需
要设置的属性值。
securityContext.windowsOptions (WindowsSecurityContextOptions)
要应用到所有容器上的、特定于 Windows 的设置。
如果未设置此字段,将使用容器的 SecurityContext 中的选项。
如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。
注意,spec.os.name
为 "linux" 时不能设置该字段。
WindowsSecurityContextOptions 包含特定于 Windows 的选项和凭据。
securityContext.windowsOptions.gmsaCredentialSpec (string)
gmsaCredentialSpec 是 GMSA 准入 Webhook 内嵌由 gmsaCredentialSpecName 字段所指定的 GMSA 凭证规约内容的地方。
securityContext.windowsOptions.gmsaCredentialSpecName (string)
gmsaCredentialSpecName 是要使用的 GMSA 凭证规约的名称。
securityContext.windowsOptions.hostProcess (boolean)
hostProcess 确定容器是否应作为"主机进程"容器运行。 一个 Pod 的所有容器必须具有相同的有效 hostProcess 值(不允许混合设置了 hostProcess 的容器和未设置 hostProcess 容器)。 此外,如果 hostProcess 为 true,则 hostNetwork 也必须设置为 true。
securityContext.windowsOptions.runAsUserName (string)
Windows 中用来运行容器进程入口点的用户名。如果未设置,则默认为镜像元数据中指定的用户。 也可以在 PodSecurityContext 中设置。 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。
hostUsers (boolean)
使用主机的用户名字空间。可选:默认为 true。如果设置为 true 或不存在,则 Pod 将运行在主机的用户名字空间中, 当 Pod 需要仅对主机用户名字空间可用的一个特性时这会很有用,例如使用 CAP_SYS_MODULE 加载内核模块。 当设置为 false 时,会为该 Pod 创建一个新的用户名字空间。 设置为 false 对于缓解容器逃逸漏洞非常有用,可防止允许实际在主机上没有 root 特权的用户以 root 运行他们的容器。 此字段是 Alpha 级别的字段,只有启用 UserNamespacesSupport 特性的服务器才能使用此字段。
resourceClaims ([]PodResourceClaim)
补丁策略:retainKeys,基于键 name
合并
映射:键 name
的唯一值将在合并过程中保留
resourceClaims 定义了在允许 Pod 启动之前必须分配和保留哪些 ResourceClaims。 这些资源将可供那些按名称使用它们的容器使用。
这是一个 Alpha 特性的字段,需要启用 DynamicResourceAllocation 特性门控来开启此功能。
此字段不可变更。
PodResourceClaim 通过 ClaimSource 引用一个 ResourceClaim。 它为 ClaimSource 添加一个名称,作为 Pod 内 ResourceClaim 的唯一标识。 需要访问 ResourceClaim 的容器可使用此名称引用它。
resourceClaims.name (string), 必需
在 Pod 中,name
是此资源声明的唯一标识。此字段值必须是 DNS_LABEL。
resourceClaims.source (ClaimSource)
source
描述了在哪里可以找到 resourceClaim
。
ClaimSource 描述对 ResourceClaim 的引用。
应该设置且仅设置如下字段之一。此类型的消费者必须将空对象视为具有未知值。
resourceClaims.source.resourceClaimName (string)
resourceClaimName 是与此 Pod 位于同一命名空间中的 ResourceClaim 对象的名称。
resourceClaims.source.resourceClaimTemplateName (string)
resourceClaimTemplateName 是与此 Pod 位于同一命名空间中的 ResourceClaimTemplate
对象的名称。
该模板将用于创建一个新的 ResourceClaim,新的 ResourceClaim 将被绑定到此 Pod。 删除此 Pod 时,ResourceClaim 也将被删除。 Pod 名称和资源名称,连同生成的组件,将用于为 ResourceClaim 形成唯一名称, 该名称将记录在 pod.status.resourceClaimStatuses 中。
不属于此 Pod 但与此名称重名的现有 ResourceClaim 不会被用于此 Pod, 以避免错误地使用不相关的资源。Pod 的调度和启动动作会因此而被阻塞, 直到不相关的 ResourceClaim 被删除。
此字段是不可变更的,创建 ResourceClaim 后控制平面不会对相应的 ResourceClaim 进行任何更改。
schedulingGates ([]PodSchedulingGate)
补丁策略:基于 name
键合并
映射:键 name
的唯一值将在合并过程中保留
schedulingGates 是一个不透明的值列表,如果指定,将阻止调度 Pod。 如果 schedulingGates 不为空,则 Pod 将保持 SchedulingGated 状态,调度程序将不会尝试调度 Pod。
SchedulingGates 只能在 Pod 创建时设置,并且只能在创建之后删除。
此特性为 Beta 特性,需要通过 PodSchedulingReadiness 特性门控启用。
PodSchedulingGate 与 Pod 相关联以保护其调度。
schedulingGates.name (string),必需
调度门控的名称,每个调度门控的 name
字段取值必须唯一。
serviceAccount (string)
deprecatedServiceAccount 是 serviceAccountName 的弃用别名。此字段已被弃用:应改用 serviceAccountName。
要在 Pod 中运行的单个应用容器。
name (string),必需
指定为 DNS_LABEL 的容器的名称。Pod 中的每个容器都必须有一个唯一的名称 (DNS_LABEL)。无法更新。
image (string)
容器镜像名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/images。 此字段是可选的,以允许更高层的配置管理进行默认设置或覆盖工作负载控制器(如 Deployment 和 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)
使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。
$$
被简化为 $
,这允许转义 $(VAR_NAME)
语法:即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。
无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息:
https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
entrypoint 的参数。如果未提供,则使用容器镜像的 CMD
设置。变量引用 $(VAR_NAME)
使用容器的环境进行扩展。
如果无法解析变量,则输入字符串中的引用将保持不变。$$
被简化为 $
,这允许转义 $(VAR_NAME)
语法:
即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。无论变量是否存在,转义引用都不会被扩展。无法更新。
更多信息:
https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
容器的工作目录。如果未指定,将使用容器运行时的默认值,默认值可能在容器镜像中配置。无法更新。
ports([]ContainerPort)
补丁策略:基于 containerPort
键合并
映射:键 containerPort, protocol
组合的唯一值将在合并期间保留
要从容器暴露的端口列表。此处不指定端口不会阻止该端口被暴露。
任何侦听容器内默认 "0.0.0.0"
地址的端口都可以从网络访问。使用策略合并补丁来修改此数组可能会破坏数据。
更多细节请参阅 https://github.com/kubernetes/kubernetes/issues/108255。
无法更新。
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
键合并
要在容器中设置的环境变量列表。无法更新。
env.name (string),必需
环境变量的名称。必须是 C_IDENTIFIER。
env.value (string)
变量引用 $(VAR_NAME)
使用容器中先前定义的环境变量和任何服务环境变量进行扩展。
如果无法解析变量,则输入字符串中的引用将保持不变。
$$
会被简化为 $
,这允许转义 $(VAR_NAME)
语法:即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。
无论变量是否存在,转义引用都不会被扩展。默认为 ""。
env.valueFrom (EnvVarSource)
环境变量值的来源。如果 value 值不为空,则不能使用。
EnvVarSource 表示 envVar 值的来源。
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
选择某个 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['<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 (string),必需
要选择的 Secret 的主键。必须是有效的主键。
env.valueFrom.secretKeyRef.name (string)
被引用 Secret 的名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.secretKeyRef.optional (boolean)
指定 Secret 或其主键是否必须已经定义。
envFrom ([]EnvFromSource)
用来在容器中填充环境变量的数据源列表。在源中定义的键必须是 C_IDENTIFIER。 容器启动时,所有无效主键都将作为事件报告。 当一个键存在于多个源中时,与最后一个来源关联的值将优先。 由 env 定义的条目中,与此处键名重复者,以 env 中定义为准。无法更新。
EnvFromSource 表示一组 ConfigMaps 的来源
envFrom.configMapRef (ConfigMapEnvSource)
要从中选择主键的 ConfigMap。
ConfigMapEnvSource 选择一个 ConfigMap 来填充环境变量。目标 ConfigMap 的 data 字段的内容将键值对表示为环境变量。
envFrom.configMapRef.name (string)
被引用的 ConfigMap 的名称。更多信息: 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)
被引用 Secret 的名称。更多信息: 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 或未设置)以读写方式挂载。默认为 false。
volumeMounts.subPath (string)
卷中的路径,容器中的卷应该这一路径安装。默认为 ""(卷的根)。
volumeMounts.subPathExpr (string)
应安装容器卷的卷内的扩展路径。行为类似于 subPath,但环境变量引用 $(VAR_NAME)
使用容器的环境进行扩展。默认为 ""(卷的根)。subPathExpr
和 subPath
是互斥的。
volumeDevices ([]VolumeDevice)
补丁策略:基于 devicePath
键合并
volumeDevices 是容器要使用的块设备列表。
volumeDevices.devicePath (string),必需
devicePath 是设备将被映射到的容器内的路径。
volumeDevices.name (string),必需
name 必须与 Pod 中的 persistentVolumeClaim 的名称匹配
resources(ResourceRequirements)
此容器所需的计算资源。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
ResourceRequirements 描述计算资源需求。
resources.claims ([]ResourceClaim)
映射:键 name
的唯一值将在合并过程中保留
claims 列出此容器使用的资源名称,资源名称在 spec.resourceClaims
中定义。
这是一个 Alpha 特性字段,需要启用 DynamicResourceAllocation 功能门控开启此特性。
此字段不可变更,只能在容器级别设置。
ResourceClaim 引用 PodSpec.resourceClaims
中的一项。
resources.claims.name (string),必需
name
必须与使用该字段 Pod 的 pod.spec.resourceClaims
中的一个条目的名称相匹配。它使该资源在容器内可用。
resources.limits (map[string]Quantity)
limits 描述所允许的最大计算资源用量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[string]Quantity)
requests 描述所需的最小计算资源量。如果容器省略了 requests,但明确设定了 limits, 则 requests 默认值为 limits 值,否则为实现定义的值。请求不能超过限制。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
resizePolicy ([]ContainerResizePolicy)
原子性: 将在合并期间被替换
容器的资源调整策略。
ContainerResizePolicy 表示容器的资源大小调整策略
resizePolicy.resourceName (string), 必需
该资源调整策略适用的资源名称。支持的值:cpu、memory。
resizePolicy.restartPolicy (string), 必需
重启策略,会在调整指定资源大小时使用该策略。如果未指定,则默认为 NotRequired。
lifecycle (Lifecycle)
管理系统应对容器生命周期事件采取的行动。无法更新。
Lifecycle 描述管理系统为响应容器生命周期事件应采取的行动。 对于 postStart 和 preStop 生命周期处理程序,容器的管理会阻塞,直到操作完成, 除非容器进程失败,在这种情况下处理程序被中止。
lifecycle.postStart (LifecycleHandler)
创建容器后立即调用 postStart。如果处理程序失败,则容器将根据其重新启动策略终止并重新启动。 容器的其他管理阻塞直到钩子完成。更多信息: https://kubernetes.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
terminationMessagePath (string)
可选字段。挂载到容器文件系统的一个路径,容器终止消息写入到该路径下的文件中。
写入的消息旨在成为简短的最终状态,例如断言失败消息。如果大于 4096 字节,将被节点截断。
所有容器的总消息长度将限制为 12 KB。默认为 /dev/termination-log
。无法更新。
terminationMessagePolicy (string)
指示应如何填充终止消息。字段值 File
将使用 terminateMessagePath 的内容来填充成功和失败的容器状态消息。
如果终止消息文件为空并且容器因错误退出,FallbackToLogsOnError
将使用容器日志输出的最后一块。
日志输出限制为 2048 字节或 80 行,以较小者为准。默认为 File
。无法更新。
livenessProbe (Probe)
定期探针容器活跃度。如果探针失败,容器将重新启动。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes
readinessProbe (Probe)
定期探测容器服务就绪情况。如果探针失败,容器将被从服务端点中删除。无法更新。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes
startupProbe (Probe)
startupProbe 表示 Pod 已成功初始化。如果设置了此字段,则此探针成功完成之前不会执行其他探针。 如果这个探针失败,Pod 会重新启动,就像存活态探针失败一样。 这可用于在 Pod 生命周期开始时提供不同的探针参数,此时加载数据或预热缓存可能需要比稳态操作期间更长的时间。 这无法更新。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#container-probes
restartPolicy (string)
restartPolicy 定义 Pod 中各个容器的重新启动行为。 该字段仅适用于 Init 容器,唯一允许的值是 "Always"。 对于非 Init 容器或未指定此字段的情况,重新启动行为由 Pod 的重启策略和容器类型来定义。 将 restartPolicy 设置为 "Always" 会产生以下效果:该 Init 容器将在退出后持续重新启动,直到所有常规容器终止。 一旦所有常规容器已完成,所有具有 restartPolicy 为 "Always" 的 Init 容器将被关闭。 这种生命期与正常的 Init 容器不同,通常被称为 "sidecar" 容器。 虽然此 Init 容器仍然在 Init 容器序列中启动,但它在进入下一个 Init 容器之前并不等待容器完成。 相反,在此 Init 容器被启动后或在任意 startupProbe 已成功完成后下一个 Init 容器将立即启动。
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:
CAP_SYS_ADMIN
请注意,当 spec.os.name
为 "windows" 时,无法设置此字段。
securityContext.capabilities (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 配置文件位置下的下级路径。 仅当 type 为 "Localhost" 时才必须设置。不得为任何其他类别设置此字段。
securityContext.seLinuxOptions (SELinuxOptions)
要应用到容器上的 SELinux 上下文。如果未设置此字段,容器运行时将为每个容器分配一个随机的 SELinux 上下文。
也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,
则在 SecurityContext 中指定的值优先。注意,spec.os.name
为 "windows" 时不能设置此字段。
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 准入 Webhook 内嵌由 gmsaCredentialSpecName 字段所指定的 GMSA 凭证规约的内容的地方。
securityContext.windowsOptions.hostProcess (boolean)
hostProcess 确定容器是否应作为 "主机进程" 容器运行。 一个 Pod 的所有容器必须具有相同的有效 hostProcess 值(不允许混合设置了 hostProcess 容器和未设置 hostProcess 的容器)。 此外,如果 hostProcess 为 true,则 hostNetwork 也必须设置为 true。
securityContext.windowsOptions.runAsUserName (string)
Windows 中运行容器进程入口点的用户名。如果未指定,则默认为镜像元数据中指定的用户。 也可以在 PodSecurityContext 中设置。 如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。
stdin (boolean)
此容器是否应在容器运行时为 stdin 分配缓冲区。如果未设置,从容器中的 stdin 读取将始终导致 EOF。 默认为 false。
stdinOnce (boolean)
容器运行时是否应在某个 attach 打开 stdin 通道后关闭它。当 stdin 为 true 时,stdin 流将在多个 attach 会话中保持打开状态。 如果 stdinOnce 设置为 true,则 stdin 在容器启动时打开,在第一个客户端连接到 stdin 之前为空, 然后保持打开并接受数据,直到客户端断开连接,此时 stdin 关闭并保持关闭直到容器重新启动。 如果此标志为 false,则从 stdin 读取的容器进程将永远不会收到 EOF。默认为 false。
stdin
为真。默认为 false。EphemeralContainer 是一个临时容器,你可以将其添加到现有 Pod 以用于用户发起的活动,例如调试。 临时容器没有资源或调度保证,它们在退出或 Pod 被移除或重新启动时不会重新启动。 如果临时容器导致 Pod 超出其资源分配,kubelet 可能会驱逐 Pod。
要添加临时容器,请使用现有 Pod 的 ephemeralcontainers
子资源。临时容器不能被删除或重新启动。
name (string),必需
以 DNS_LABEL 形式设置的临时容器的名称。此名称在所有容器、Init 容器和临时容器中必须是唯一的。
targetContainerName (string)
如果设置,则为 Pod 规约中此临时容器所针对的容器的名称。临时容器将在该容器的名字空间(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)
使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。
$$
被简化为 $
,这允许转义 $(VAR_NAME)
语法:即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。
无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息:
https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
entrypoint 的参数。如果未提供,则使用镜像的 CMD
。
变量引用 $(VAR_NAME)
使用容器的环境进行扩展。如果无法解析变量,则输入字符串中的引用将保持不变。
$$
被简化为 $
,这允许转义 $(VAR_NAME)
语法:即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。
无论变量是否存在,转义引用都不会被扩展。无法更新。更多信息:
https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
容器的工作目录。如果未指定,将使用容器运行时的默认值,默认值可能在容器镜像中配置。无法更新。
env([]EnvVar)
补丁策略:基于 name
键合并
要在容器中设置的环境变量列表。无法更新。
env.name (string),必需
环境变量的名称。必须是 C_IDENTIFIER。
env.value (string)
变量引用 $(VAR_NAME)
使用容器中先前定义的环境变量和任何服务环境变量进行扩展。
如果无法解析变量,则输入字符串中的引用将保持不变。
$$
被简化为 $
,这允许转义 $(VAR_NAME)
语法:即 "$$(VAR_NAME)"
将产生字符串字面值 "$(VAR_NAME)"
。
无论变量是否存在,转义引用都不会被扩展。默认为 ""。
env.valueFrom (EnvVarSource)
环境变量值的来源。如果取值不为空,则不能使用。
EnvVarSource 表示 envVar 值的源。
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
选择 ConfigMap 的主键。
env.valueFrom.configMapKeyRef.key (string),必需
选择的主键。
env.valueFrom.configMapKeyRef.name(string)
所引用 ConfigMap 的名称。更多信息: 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['<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 (string),必需
要从 Secret 中选择的主键。必须是有效的主键。
env.valueFrom.secretKeyRef.name(string)
被引用 Secret 名称。更多信息: 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 表示一组 ConfigMap 来源
envFrom.configMapRef (ConfigMapEnvSource)
要从中选择的 ConfigMap。
ConfigMapEnvSource 选择一个 ConfigMap 来填充环境变量。目标 ConfigMap 的 data 字段的内容将键值对表示为环境变量。
envFrom.configMapRef.name(string)
被引用的 ConfigMap 名称。更多信息: 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)
被引用 ConfigMap 的名称。更多信息: 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 确定装载如何从主机传播到容器,及反向传播选项。
如果未设置,则使用 None
。此字段在 1.10 中为 Beta 字段。
volumeMounts.readOnly (boolean)
如果为 true,则挂载卷为只读,否则为读写(false 或未指定)。默认值为 false。
volumeMounts.subPath (string)
卷中的路径名,应该从该路径挂在容器的卷。默认为 "" (卷的根)。
volumeMounts.subPathExpr (string)
应安装容器卷的卷内的扩展路径。行为类似于 subPath
,但环境变量引用 $(VAR_NAME)
使用容器的环境进行扩展。默认为 ""(卷的根)。subPathExpr
和 SubPath
是互斥的。
volumeDevices ([]VolumeDevice)
补丁策略:基于 devicePath
键合并
volumeDevices 是容器要使用的块设备列表。
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 字节,将被节点截断。
所有容器的总消息长度将限制为 12 KB。默认为 /dev/termination-log
。无法更新。
terminationMessagePolicy (string)
指示应如何填充终止消息。字段值为 File
表示将使用 terminateMessagePath
的内容来填充成功和失败的容器状态消息。
如果终止消息文件为空并且容器因错误退出,字段值 FallbackToLogsOnError
表示将使用容器日志输出的最后一块。日志输出限制为 2048 字节或 80 行,以较小者为准。
默认为 File
。无法更新。
restartPolicy (string)
这是针对容器的重启策略,用于管理 Pod 内每个容器的重启行为。 此字段仅适用于 Init 容器,在临时容器上无法设置此字段。
stdin (boolean)
是否应在容器运行时内为此容器 stdin 分配缓冲区。 如果未设置,从容器中的 stdin 读数据将始终导致 EOF。默认为 false。
stdinOnce (boolean)
容器运行时是否应在某个 attach 操作打开 stdin 通道后关闭它。 当 stdin 为 true 时,stdin 流将在多个 attach 会话中保持打开状态。 如果 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:
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 配置文件位置下的子路径。 仅当 type 为 "Localhost" 时才必须设置。不得为任何其他类别设置此字段。
securityContext.seLinuxOptions (SELinuxOptions)
要应用于容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机
SELinux 上下文。也可以在 PodSecurityContext 中设置。
如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext
中指定的值优先。注意,spec.os.name
为 "windows" 时不能设置此字段。
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 准入 Webhook 内嵌由 gmsaCredentialSpecName 字段所指定的 GMSA 凭证规约内容的地方。
securityContext.windowsOptions.gmsaCredentialSpecName (string)
gmsaCredentialSpecName 是要使用的 GMSA 凭证规约的名称。
securityContext.windowsOptions.hostProcess (boolean)
hostProcess 确定容器是否应作为 "主机进程" 容器运行。 一个 Pod 的所有容器必须具有相同的有效 hostProcess 值 (不允许混合设置了 hostProcess 的容器和未设置 hostProcess 的容器)。 此外,如果 hostProcess 为 true,则 hostNetwork 也必须设置为 true。
securityContext.windowsOptions.runAsUserName (string)
Windows 中运行容器进程入口点的用户名。如果未指定,则默认为镜像元数据中指定的用户。 也可以在 PodSecurityContext 中设置。如果同时在 SecurityContext 和 PodSecurityContext 中设置,则在 SecurityContext 中指定的值优先。
ports([]ContainerPort)
补丁策略:基于 containerPort
键合并
映射:键 containerPort, protocol
组合的唯一值将在合并期间保留
临时容器不允许使用端口。
ports.containerPort (int32),必需
要在容器的 IP 地址上公开的端口号。这必须是有效的端口号 0 < x < 65536。
ports.hostIP (string)
要将外部端口绑定到的主机 IP。
ports.hostPort (int32)
要在主机上公开的端口号。如果设置了,则作为必须是一个有效的端口号,0 < x < 65536。 如果指定了 hostNetwork,此值必须与 containerPort 匹配。大多数容器不需要这个配置。
ports.name(string)
如果指定了,则作为端口的名称。必须是 IANA_SVC_NAME 并且在 Pod 中是唯一的。 Pod 中的每个命名端口都必须具有唯一的名称。服务可以引用的端口的名称。
ports.protocol (string)
端口协议。必须是 UDP
、TCP
或 SCTP
之一。默认为 TCP
。
resources (ResourceRequirements)
临时容器不允许使用资源。临时容器使用已分配给 Pod 的空闲资源。
ResourceRequirements 描述计算资源的需求。
resources.claims ([]ResourceClaim)
映射:键 name
的唯一值将在合并过程中保留
claims 列出了此容器使用的资源名称,资源名称在 spec.resourceClaims
中定义。
这是一个 Alpha 特性字段,需要启用 DynamicResourceAllocation 功能门控开启此特性。
此字段不可变更,只能在容器级别设置。
ResourceClaim 引用 PodSpec.ResourceClaims
中的一项。
resources.claims.name (string),必需
name
必须与使用该字段 Pod 的 pod.spec.resourceClaims
中的一个条目的名称相匹配。它使该资源在容器内可用。
resources.limits (map[string]Quantity)
limits 描述所允许的最大计算资源量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[string]Quantity)
requests 描述所需的最小计算资源量。如果对容器省略了 requests,则默认其资源请求值为 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
LifecycleHandler 定义了应在生命周期挂钩中执行的特定操作。 必须指定一个且只能指定一个字段,tcpSocket 除外。
exec (execAction)
Exec 指定要执行的操作。
exec.command ([]string)
command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。
该命令只是被通过 exec
执行,而不会单独启动一个 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),必需
HTTP 头部字段名称。 在输出时,它将被规范化处理,因此大小写变体的名称会被视为相同的头。
httpGet.httpHeaders.value (string),必需
HTTP 头部字段取值。
httpGet.path (string)
HTTP 服务器上的访问路径。
httpGet.scheme (string)
用于连接到主机的方案。默认为 HTTP
。
tcpSocket (TCPSocketAction)
已弃用。不再支持 tcpSocket
作为 LifecycleHandler,但为向后兼容保留之。
当指定 tcp
处理程序时,此字段不会被验证,而生命周期回调将在运行时失败。
tcpSocket.port (IntOrString),必需
容器上要访问的端口的编号或名称。端口号必须在 1 到 65535 的范围内。 名称必须是 IANA_SVC_NAME。
IntOrString 是一种可以保存 int32 或字符串值的类型。在 JSON 或 YAML 编组和解组中使用时, 会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。
tcpSocket.host (string)
可选字段。要连接的主机名,默认为 Pod IP。
节点亲和性是一组节点亲和性调度规则。
preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)
调度程序会更倾向于将 Pod 调度到满足该字段指定的亲和性表达式的节点, 但它可能会选择违反一个或多个表达式的节点。最优选的节点是权重总和最大的节点, 即对于满足所有调度要求(资源请求、requiredDuringScheduling 亲和表达式等)的每个节点, 通过迭代该字段的元素来计算总和如果节点匹配相应的 matchExpressions,则将 "权重" 添加到总和中; 具有最高总和的节点是最优选的。
空的首选调度条件匹配所有具有隐式权重 0 的对象(即它是一个 no-op 操作)。 null 值的首选调度条件不匹配任何对象(即也是一个 no-op 操作)。
preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm),必需
与相应权重相关联的节点选择条件。
null 值或空值的节点选择条件不会匹配任何对象。这些条件的请求按逻辑与操作组合。 TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。
preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)
按节点标签列出的节点选择条件列表。
preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)
按节点字段列出的节点选择要求列表。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必需
与匹配相应的 nodeSelectorTerm 相关的权重,范围为 1-100。
requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)
如果在调度时不满足该字段指定的亲和性要求,则不会将 Pod 调度到该节点上。 如果在 Pod 执行期间的某个时间点不再满足此字段指定的亲和性要求(例如:由于更新), 系统可能会或可能不会尝试最终将 Pod 从其节点中逐出。
一个节点选择器代表一个或多个标签查询结果在一组节点上的联合;换言之, 它表示由节点选择器项表示的选择器的逻辑或组合。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm),必需
必需的字段。节点选择条件列表。这些条件按逻辑或操作组合。
null 值或空值的节点选择器条件不匹配任何对象。这里的条件是按逻辑与操作组合的。 TopologySelectorTerm 类型实现了 NodeSelectorTerm 的一个子集。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
按节点标签列出的节点选择器需求列表。
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
按节点字段列出的节点选择器要求列表。
Pod 亲和性是一组 Pod 间亲和性调度规则。
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
调度器会更倾向于将 Pod 调度到满足该字段指定的亲和性表达式的节点,
但它可能会选择违反一个或多个表达式的节点。最优选择是权重总和最大的节点,
即对于满足所有调度要求(资源请求、requiredDuringScheduling
亲和表达式等)的每个节点,
通过迭代该字段的元素来计算总和,如果节点具有与相应 podAffinityTerm
匹配的 Pod,则将“权重”添加到总和中;
具有最高总和的节点是最优选的。
所有匹配的 WeightedPodAffinityTerm 字段的权重都是按节点累计的,以找到最优选的节点。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm),必需
必需的字段。一个 Pod 亲和性条件,对应一个与相应的权重值。
定义一组 Pod(即那些与给定名字空间相关的标签选择算符匹配的 Pod 集合),
当前 Pod 应该与所选 Pod 集合位于同一位置(亲和性)或位于不同位置(反亲和性),
其中“在同一位置”意味着运行在一个节点上,其键 topologyKey
的标签值与运行所选 Pod
集合中的某 Pod 的任何节点上的标签值匹配。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string),必需
此 Pod 应与指定名字空间中与标签选择算符匹配的 Pod 集合位于同一位置(亲和性)
或位于不同位置(反亲和性),这里的“在同一位置”意味着运行在一个节点上,其键名为
topologyKey
的标签值与运行所选 Pod 集合中的某 Pod 的任何节点上的标签值匹配。
不允许使用空的 topologyKey
。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
对一组资源的标签查询,在这里资源为 Pod。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
对条件所适用的名字空间集合的标签查询。 此条件会被应用到此字段所选择的名字空间和 namespaces 字段中列出的名字空间的组合之上。 选择算符为 null 和 namespaces 列表为 null 值或空表示“此 Pod 的名字空间”。 空的选择算符 ({}) 可用来匹配所有名字空间。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
namespaces 指定此条件所适用的名字空间,是一个静态列表。 此条件会被应用到 namespaces 字段中列出的名字空间和由 namespaceSelector 选中的名字空间上。 namespaces 列表为 null 或空,以及 namespaceSelector 值为 null 均表示“此 Pod 的名字空间”。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必需
weight 是匹配相应 podAffinityTerm
条件的权重,范围为 1-100。
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
如果在调度时不满足该字段指定的亲和性要求,则该 Pod 不会被调度到该节点上。
如果在 Pod 执行期间的某个时间点不再满足此字段指定的亲和性要求(例如:由于 Pod 标签更新),
系统可能会也可能不会尝试最终将 Pod 从其节点中逐出。
当此列表中有多个元素时,每个 podAffinityTerm
对应的节点列表是取其交集的,即必须满足所有条件。
定义一组 Pod(即那些与给定名字空间相关的标签选择算符匹配的 Pod 集合),当前 Pod 应该与该
Pod 集合位于同一位置(亲和性)或不位于同一位置(反亲和性)。
这里的“位于同一位置”含义是运行在一个节点上。基于 topologyKey
字段所给的标签键名,
检查所选 Pod 集合中各个 Pod 所在的节点上的标签值,标签值相同则认作“位于同一位置”。
requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string),必需
此 Pod 应与指定名字空间中与标签选择算符匹配的 Pod 集合位于同一位置(亲和性)
或不位于同一位置(反亲和性),
这里的“位于同一位置”含义是运行在一个节点上。基于 topologyKey
字段所给的标签键名,
检查所选 Pod 集合中各个 Pod 所在的节点上的标签值,标签值相同则认作“位于同一位置”。
不允许使用空的 topologyKey
。
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
对一组资源的标签查询,在这里资源为 Pod。
requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
对条件所适用的名字空间集合的标签查询。 当前条件将应用于此字段选择的名字空间和 namespaces 字段中列出的名字空间。 选择算符为 null 和 namespaces 列表为 null 或空值表示“此 Pod 的名字空间”。 空选择算符 ({}) 能够匹配所有名字空间。
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
namespaces 指定当前条件所适用的名字空间名称的静态列表。 当前条件适用于此字段中列出的名字空间和由 namespaceSelector 选中的名字空间。 namespaces 列表为 null 或空,以及 namespaceSelector 为 null 表示“此 Pod 的名字空间”。
Pod 反亲和性是一组 Pod 间反亲和性调度规则。
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
调度器更倾向于将 Pod 调度到满足该字段指定的反亲和性表达式的节点,
但它可能会选择违反一个或多个表达式的节点。
最优选的节点是权重总和最大的节点,即对于满足所有调度要求(资源请求、requiredDuringScheduling
反亲和性表达式等)的每个节点,通过遍历元素来计算总和如果节点具有与相应 podAffinityTerm
匹配的 Pod,则此字段并在总和中添加"权重";具有最高加和的节点是最优选的。
所有匹配的 WeightedPodAffinityTerm 字段的权重都是按节点添加的,以找到最优选的节点。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm),必需
必需的字段。一个 Pod 亲和性条件,与相应的权重相关联。
定义一组 Pod(即那些与给定名字空间相关的标签选择算符匹配的 Pod 集合),
当前 Pod 应该与所选 Pod 集合位于同一位置(亲和性)或不位于同一位置(反亲和性),
其中 "在同一位置" 意味着运行在一个节点上,其键 topologyKey
的标签值与运行所选 Pod
集合中的某 Pod 的任何节点上的标签值匹配。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string),必需
此 Pod 应与指定名字空间中与标签选择算符匹配的 Pod 集合位于同一位置(亲和性)
或不位于同一位置(反亲和性),这里的 "在同一位置" 意味着运行在一个节点上,其键名为
topologyKey
的标签值与运行所选 Pod 集合中的某 Pod 的任何节点上的标签值匹配。
不允许使用空的 topologyKey
。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
对一组资源的标签查询,在这里资源为 Pod。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
对条件所适用的名字空间集合的标签查询。 此条件会被应用到此字段所选择的名字空间和 namespaces 字段中列出的名字空间的组合之上。 选择算符为 null 和 namespaces 列表为 null 值或空表示 "此 Pod 的名字空间"。 空的选择算符 ({}) 可用来匹配所有名字空间。
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
namespaces 指定此条件所适用的名字空间,是一个静态列表。 此条件会被应用到 namespaces 字段中列出的名字空间和由 namespaceSelector 选中的名字空间上。 namespaces 列表为 null 或空,以及 namespaceSelector 值为 null 均表示 "此 Pod 的名字空间"。
preferredDuringSchedulingIgnoredDuringExecution.weight (int32),必需
weight 是匹配相应 podAffinityTerm
条件的权重,范围为 1-100。
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
如果在调度时不满足该字段指定的反亲和性要求,则该 Pod 不会被调度到该节点上。
如果在 Pod 执行期间的某个时间点不再满足此字段指定的反亲和性要求(例如:由于 Pod 标签更新),
系统可能会或可能不会尝试最终将 Pod 从其节点中逐出。
当有多个元素时,每个 podAffinityTerm
对应的节点列表是取其交集的,即必须满足所有条件。
定义一组 Pod(即那些与给定名字空间相关的标签选择算符匹配的 Pod 集合),当前 Pod 应该与该
Pod 集合位于同一位置(亲和性)或不位于同一位置(反亲和性)。
这里的 "位于同一位置" 含义是运行在一个节点上。基于 topologyKey
字段所给的标签键名,
检查所选 Pod 集合中各个 Pod 所在的节点上的标签值,标签值相同则认作 "位于同一位置"。
requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string),必需
此 Pod 应与指定名字空间中与标签选择算符匹配的 Pod 集合位于同一位置(亲和性)
或不位于同一位置(反亲和性),
这里的 "位于同一位置" 含义是运行在一个节点上。基于 topologyKey
字段所给的标签键名,
检查所选 Pod 集合中各个 Pod 所在的节点上的标签值,标签值相同则认作 "位于同一位置"。
不允许使用空的 topologyKey
。
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
对一组资源的标签查询,在这里资源为 Pod。
requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
对条件所适用的名字空间集合的标签查询。 当前条件将应用于此字段选择的名字空间和 namespaces 字段中列出的名字空间。 选择算符为 null 和 namespaces 列表为 null 或空值表示 “此 Pod 的名字空间”。 空选择算符 ({}) 能够匹配所有名字空间。
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
namespaces 指定当前条件所适用的名字空间名称的静态列表。 当前条件适用于此字段中列出的名字空间和由 namespaceSelector 选中的名字空间。 namespaces 列表为 null 或空,以及 namespaceSelector 为 null 表示 “此 Pod 的名字空间”。
探针描述了要对容器执行的健康检查,以确定它是否处于活动状态或准备好接收流量。
exec (execAction)
exec 指定要执行的操作。
exec.command ([]string)
command 是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。
该命令只是通过 exec
执行,而不会启动 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 标头。HTTP 允许重复的标头。
HTTPHeader 描述了在 HTTP 探针中使用的自定义标头。
httpGet.httpHeaders.name (string),必需
HTTP 头部域名称。 在输出时,它将被规范化处理,因此大小写变体的名称会被视为相同的头。
httpGet.httpHeaders.value (string),必需
HTTP 头部域值。
httpGet.path (string)
HTTP 服务器上的访问路径。
httpGet.scheme (string)
用于连接到主机的方案。默认为 HTTP。
tcpSocket (TCPSocketAction)
tcpSocket 指定涉及 TCP 端口的操作。
tcpSocket.port (IntOrString),必需
容器上要访问的端口的端口号或名称。端口号必须在 1 到 65535 内。名称必须是 IANA_SVC_NAME。
IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和解组时, 它会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。
tcpSocket.host (string)
可选字段。要连接的主机名,默认为 Pod IP。
初始延迟秒 (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 端口的操作。
grpc.port (int32),必需
gRPC 服务的端口号。数字必须在 1 到 65535 的范围内。
grpc.service (string)
service 是要放置在 gRPC 运行状况检查请求中的服务的名称 (请参见 https://github.com/grpc/grpc/blob/master/doc/health-checking.md)。
如果未指定,则默认行为由 gRPC 定义。
PodStatus 表示有关 Pod 状态的信息。状态内容可能会滞后于系统的实际状态, 尤其是在托管 Pod 的节点无法联系控制平面的情况下。
nominatedNodeName (string)
仅当此 Pod 抢占节点上的其他 Pod 时才设置 nominatedNodeName
,
但抢占操作的受害者会有体面终止期限,因此此 Pod 无法立即被调度。
此字段不保证 Pod 会在该节点上调度。
如果其他节点更早进入可用状态,调度器可能会决定将 Pod 放置在其他地方。
调度器也可能决定将此节点上的资源分配给优先级更高的、在抢占操作之后创建的 Pod。
因此,当 Pod 被调度时,该字段可能与 Pod 规约中的 nodeName 不同。
hostIP (string)
hostIP 存储分配给 Pod 的主机的 IP 地址。如果 Pod 尚未启动,则为空。 Pod 可以被调度到 kubelet 有问题的节点上,这意味着即使有节点被分配给 Pod,hostIP 也不会被更新。
hostIPs ([]HostIP)
补丁策略:基于 ip
键合并
原子性:将在合并期间被替换
hostIPs 存储分配给主机的 IP 地址列表。如果此字段被指定,则第一个条目必须与 hostIP 字段匹配。 如果 Pod 尚未启动,则此列表为空。Pod 可以被调度到 kubelet 有问题的节点上, 这意味着即使有节点被分配给此 Pod,HostIPs 也不会被更新。
hostIPs.ip (string)
ip 是分配给主机的 IP 地址。
startTime (Time)
kubelet 确认 Pod 对象的日期和时间,格式遵从 RFC 3339。 此时间点处于 kubelet 为 Pod 拉取容器镜像之前。
Time 是 time.Time
的包装器,支持正确编组为 YAML 和 JSON。
time 包所提供的许多工厂方法都有包装器。
phase (string)
Pod 的 phase 是对 Pod 在其生命周期中所处位置的简单、高级摘要。 conditions 数组、reason 和 message 字段以及各个容器的 status 数组包含有关 Pod 状态的进一步详细信息。phase 的取值有五种可能性:
Pending
:Pod 已被 Kubernetes 系统接受,但尚未创建容器镜像。
这包括 Pod 被调度之前的时间以及通过网络下载镜像所花费的时间。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 为何处于这种情况的详细信息。
reason (string)
一条简短的驼峰式命名的消息,指示有关 Pod 为何处于此状态的详细信息。例如 'Evicted'。
podIP (string)
分配给 Pod 的 podIP 地址。至少在集群内可路由。如果尚未分配则为空。
podIPs ([]PodIP)
补丁策略:基于 ip
键合并
podIPs 保存分配给 Pod 的 IP 地址。如果指定了该字段,则第 0 个条目必须与 podIP 字段值匹配。 Pod 最多可以为 IPv4 和 IPv6 各分配 1 个值。如果尚未分配 IP,则此列表为空。
podIP.ip (string)
ip 是分配给 Pod 的 IP 地址。
conditions ([]PodCondition)
补丁策略:基于 ip
键合并
Pod 的当前服务状态。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
PodCondition 包含此 Pod 当前状况的详细信息。
status 是 condition 的状态。可以是 True
、False
、Unknown
之一。更多信息:
https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
conditions.type (string),必需
type 是 condition 的类型。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
conditions.lastProbeTime (Time)
上次探测 Pod 状况的时间。
Time 是 time.Time
的包装器,支持正确编组为 YAML 和 JSON。
time 包所提供的许多工厂方法都有包装器。
conditions.lastTransitionTime (Time)
上次 Pod 状况从一种状态变为另一种状态的时间。
Time 是 time.Time
的包装器,支持正确编组为 YAML 和 JSON。
time 包所提供的许多工厂方法都有包装器。
conditions.message (string)
标示有关上次状况变化的详细信息的、人类可读的消息。
conditions.reason (string)
condition 最近一次变化的唯一、一个单词、驼峰式命名原因。
qosClass (string)
根据资源要求分配给 Pod 的服务质量 (QOS) 分类。有关可用的 QOS 类,请参阅 PodQOSClass 类型。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
initContainerStatuses ([]ContainerStatus)
该列表在清单中的每个 Init 容器中都有一个条目。最近成功的 Init 容器会将 ready 设置为 true, 最近启动的容器将设置 startTime。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus 包含此容器当前状态的详细信息。
containerStatuses ([]ContainerStatus)
清单中的每个容器状态在该列表中都有一个条目。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus 包含此容器当前状态的详细信息。
resourceClaimStatuses ([]PodResourceClaimStatus)
补丁策略:retainKeys,基于键 name
合并
映射:键 name
的唯一值将在合并过程中保留
资源申领的状态。
对于每个引用 ResourceClaimTemplate 的 PodResourceClaim,PodResourceClaimStatus 被存储在 PodStatus 中。它存储为对应 ResourceClaim 生成的名称。
resourceClaimStatuses.name (string), required
Name 在 Pod 中唯一地标识此资源申领。 此名称必须与 pod.spec.resourceClaims 中的条目名称匹配,这意味着字符串必须是 DNS_LABEL。
resourceClaimStatuses.resourceClaimName (string)
resourceClaimName 是为 Pod 在其名字空间中生成的 ResourceClaim 的名称。 如果此项未被设置,则不需要生成 ResourceClaim。在这种情况下,可以忽略 pod.spec.resourceClaims 这个条目。
resize (string)
Pod 容器所需的资源大小调整状态。如果没有待处理的资源调整大小,则它为空。 对容器资源的任何更改都会自动将其设置为"建议"值。
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 是一个字符串值,表示此对象表示的 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
get
读取指定的 PodGET /api/v1/namespaces/{namespace}/pods/{name}
200 (Pod): OK
401: Unauthorized
get
读取指定 Pod 的 ephemeralcontainersGET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
200 (Pod): OK
401: Unauthorized
get
读取指定 Pod 的日志GET /api/v1/namespaces/{namespace}/pods/{name}/log
name (路径参数): string,必需
Pod 的名称。
namespace (路径参数): string,必需
container (查询参数): string
为其流式传输日志的容器。如果 Pod 中有一个容器,则默认为仅容器。
follow (查询参数):boolean
跟踪 Pod 的日志流。默认为 false。
insecureSkipTLSVerifyBackend (查询参数):boolean
insecureSkipTLSVerifyBackend
表示 API 服务器不应确认它所连接的后端的服务证书的有效性。
这将使 API 服务器和后端之间的 HTTPS 连接不安全。
这意味着 API 服务器无法验证它接收到的日志数据是否来自真正的 kubelet。
如果 kubelet 配置为验证 API 服务器的 TLS 凭据,这并不意味着与真实 kubelet
的连接容易受到中间人攻击(例如,攻击者无法拦截来自真实 kubelet 的实际日志数据)。
limitBytes (查询参数): integer
如果设置,则表示在终止日志输出之前从服务器读取的字节数。 设置此参数可能导致无法显示完整的最后一行日志记录,并且可能返回略多于或略小于指定限制。
pretty (查询参数): string
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 的状态GET /api/v1/namespaces/{namespace}/pods/{name}/status
200 (Pod): OK
401: Unauthorized
list
列出或观察 Pod 种类的对象GET /api/v1/namespaces/{namespace}/pods
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数):boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数):boolean
200 (PodList): OK
401: Unauthorized
list
列出或观察 Pod 种类的对象GET /api/v1/pods
allowWatchBookmarks (查询参数):boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (PodList): OK
401: Unauthorized
create
创建一个 PodPOST /api/v1/namespaces/{namespace}/pods
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Pod): OK
201 (Pod): Created
202 (Pod): Accepted
401: Unauthorized
update
替换指定的 PodPUT /api/v1/namespaces/{namespace}/pods/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
update
替换指定 Pod 的 ephemeralcontainersPUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
update
替换指定 Pod 的状态PUT /api/v1/namespaces/{namespace}/pods/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
部分更新指定 PodPATCH /api/v1/namespaces/{namespace}/pods/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数):boolean
pretty (查询参数):string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
部分更新指定 Pod 的 ephemeralcontainersPATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数):boolean
pretty (查询参数):string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
部分更新指定 Pod 的状态PATCH /api/v1/namespaces/{namespace}/pods/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数):boolean
pretty (查询参数):string
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
delete
删除一个 PodDELETE /api/v1/namespaces/{namespace}/pods/{name}
name (路径参数): string,必需
Pod 的名称。
namespace (路径参数): string,必需
body:DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Pod): OK
202 (Pod): Accepted
401: Unauthorize
deletecollection
删除 Pod 的集合DELETE /api/v1/namespaces/{namespace}/pods
namespace (路径参数): string,必需
body:DeleteOptions
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
Binding 将一个对象与另一个对象绑定在一起;例如,调度程序将一个 Pod 绑定到一个节点。 1.7 版中已弃用,请使用 Pod 的 Binding 子资源代替。
apiVersion: v1
kind: Binding
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
target (ObjectReference), required
想要绑定到标准对象的目标对象。
create
创建 BindingPOST /api/v1/namespaces/{namespace}/bindings
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Binding): OK
201 (Binding): Created
202 (Binding): Accepted
401: Unauthorized
create
创建 Pod 的 bindingPOST /api/v1/namespaces/{namespace}/pods/{name}/binding
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Binding): OK
201 (Binding): Created
202 (Binding): Accepted
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
PodTemplate 描述一种模板,用来为预定义的 Pod 生成副本。
apiVersion: v1
kind: PodTemplate
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
template (PodTemplateSpec)
template 定义将基于此 Pod 模板所创建的 Pod。 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PodTemplateSpec 描述基于某模板所创建的 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
PodTemplateList 是 PodTemplate 对象的列表。
apiVersion: v1
kind: PodTemplateList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]PodTemplate),必需
PodTemplate 对象列表。
get
读取指定的 PodTemplateGET /api/v1/namespaces/{namespace}/podtemplates/{name}
name (路径参数):string,必需
PodTemplate 的名称
namespace (路径参数):string,必需
pretty (查询参数):string
200 (PodTemplate): OK
401: Unauthorized
list
列出或监视 PodTemplate 类型的对象GET /api/v1/namespaces/{namespace}/podtemplates
namespace (路径参数):string,必需
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersion (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (PodTemplateList): OK
401: Unauthorized
list
列出或监视 PodTemplate 类型的对象GET /api/v1/podtemplates
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (PodTemplateList): OK
401: Unauthorized
create
创建一个 PodTemplatePOST /api/v1/namespaces/{namespace}/podtemplates
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (PodTemplate): OK
201 (PodTemplate): Created
202 (PodTemplate): Accepted
401: Unauthorized
update
替换指定的 PodTemplatePUT /api/v1/namespaces/{namespace}/podtemplates/{name}
name (路径参数):string,必需
PodTemplate 的名称
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (PodTemplate): OK
201 (PodTemplate): Created
401: Unauthorized
patch
部分更新指定的 PodTemplatePATCH /api/v1/namespaces/{namespace}/podtemplates/{name}
name (路径参数):string,必需
PodTemplate 的名称
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
200 (PodTemplate): OK
201 (PodTemplate): Created
401: Unauthorized
delete
删除一个 PodTemplateDELETE /api/v1/namespaces/{namespace}/podtemplates/{name}
name (路径参数):string,必需
PodTemplate 的名称
namespace (路径参数):string,必需
body: DeleteOptions
dryRun (查询参数):string
gracePeriodSeconds (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (PodTemplate): OK
202 (PodTemplate): Accepted
401: Unauthorized
deletecollection
删除 PodTemplate 的集合DELETE /api/v1/namespaces/{namespace}/podtemplates
namespace (路径参数):string,必需
body: DeleteOptions
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数):integer
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ReplicaSet 确保在任何给定的时刻都在运行指定数量的 Pod 副本。
apiVersion: apps/v1
kind: ReplicaSet
metadata (ObjectMeta)
如果 ReplicaSet 的标签为空,则这些标签默认为与 ReplicaSet 管理的 Pod 相同。 标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ReplicaSetSpec)
spec 定义 ReplicaSet 预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (ReplicaSetStatus)
status 是最近观测到的 ReplicaSet 状态。此数据可能在某个时间窗之后过期。 该值由系统填充,只读。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ReplicaSetSpec 是 ReplicaSet 的规约。
selector (LabelSelector),必需
selector 是针对 Pod 的标签查询,应与副本计数匹配。标签的主键和取值必须匹配, 以便由这个 ReplicaSet 进行控制。它必须与 Pod 模板的标签匹配。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec)
template 是描述 Pod 的一个对象,将在检测到副本不足时创建此对象。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller#pod-template
replicas (int32)
replicas 是预期副本的数量。这是一个指针,用于辨别显式零和未指定的值。默认为 1。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
minReadySeconds (int32)
新建的 Pod 在没有任何容器崩溃的情况下就绪并被系统视为可用的最短秒数。 默认为 0(Pod 就绪后即被视为可用)。
ReplicaSetStatus 表示 ReplicaSet 的当前状态。
replicas (int32),必需
replicas 是最近观测到的副本数量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
availableReplicas (int32)
此副本集可用副本(至少 minReadySeconds 才能就绪)的数量。
readyReplicas (int32)
readyReplicas 是此 ReplicaSet 在就绪状况下处理的目标 Pod 数量。
fullyLabeledReplicas (int32)
标签与 ReplicaSet 的 Pod 模板标签匹配的 Pod 数量。
conditions ([]ReplicaSetCondition)
补丁策略:按照键 type
合并
Map:键类型的唯一值将在合并期间保留
表示副本集当前状态的最新可用观测值。
ReplicaSetCondition 描述某个点的副本集状态。
conditions.status (string),必需
状况的状态,取值为 True、False 或 Unknown 之一。
conditions.type (string),必需
副本集状况的类型。
conditions.lastTransitionTime (Time)
状况上次从一个状态转换为另一个状态的时间。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。 为 time 包的许多函数方法提供了封装器。
conditions.message (string)
这是一条人类可读的消息,指示有关上次转换的详细信息。
conditions.reason (string)
状况上次转换的原因。
observedGeneration (int64)
observedGeneration 反映了最近观测到的 ReplicaSet 生成情况。
ReplicaSetList 是多个 ReplicaSet 的集合。
apiVersion: apps/v1
kind: ReplicaSetList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ReplicaSet),必需
ReplicaSet 的列表。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller
get
读取指定的 ReplicaSetGET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
200 (ReplicaSet): OK
401: Unauthorized
get
读取指定的 ReplicaSet 的状态GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
200 (ReplicaSet): OK
401: Unauthorized
list
列出或监视 ReplicaSet 类别的对象GET /apis/apps/v1/namespaces/{namespace}/replicasets
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ReplicaSetList): OK
401: Unauthorized
list
列出或监视 ReplicaSet 类别的对象GET /apis/apps/v1/replicasets
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ReplicaSetList): OK
401: Unauthorized
create
创建 ReplicaSetPOST /apis/apps/v1/namespaces/{namespace}/replicasets
namespace (路径参数): string,必需
body: ReplicaSet,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicaSet): OK
201 (ReplicaSet): Created
202 (ReplicaSet): Accepted
401: Unauthorized
update
替换指定的 ReplicaSetPUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
name (路径参数): string,必需
ReplicaSet 的名称
namespace (路径参数): string,必需
body: ReplicaSet,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
update
替换指定的 ReplicaSet 的状态PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
name (路径参数): string,必需
ReplicaSet 的名称
namespace (路径参数): string,必需
body: ReplicaSet,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
patch
部分更新指定的 ReplicaSetPATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
name (路径参数): string,必需
ReplicaSet 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
patch
部分更新指定的 ReplicaSet 的状态PATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
name (路径参数): string,必需
ReplicaSet 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
delete
删除 ReplicaSetDELETE /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
name (路径参数): string,必需
ReplicaSet 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 ReplicaSet 的集合DELETE /apis/apps/v1/namespaces/{namespace}/replicasets
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
ReplicationController 表示一个副本控制器的配置。
apiVersion: v1
kind: ReplicationController
metadata (ObjectMeta)
如果 ReplicationController 的标签为空,则这些标签默认为与副本控制器管理的 Pod 相同。 标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ReplicationControllerSpec)
spec 定义副本控制器预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (ReplicationControllerStatus)
status 是最近观测到的副本控制器的状态。此数据可能在某个时间窗之后过期。 该值由系统填充,只读。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ReplicationControllerSpec 表示一个副本控制器的规约。
selector (map[string]string)
selector 是针对 Pod 的标签查询,符合条件的 Pod 个数应与 replicas 匹配。
如果 selector 为空,则默认为出现在 Pod 模板中的标签。
如果置空以表示默认使用 Pod 模板中的标签,则标签的主键和取值必须匹配,以便由这个副本控制器进行控制。
template.spec.restartPolicy
唯一被允许的值是 Always
。
更多信息:
https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec)
template 是描述 Pod 的一个对象,将在检测到副本不足时创建此对象。 此字段优先于 templateRef。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller#pod-template
replicas (int32)
replicas 是预期副本的数量。这是一个指针,用于辨别显式零和未指定的值。默认为 1。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
minReadySeconds (int32)
新建的 Pod 在没有任何容器崩溃的情况下就绪并被系统视为可用的最短秒数。 默认为 0(Pod 就绪后即被视为可用)。
ReplicationControllerStatus 表示一个副本控制器的当前状态。
replicas (int32),必需
replicas 是最近观测到的副本数量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
availableReplicas (int32)
这个副本控制器可用副本(至少 minReadySeconds 才能就绪)的数量。
readyReplicas (int32)
此副本控制器所用的就绪副本的数量。
fullyLabeledReplicas (int32)
标签与副本控制器的 Pod 模板标签匹配的 Pod 数量。
conditions ([]ReplicationControllerCondition)
补丁策略:按照键 type
合并
Map:键 type
的唯一值将在合并期间保留
表示副本控制器当前状态的最新可用观测值。
ReplicationControllerCondition 描述某个点的副本控制器的状态。
conditions.status (string),必需
状况的状态,取值为 True、False 或 Unknown 之一。
conditions.type (string),必需
副本控制器状况的类型。
conditions.lastTransitionTime (Time)
状况上次从一个状态转换为另一个状态的时间。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。 为 time 包的许多函数方法提供了封装器。
这是一条人类可读的消息,指示有关上次转换的详细信息。
conditions.reason (string)
状况上次转换的原因。
observedGeneration (int64)
observedGeneration 反映了最近观测到的副本控制器的生成情况。
ReplicationControllerList 是副本控制器的集合。
apiVersion: v1
kind: ReplicationControllerList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ReplicationController),必需
副本控制器的列表。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicationcontroller
get
读取指定的 ReplicationControllerGET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
pretty (查询参数): string
200 (ReplicationController): OK
401: Unauthorized
get
读取指定的 ReplicationController 的状态GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
pretty (查询参数): string
200 (ReplicationController): OK
401: Unauthorized
list
列出或监视 ReplicationController 类别的对象GET /api/v1/namespaces/{namespace}/replicationcontrollers
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ReplicationControllerList): OK
401: Unauthorized
list
列出或监视 ReplicationController 类别的对象GET /api/v1/replicationcontrollers
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ReplicationControllerList): OK
401: Unauthorized
create
创建 ReplicationControllerPOST /api/v1/namespaces/{namespace}/replicationcontrollers
namespace (路径参数): string,必需
body: ReplicationController,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicationController): OK
201 (ReplicationController): Created
202 (ReplicationController): Accepted
401: Unauthorized
update
替换指定的 ReplicationControllerPUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
body: ReplicationController,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicationController): OK
201 (ReplicationController): Created
401: Unauthorized
update
替换指定的 ReplicationController 的状态PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
body: ReplicationController,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ReplicationController): OK
201 (ReplicationController): Created
401: Unauthorized
patch
部分更新指定的 ReplicationControllerPATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ReplicationController): OK
201 (ReplicationController): Created
401: Unauthorized
patch
部分更新指定的 ReplicationController 的状态PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ReplicationController): OK
201 (ReplicationController): Created
401: Unauthorized
delete
删除 ReplicationControllerDELETE /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
name (路径参数): string,必需
ReplicationController 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 ReplicationController 的集合DELETE /api/v1/namespaces/{namespace}/replicationcontrollers
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
Deployment 使得 Pod 和 ReplicaSet 能够进行声明式更新。
apiVersion: apps/v1
kind: Deployment
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (DeploymentSpec)
Deployment 预期行为的规约。
status (DeploymentStatus)
最近观测到的 Deployment 状态。
DeploymentSpec 定义 Deployment 预期行为的规约。
selector (LabelSelector),必需
供 Pod 所用的标签选择算符。通过此字段选择现有 ReplicaSet 的 Pod 集合, 被选中的 ReplicaSet 将受到这个 Deployment 的影响。此字段必须与 Pod 模板的标签匹配。
template (PodTemplateSpec),必需
template 描述将要创建的 Pod。template.spec.restartPolicy
唯一被允许的值是 Always
。
replicas (int32)
预期 Pod 的数量。这是一个指针,用于辨别显式零和未指定的值。默认为 1。
minReadySeconds (int32)
新建的 Pod 在没有任何容器崩溃的情况下就绪并被系统视为可用的最短秒数。 默认为 0(Pod 就绪后即被视为可用)。
strategy (DeploymentStrategy)
补丁策略:retainKeys
将现有 Pod 替换为新 Pod 时所用的部署策略。
DeploymentStrategy 描述如何将现有 Pod 替换为新 Pod。
strategy.type (string)
部署的类型。取值可以是 “Recreate” 或 “RollingUpdate”。默认为 RollingUpdate。
strategy.rollingUpdate (RollingUpdateDeployment)
滚动更新这些配置参数。仅当 type = RollingUpdate 时才出现。
strategy.rollingUpdate.maxSurge (IntOrString)
超出预期的 Pod 数量之后可以调度的最大 Pod 数量。该值可以是一个绝对数(例如: 5)或一个预期 Pod 的百分比(例如:10%)。如果 MaxUnavailable 为 0,则此字段不能为 0。 通过向上取整计算得出一个百分比绝对数。默认为 25%。例如:当此值设为 30% 时, 如果滚动更新启动,则可以立即对 ReplicaSet 扩容,从而使得新旧 Pod 总数不超过预期 Pod 数量的 130%。 一旦旧 Pod 被杀死,则可以再次对新的 ReplicaSet 扩容, 确保更新期间任何时间运行的 Pod 总数最多为预期 Pod 数量的 130%。
IntOrString 是可以保存 int32 或字符串的一个类型。 当用于 JSON 或 YAML 编组和取消编组时,它会产生或消费内部类型。 例如,这允许你拥有一个可以接受名称或数值的 JSON 字段。
strategy.rollingUpdate.maxUnavailable (IntOrString)
更新期间可能不可用的最大 Pod 数量。该值可以是一个绝对数(例如: 5)或一个预期 Pod 的百分比(例如:10%)。通过向下取整计算得出一个百分比绝对数。 如果 MaxSurge 为 0,则此字段不能为 0。默认为 25%。 例如:当此字段设为 30%,则在滚动更新启动时 ReplicaSet 可以立即缩容为预期 Pod 数量的 70%。 一旦新的 Pod 就绪,ReplicaSet 可以再次缩容,接下来对新的 ReplicaSet 扩容, 确保更新期间任何时间可用的 Pod 总数至少是预期 Pod 数量的 70%。
IntOrString 是可以保存 int32 或字符串的一个类型。 当用于 JSON 或 YAML 编组和取消编组时,它会产生或消费内部类型。 例如,这允许你拥有一个可以接受名称或数值的 JSON 字段。
revisionHistoryLimit (int32)
保留允许回滚的旧 ReplicaSet 的数量。这是一个指针,用于辨别显式零和未指定的值。默认为 10。
progressDeadlineSeconds (int32)
Deployment 在被视为失败之前取得进展的最大秒数。Deployment 控制器将继续处理失败的部署, 原因为 ProgressDeadlineExceeded 的状况将被显示在 Deployment 状态中。 请注意,在 Deployment 暂停期间将不会估算进度。默认为 600s。
paused (boolean)
指示部署被暂停。
DeploymentStatus 是最近观测到的 Deployment 状态。
replicas (int32)
此部署所针对的(其标签与选择算符匹配)未终止 Pod 的总数。
availableReplicas (int32)
此部署针对的可用(至少 minReadySeconds 才能就绪)的 Pod 总数。
readyReplicas (int32)
readyReplicas 是此 Deployment 在就绪状况下处理的目标 Pod 数量。
unavailableReplicas (int32)
此部署针对的不可用 Pod 总数。这是 Deployment 具有 100% 可用容量时仍然必需的 Pod 总数。 它们可能是正在运行但还不可用的 Pod,也可能是尚未创建的 Pod。
updatedReplicas (int32)
此 Deployment 所针对的未终止 Pod 的总数,这些 Pod 采用了预期的模板规约。
collisionCount (int32)
供 Deployment 所用的哈希冲突计数。 Deployment 控制器在需要为最新的 ReplicaSet 创建名称时将此字段用作冲突预防机制。
conditions ([]DeploymentCondition)
补丁策略:按照键 type
合并
Map:键 type
的唯一值将在合并期间保留
表示 Deployment 当前状态的最新可用观测值。
DeploymentCondition 描述某个点的部署状态。
conditions.status (string),必需
状况的状态,取值为 True、False 或 Unknown 之一。
conditions.type (string),必需
Deployment 状况的类型。
conditions.lastTransitionTime (Time)
状况上次从一个状态转换为另一个状态的时间。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。 为 time 包的许多函数方法提供了封装器。
conditions.lastUpdateTime (Time)
上次更新此状况的时间。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。 为 time 包的许多函数方法提供了封装器。
conditions.message (string)
这是一条人类可读的消息,指示有关上次转换的详细信息。
conditions.reason (string)
状况上次转换的原因。
observedGeneration (int64)
Deployment 控制器观测到的代数(Generation)。
DeploymentList 是 Deployment 的列表。
apiVersion: apps/v1
kind: DeploymentList
metadata (ListMeta)
标准的列表元数据。
items ([]Deployment),必需
items 是 Deployment 的列表。
get
读取指定的 DeploymentGET /apis/apps/v1/namespaces/{namespace}/deployments/{name}
200 (Deployment): OK
401: Unauthorized
get
读取指定的 Deployment 的状态GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
200 (Deployment): OK
401: Unauthorized
list
列出或监视 Deployment 类别的对象GET /apis/apps/v1/namespaces/{namespace}/deployments
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (DeploymentList): OK
401: Unauthorized
list
列出或监视 Deployment 类别的对象GET /apis/apps/v1/deployments
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (DeploymentList): OK
401: Unauthorized
create
创建 DeploymentPOST /apis/apps/v1/namespaces/{namespace}/deployments
namespace (路径参数): string,必需
body: Deployment,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Deployment): OK
201 (Deployment): Created
202 (Deployment): Accepted
401: Unauthorized
update
替换指定的 DeploymentPUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}
name (路径参数): string,必需
Deployment 的名称
namespace (路径参数): string,必需
body: Deployment,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Deployment): OK
201 (Deployment): Created
401: Unauthorized
update
替换指定的 Deployment 的状态PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
name (路径参数): string,必需
Deployment 的名称
namespace (路径参数): string,必需
body: Deployment,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Deployment): OK
201 (Deployment): Created
401: Unauthorized
patch
部分更新指定的 DeploymentPATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}
name (路径参数): string,必需
Deployment 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Deployment): OK
201 (Deployment): Created
401: Unauthorized
patch
部分更新指定的 Deployment 的状态PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
name (路径参数): string,必需
Deployment 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Deployment): OK
201 (Deployment): Created
401: Unauthorized
delete
删除 DeploymentDELETE /apis/apps/v1/namespaces/{namespace}/deployments/{name}
name (路径参数): string,必需
Deployment 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 Deployment 的集合DELETE /apis/apps/v1/namespaces/{namespace}/deployments
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet 表示一组具有一致身份的 Pod。身份定义为:
StatefulSet 保证给定的网络身份将始终映射到相同的存储身份。
apiVersion: apps/v1
kind: StatefulSet
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。
spec (StatefulSetSpec)
spec 定义集合中 Pod 的预期身份。
status (StatefulSetStatus)
status 是 StatefulSet 中 Pod 的当前状态,此数据可能会在某个时间窗口内过时。
StatefulSetSpec 是 StatefulSet 的规约。
serviceName (string), 必需
serviceName 是管理此 StatefulSet 服务的名称。 该服务必须在 StatefulSet 之前即已存在,并负责该集合的网络标识。 Pod 会获得符合以下模式的 DNS/主机名: pod-specific-string.serviceName.default.svc.cluster.local。 其中 “pod-specific-string” 由 StatefulSet 控制器管理。
selector (LabelSelector), 必需
selector 是对 Pod 的标签查询,查询结果应该匹配副本个数。 此选择算符必须与 Pod 模板中的 label 匹配。 更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), 必需
template 是用来描述 Pod 的对象,检测到副本不足时将创建所描述的 Pod。
经由 StatefulSet 创建的每个 Pod 都将满足这个模板,但与 StatefulSet 的其余 Pod 相比,每个 Pod 具有唯一的标识。
每个 Pod 将以 <statefulsetname>-<podindex> 格式命名。
例如,名为 "web" 且索引号为 "3" 的 StatefulSet 中的 Pod 将被命名为 "web-3"。
template.spec.restartPolicy
唯一被允许的值是 Always
。
replicas (int32)
replicas 是给定模板的所需的副本数。之所以称作副本,是因为它们是相同模板的实例, 不过各个副本也具有一致的身份。如果未指定,则默认为 1。
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy 是一个 StatefulSetUpdateStrategy,表示当对 template 进行修订时,用何种策略更新 StatefulSet 中的 Pod 集合。
StatefulSetUpdateStrategy 表示 StatefulSet 控制器将用于执行更新的策略。其中包括为指定策略执行更新所需的额外参数。
type 表示 StatefulSetUpdateStrategy 的类型,默认为 RollingUpdate。
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
当 type 为 RollingUpdate 时,使用 rollingUpdate 来传递参数。
RollingUpdateStatefulSetStrategy 用于为 rollingUpdate 类型的更新传递参数。
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
更新期间不可用的 Pod 个数上限。取值可以是绝对数量(例如:5)或所需 Pod 的百分比(例如:10%)。 绝对数是通过四舍五入的百分比计算得出的。不能为 0,默认为 1。 此字段为 Alpha 级别,仅被启用 MaxUnavailableStatefulSet 特性的服务器支持。 此字段适用于 0 到 replicas-1 范围内的所有 Pod。这意味着如果在 0 到 replicas-1 范围内有任何不可用的 Pod, 这些 Pod 将被计入 maxUnavailable 中。
IntOrString 是一种可以包含 int32 或字符串数值的类型。在 JSON 或 YAML 编组和解组时, 会生成或使用内部类型。例如,此类型允许你定义一个可以接受名称或数字的 JSON 字段。
updateStrategy.rollingUpdate.partition (int32)
partition 表示 StatefulSet 应该被分区进行更新时的序数。 在滚动更新期间,序数在 replicas-1 和 partition 之间的所有 Pod 都会被更新。 序数在 partition-1 和 0 之间的所有 Pod 保持不变。 这一属性有助于进行金丝雀部署。默认值为 0。
podManagementPolicy (string)
podManagementPolicy 控制在初始规模扩展期间、替换节点上的 Pod 或缩减集合规模时如何创建 Pod。 默认策略是 “OrderedReady”,各个 Pod 按升序创建的(pod-0,然后是pod-1 等), 控制器将等到每个 Pod 都准备就绪后再继续。缩小集合规模时,Pod 会以相反的顺序移除。 另一种策略是 “Parallel”,意味着并行创建 Pod 以达到预期的规模而无需等待,并且在缩小规模时将立即删除所有 Pod。
revisionHistoryLimit (int32)
revisionHistoryLimit 是在 StatefulSet 的修订历史中维护的修订个数上限。 修订历史中包含并非由当前所应用的 StatefulSetSpec 版本未表示的所有修订版本。默认值为 10。
volumeClaimTemplates ([]PersistentVolumeClaim)
原子:将在合并期间被替换
volumeClaimTemplates 是允许 Pod 引用的申领列表。 StatefulSet controller 负责以维持 Pod 身份不变的方式将网络身份映射到申领之上。 此列表中的每个申领至少必须在模板的某个容器中存在匹配的(按 name 匹配)volumeMount。 此列表中的申领优先于模板中具有相同名称的所有卷。
minReadySeconds (int32)
新创建的 Pod 应准备就绪(其任何容器都未崩溃)的最小秒数,以使其被视为可用。 默认为 0(Pod 准备就绪后将被视为可用)。
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy 描述从 VolumeClaimTemplates 创建的持久卷申领的生命周期。 默认情况下,所有持久卷申领都根据需要创建并被保留到手动删除。 此策略允许更改申领的生命周期,例如在 StatefulSet 被删除或其中 Pod 集合被缩容时删除持久卷申领。 此属性需要启用 StatefulSetAutoDeletePVC 特性门控。特性处于 Beta 阶段。
StatefulSetPersistentVolumeClaimRetentionPolicy 描述了用于从 StatefulSet VolumeClaimTemplate 创建的 PVC 的策略
persistentVolumeClaimRetentionPolicy.whenDeleted (string)
whenDeleted 指定当 StatefulSet 被删除时,基于 StatefulSet VolumeClaimTemplates 所创建的 PVC 会发生什么。
默认策略 Retain
使 PVC 不受 StatefulSet 被删除的影响。Delete
策略会导致这些 PVC 也被删除。
persistentVolumeClaimRetentionPolicy.whenScaled (string)
whenScaled 指定当 StatefulSet 缩容时,基于 StatefulSet volumeClaimTemplates 创建的 PVC 会发生什么。
默认策略 Retain
使 PVC 不受缩容影响。 Delete
策略会导致超出副本个数的所有的多余 Pod 所关联的 PVC 被删除。
ordinals (StatefulSetOrdinals)
ordinals 控制 StatefulSet 中副本索引的编号。 默认序数行为是将索引 "0" 设置给第一个副本,对于每个额外请求的副本,该索引加一。
StatefulSetOrdinals 描述此 StatefulSet 中用于副本序数赋值的策略。
ordinals.start (int32)
start 是代表第一个副本索引的数字。它可用于从替代索引(例如:从 1 开始索引)而非默认的从 0 索引来为副本设置编号,
还可用于编排从一个 StatefulSet 到另一个 StatefulSet 的渐进式副本迁移动作。如果设置了此值,副本索引范围为 [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas)。如果不设置,则默认为 0。 副本索引范围为 [0, .spec.replicas)。
StatefulSetStatus 表示 StatefulSet 的当前状态。
replicas (int32), 必需
replicas 是 StatefulSet 控制器创建的 Pod 个数。
readyReplicas (int32)
readyReplicas 是为此 StatefulSet 创建的、状况为 Ready 的 Pod 个数。
currentReplicas (int32)
currentReplicas 是 StatefulSet 控制器根据 currentReplicas 所指的 StatefulSet 版本创建的 Pod 个数。
updatedReplicas (int32)
updatedReplicas 是 StatefulSet 控制器根据 updateRevision 所指的 StatefulSet 版本创建的 Pod 个数。
availableReplicas (int32)
此 StatefulSet 所对应的可用 Pod 总数(就绪时长至少为 minReadySeconds)。
collisionCount (int32)
collisionCount 是 StatefulSet 的哈希冲突计数。 StatefulSet controller 在需要为最新的 controllerRevision 创建名称时使用此字段作为避免冲突的机制。
conditions ([]StatefulSetCondition)
补丁策略:根据 type
键执行合并操作
补丁策略:根据 type
键执行合并操作
表示 StatefulSet 当前状态的最新可用观察结果。
StatefulSetCondition 描述了 StatefulSet 在某个点的状态。
conditions.status (string), 必需
状况的状态为 True、False、Unknown 之一。
currentRevision (string)
currentRevision,如果不为空,表示用于在序列 [0,currentReplicas) 之间生成 Pod 的 StatefulSet 的版本。
updateRevision (string)
updateRevision,如果不为空,表示用于在序列 [replicas-updatedReplicas,replicas) 之间生成 Pod 的 StatefulSet 的版本。
observedGeneration (int64)
observedGeneration 是 StatefulSet 的最新一代。它对应于 StatefulSet 的代数,由 API 服务器在变更时更新。
StatefulSetList 是 StatefulSet 的集合。
apiVersion: apps/v1
kind: StatefulSetList
metadata (ListMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]StatefulSet), 必需
items 是 StatefulSet 的列表。
get
读取指定的 StatefulSetGET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, 必需
pretty (查询参数): string
200 (StatefulSet): OK
401: Unauthorized
get
读取指定 StatefulSet 的状态GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, 必需
pretty (查询参数): string
200 (StatefulSet): OK
401: Unauthorized
list
列出或监视 StatefulSet 类型的对象GET /apis/apps/v1/namespaces/{namespace}/statefulsets
namespace (路径参数): string, 必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (StatefulSetList): OK
401: Unauthorized
list
列出或监视 StatefulSet 类型的对象GET /apis/apps/v1/statefulsets
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (StatefulSetList): OK
401: Unauthorized
create
创建一个 StatefulSetPOST /apis/apps/v1/namespaces/{namespace}/statefulsets
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
200 (StatefulSet): OK
201 (StatefulSet): Created
202 (StatefulSet): Accepted
401: Unauthorized
update
替换指定的 StatefulSetPUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
name (路径参数): string, 必需
StatefulSet 的名称 。
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
update
替换指定 StatefulSet 的状态PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, required
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
patch
部分更新指定的 StatefulSetPATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
patch
部分更新指定 StatefulSet 的状态PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
delete
删除一个 StatefulSetDELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
name (路径参数): string, 必需
StatefulSet 的名称。
namespace (路径参数): string, 必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 StatefulSet 的集合DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
namespace (路径参数): string, 必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ControllerRevision 实现了状态数据的不可变快照。 客户端负责序列化和反序列化对象,包含对象内部状态。 成功创建 ControllerRevision 后,将无法对其进行更新。 API 服务器将无法成功验证所有尝试改变 data 字段的请求。 但是,可以删除 ControllerRevisions。 请注意,由于 DaemonSet 和 StatefulSet 控制器都使用它来进行更新和回滚,所以这个对象是 Beta 版。 但是,它可能会在未来版本中更改名称和表示形式,客户不应依赖其稳定性。 它主要供控制器内部使用。
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
revision (int64),必需
revision 表示 data 表示的状态的修订。
data (RawExtension)
data 是状态的序列化表示。
要使用它,请生成一个字段,在外部、版本化结构中以 RawExtension 作为其类型,在内部结构中以 Object 作为其类型。 你还需要注册你的各个插件类型。
// 内部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.Object `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 外部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.RawExtension `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 在网络上,JSON 看起来像这样:
{
"kind":"MyAPIObject",
"apiVersion":"v1",
"myPlugin": {
"kind":"PluginA",
"aOption":"foo",
},
}
那么会发生什么?
解码首先使用 json 或 yaml 将序列化数据解组到你的外部 MyAPIObject 中。
这会导致原始 JSON 被存储下来,但不会被解包。
下一步是复制(使用 pkg/conversion)到内部结构中。
runtime 包的 DefaultScheme 安装了转换函数,它将解析存储在 RawExtension 中的 JSON,
将其转换为正确的对象类型,并将其存储在 Object 中。
(TODO:如果对象是未知类型,将创建并存储一个 runtime.Unknown
对象。)
ControllerRevisionList 是一个包含 ControllerRevision 对象列表的资源。
metadata (ListMeta)
更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]ControllerRevision),必需
items 是 ControllerRevisions 的列表
get
读取特定的 ControllerRevisionGET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (路径参数):string,必需
ControllerRevision 的名称
namespace (路径参数):string,必需
pretty (查询参数):string
200 (ControllerRevision): OK
401: Unauthorized
list
列出或监视 ControllerRevision 类别的对象GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (路径参数):string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数)): integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ControllerRevisionList): OK
401: Unauthorized
list
列出或监视 ControllerRevision 类别的对象GET /apis/apps/v1/controllerrevisions
allowWatchBookmarks (查询参数): boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数): integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ControllerRevisionList): OK
401: Unauthorized
create
创建一个 ControllerRevisionPOST /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
202 (ControllerRevision): Accepted
401: Unauthorized
update
替换特定的 ControllerRevisionPUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (路径参数):string,必需
ControllerRevision 的名称
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
patch
部分更新特定的 ControllerRevisionPATCH /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (路径参数):string,必需
ControllerRevision 的名称
namespace (路径参数):string,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数): boolean
pretty (查询参数):string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
delete
删除一个 ControllerRevisionDELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (路径参数):string,必需
ControllerRevision 的名称
namespace (路径参数):string,必需
dryRun (查询参数):string
gracePeriodSeconds (查询参数): integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 ControllerRevision 集合DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (路径参数):string,必需
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数):string
limit (查询参数): integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
DaemonSet 表示守护进程集的配置。
apiVersion: apps/v1
kind: DaemonSet
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (DaemonSetSpec)
此守护进程集的预期行为。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (DaemonSetStatus)
此守护进程集的当前状态。此数据可能已经过时一段时间。由系统填充。 只读。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
DaemonSetSpec 是守护进程集的规约。
selector (LabelSelector), 必需
对由守护进程集管理的 Pod 的标签查询。Pod 必须匹配此查询才能被此 DaemonSet 控制。 查询条件必须与 Pod 模板的标签匹配。 更多信息: https://kubernetes.io/zh-cn/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), 必需
描述将要创建的 Pod 的对象。DaemonSet 将在与模板的节点选择器匹配的每个节点上
(如果未指定节点选择器,则在每个节点上)准确创建此 Pod 的副本。template.spec.restartPolicy
唯一被允许配置的值是 "Always"。更多信息:
https://kubernetes.io/zh-cn/concepts/workloads/controllers/replicationcontroller#pod-template
minReadySeconds (int32)
新建的 DaemonSet Pod 应该在没有任何容器崩溃的情况下处于就绪状态的最小秒数,这样它才会被认为是可用的。 默认为 0(Pod 准备就绪后将被视为可用)。
updateStrategy (DaemonSetUpdateStrategy)
用新 Pod 替换现有 DaemonSet Pod 的更新策略。
DaemonSetUpdateStrategy 是一个结构体,用于控制 DaemonSet 的更新策略。
updateStrategy.type (string)
守护进程集更新的类型。可以是 "RollingUpdate" 或 "OnDelete"。默认为 RollingUpdate。
updateStrategy.rollingUpdate (RollingUpdateDaemonSet)
滚动更新配置参数。仅在 type 值为 "RollingUpdate" 时出现。
用于控制守护进程集滚动更新的预期行为的规约。
updateStrategy.rollingUpdate.maxSurge (IntOrString)
对于拥有可用 DaemonSet Pod 的节点而言,在更新期间可以拥有更新后的 DaemonSet Pod 的最大节点数。 属性值可以是绝对数量(例如:5)或所需 Pod 的百分比(例如:10%)。 如果 maxUnavailable 为 0,则该值不能为 0。绝对数是通过四舍五入从百分比计算得出的,最小值为 1。 默认值为 0。示例:当设置为 30% 时,最多为节点总数的 30% 节点上应该运行守护进程 Pod (即 status.desiredNumberScheduled) 可以在旧 Pod 标记为已删除之前创建一个新 Pod。更新首先在 30% 的节点上启动新的 Pod。 一旦更新的 Pod 可用(就绪时长至少 minReadySeconds 秒),该节点上的旧 DaemonSet pod 就会被标记为已删除。 如果旧 Pod 因任何原因变得不可用(Ready 转换为 false、被驱逐或节点被腾空), 则会立即在该节点上创建更新的 Pod,而不考虑激增限制。 允许激增意味着如果就绪检查失败,任何给定节点上的守护进程集消耗的资源可能会翻倍, 因此资源密集型守护进程集应该考虑到它们可能会在中断期间导致驱逐。
IntOrString 是一种可以容纳 int32 或字符串的类型。在 JSON 或 YAML 编组和解组中使用时,它会生成或使用内部类型。 例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
更新期间不可用的 DaemonSet Pod 的最大数量。值可以是绝对数(例如:5)或更新开始时 DaemonSet Pod 总数的百分比(例如:10%)。 绝对数是通过四舍五入的百分比计算得出的。如果 maxSurge 为 0,则此值不能为 0 默认值为 1。 例如:当设置为 30% 时,最多节点总数 30% 的、应该运行守护进程的节点总数(即 status.desiredNumberScheduled) 可以在任何给定时间停止更新。更新首先停止最多 30% 的 DaemonSet Pod, 然后在它们的位置启动新的 DaemonSet Pod。 一旦新的 Pod 可用,它就会继续处理其他 DaemonSet Pod,从而确保在更新期间至少 70% 的原始 DaemonSet Pod 数量始终可用。
IntOrString 是一种可以保存 int32 或字符串的类型。在 JSON 或 YAML 编组和解组中使用时,它会生成或使用内部类型。例如,这允许你拥有一个可以接受名称或数字的 JSON 字段。
revisionHistoryLimit (int32)
用来允许回滚而保留的旧历史记录的数量。此字段是个指针,用来区分明确的零值和未指定的指针。默认值是 10。
DaemonSetStatus 表示守护进程集的当前状态。
numberReady (int32),必需
numberReady 是应该运行守护进程 Pod 并且有一个或多个 DaemonSet Pod 以就绪条件运行的节点数。
numberAvailable (int32)
应该运行守护进程 Pod 并有一个或多个守护进程 Pod 正在运行和可用(就绪时长超过 spec.minReadySeconds)的节点数量。
numberUnavailable (int32)
应该运行守护进程 Pod 并且没有任何守护进程 Pod 正在运行且可用(至少已就绪 spec.minReadySeconds 秒)的节点数。
numberMisscheduled (int32),必需
正在运行守护进程 Pod,但不应该运行守护进程 Pod 的节点数量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/
desiredNumberScheduled (int32),必需
应该运行守护进程 Pod 的节点总数(包括正确运行守护进程 Pod 的节点)。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/
currentNumberScheduled (int32),必需
运行至少 1 个守护进程 Pod 并且应该运行守护进程 Pod 的节点数。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/
updatedNumberScheduled (int32)
正在运行更新后的守护进程 Pod 的节点总数。
collisionCount (int32)
DaemonSet 的哈希冲突计数。DaemonSet 控制器在需要为最新的 ControllerRevision 创建名称时使用此字段作为避免冲突的机制。
conditions ([]DaemonSetCondition)
补丁策略:根据 type
键合并
Map:键 type
的唯一值将在合并期间保留
表示 DaemonSet 当前状态的最新可用观测信息。
DaemonSet Condition 描述了 DaemonSet 在某一时刻的状态。
conditions.status (string),必需
状况的状态,True、False、Unknown 之一。
conditions.type (string),必需
DaemonSet 状况的类型。
conditions.lastTransitionTime (Time)
状况上次从一种状态转换到另一种状态的时间。
Time 是对 time.Time 的封装,支持正确编码为 YAML 和 JSON。time 包为许多工厂方法提供了封装器。
conditions.message (string)
一条人类可读的消息,指示有关转换的详细信息。
conditions.reason (string)
状况最后一次转换的原因。
observedGeneration (int64)
守护进程集控制器观察到的最新一代。
DaemonSetList 是守护进程集的集合。
apiVersion: apps/v1
kind: DaemonSetList
metadata (ListMeta)
标准列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]DaemonSet), 必需
DaemonSet 的列表。
get
读取指定的 DaemonSetGET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
name (路径参数): string, 必需
DaemonSet 的名称
200 (DaemonSet): OK
401: 未授权
get
读取指定的 DaemonSet 的状态GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
name (路径参数): string, 必需
DaemonSet 的名称
namespace (路径参数): string, 必需
pretty (查询参数): string
200 (DaemonSet): OK
401: 未授权
list
列表或查看 DaemonSet 类型的对象GET /apis/apps/v1/namespaces/{namespace}/daemonsets
namespace (路径参数): string, 必需
allowWatchBookmarks (路径参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (DaemonSetList): OK
401: 未授权
list
列表或查看 DaemonSet 类型的对象GET /apis/apps/v1/daemonsets
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (DaemonSetList): OK
401: 未授权
create
创建一个 DaemonSetPOST /apis/apps/v1/namespaces/{namespace}/daemonsets
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (DaemonSet): OK
201 (DaemonSet): 创建完成
202 (DaemonSet): 已接受
401: 未授权
update
替换指定的 DaemonSetPUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (DaemonSet): OK
201 (DaemonSet): 已创建
401: 未授权
update
替换指定 DaemonSet 的状态PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (DaemonSet): OK
201 (DaemonSet): 已创建
401: 未授权
patch
部分更新指定的 DaemonSetPATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force 查询参数): boolean
pretty (查询参数): string
200 (DaemonSet): OK
201 (DaemonSet): 已创建
401: 未授权
patch
部分更新指定 DaemonSet 的状态PATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (DaemonSet): OK
201 (DaemonSet): 已创建
401: 未授权
delete
删除一个 DaemonSetDELETE /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
name (路径参数): string,必需
DaemonSet 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 DaemonSet 的集合DELETE /apis/apps/v1/namespaces/{namespace}/daemonsets
namespace (路径参数): string, 必需
body: DeleteOptions
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: 未授权
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
Job 表示单个任务的配置。
apiVersion: batch/v1
kind: Job
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (JobSpec)
任务的预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (JobStatus)
任务的当前状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
JobSpec 描述了任务执行的情况。
template (PodTemplateSpec), 必需
描述执行任务时将创建的 Pod。template.spec.restartPolicy 可以取的值只能是 "Never" 或 "OnFailure"。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
parallelism (int32)
指定任务应在任何给定时刻预期运行的 Pod 个数上限。 当(.spec.completions - .status.successful) < .spec.parallelism 时, 即当剩余的工作小于最大并行度时,在稳定状态下运行的 Pod 的实际数量将小于此数量。 更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
completions (int32)
指定任务应该运行并预期成功完成的 Pod 个数。设置为空意味着任何 Pod 的成功都标识着所有 Pod 的成功, 并允许 parallelism 设置为任何正值。设置为 1 意味着并行性被限制为 1,并且该 Pod 的成功标志着任务的成功。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
completionMode (string)
completionMode 指定如何跟踪 Pod 完成情况。它可以是 NonIndexed
(默认)或者 Indexed
。
NonIndexed
表示当有 .spec.completions
个成功完成的 Pod 时,认为 Job 完成。每个 Pod 完成都是彼此同源的。
Indexed
意味着 Job 的各个 Pod 会获得对应的完成索引值,从 0 到(.spec.completions - 1
),可在注解
"batch.kubernetes.io/job-completion-index" 中找到。当每个索引都对应有一个成功完成的 Pod 时,
该任务被认为是完成的。
当值为 Indexed
时,必须指定 .spec.completions
并且 .spec.parallelism
必须小于或等于 10^5。
此外,Pod 名称采用 $(job-name)-$(index)-$(random-string)
的形式,Pod 主机名采用
$(job-name)-$(index)
的形式。
将来可能添加更多的完成模式。如果 Job 控制器发现它无法识别的模式 (这种情况在升级期间由于版本偏差可能发生),则控制器会跳过 Job 的更新。
backoffLimit (int32)
指定标记此任务失败之前的重试次数。默认值为 6。
activeDeadlineSeconds (int64)
系统尝试终止任务之前任务可以持续活跃的持续时间(秒),时间长度是相对于 startTime 的; 字段值必须为正整数。如果任务被挂起(在创建期间或因更新而挂起), 则当任务再次恢复时,此计时器会被停止并重置。
ttlSecondsAfterFinished (int32)
ttlSecondsAfterFinished 限制已完成执行(完成或失败)的任务的生命周期。如果设置了这个字段, 在 Job 完成 ttlSecondsAfterFinished 秒之后,就可以被自动删除。 当 Job 被删除时,它的生命周期保证(例如终结器)会被考察。 如果未设置此字段,则任务不会被自动删除。如果此字段设置为零,则任务在完成后即可立即删除。
suspend (boolean)
suspend 指定 Job 控制器是否应该创建 Pod。如果创建 Job 时将 suspend 设置为 true,则 Job 控制器不会创建任何 Pod。 如果 Job 在创建后被挂起(即标志从 false 变为 true),则 Job 控制器将删除与该 Job 关联的所有活动 Pod。 用户必须设计他们的工作负载来优雅地处理这个问题。暂停 Job 将重置 Job 的 startTime 字段, 也会重置 ActiveDeadlineSeconds 计时器。默认为 false。
selector (LabelSelector)
对应与 Pod 计数匹配的 Pod 的标签查询。通常,系统会为你设置此字段。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/labels/#label-selectors
manualSelector (boolean)
manualSelector 控制 Pod 标签和 Pod 选择器的生成。除非你确定你在做什么,否则不要设置 manualSelector
。
当此字段为 false 或未设置时,系统会选择此 Pod 唯一的标签并将这些标签附加到 Pod 模板。
当此字段为 true 时,用户负责选择唯一标签并指定选择器。
未能选择唯一标签可能会导致此任务和其他任务无法正常运行。但是,你可能会在使用旧的 extensions/v1beta1
API
创建的任务中看到 manualSelector=true
。更多信息:
https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
podFailurePolicy (PodFailurePolicy)
指定处理失效 Pod 的策略。特别是,它允许指定采取关联操作需要满足的一组操作和状况。 如果为空,则应用默认行为:由该任务的 .status.failed 字段表示的失效 Pod 的计数器将递增, 并针对 backoffLimit 进行检查。此字段不能与 restartPolicy=OnFailure 结合使用。
PodFailurePolicy 描述失效的 Pod 如何影响 backoffLimit。
podFailurePolicy.rules ([]PodFailurePolicyRule),必需
原子: 将在合并期间被替换
Pod 失效策略规则的列表。这些规则按顺序进行评估。一旦某规则匹配 Pod 失效,则其余规将被忽略。 当没有规则匹配 Pod 失效时,将应用默认的处理方式: Pod 失效的计数器递增并针对 backoffLimit 进行检查。最多允许 20 个。
PodFailurePolicyRule 描述当满足要求时如何处理一个 Pod 失效。 在每个规则中可以使用 onExitCodes 和 onPodConditions 之一,但不能同时使用二者。
podFailurePolicy.rules.action (string),必需
指定当要求满足时对 Pod 失效采取的操作。可能的值是:
JobBackoffLimitPerIndex
特性门控被启用时(默认被启用),可以使用此值。Ignore:表示 .backoffLimit 的计数器没有递增,并创建了一个替代 Pod。
Count:表示以默认方式处理该 Pod,计数器朝着 .backoffLimit 的方向递增。
后续会考虑增加其他值。客户端应通过跳过此规则对未知的操作做出反应。
podFailurePolicy.rules.onPodConditions.status (string),必需
指定必需的 Pod 状况状态。要匹配一个 Pod 状况,指定的状态必须等于该 Pod 状况状态。默认为 True。
podFailurePolicy.rules.onPodConditions.type (string),必需
指定必需的 Pod 状况类型。要匹配一个 Pod 状况,指定的类型必须等于该 Pod 状况类型。
podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)
表示容器退出码有关的要求。
PodFailurePolicyOnExitCodesRequirement 描述根据容器退出码处理失效 Pod 的要求。 特别是,它为每个应用容器和 Init 容器状态查找在 Pod 状态中分别用 .status.containerStatuses 和 .status.initContainerStatuses 字段表示的 .state.terminated.exitCode。 成功完成的容器(退出码 0)被排除在此要求检查之外。
podFailurePolicy.rules.onExitCodes.operator (string),必需
表示容器退出码和指定值之间的关系。成功完成的容器(退出码 0)被排除在此要求检查之外。可能的值为:
In:如果至少一个容器退出码(如果有多个容器不受 'containerName' 字段限制,则可能是多个退出码) 在一组指定值中,则满足要求。
NotIn:如果至少一个容器退出码(如果有多个容器不受 'containerName' 字段限制,则可能是多个退出码) 不在一组指定值中,则满足要求。
后续会考虑增加其他值。客户端应通过假设不满足要求来对未知操作符做出反应。
podFailurePolicy.rules.onExitCodes.values ([]int32),必需
集合:合并期间保留唯一值
指定值集。每个返回的容器退出码(在多个容器的情况下可能是多个)将根据该操作符有关的这个值集进行检查。 值的列表必须有序且不得包含重复项。值 '0' 不能用于 In 操作符。至少需要 1 个。最多允许 255 个。
podFailurePolicy.rules.onExitCodes.containerName (string)
将退出码的检查限制为具有指定名称的容器。当为 null 时,该规则适用于所有容器。 当被指定时,它应与 Pod 模板中的容器名称或 initContainer 名称之一匹配。
podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern),必需
原子: 将在合并期间被替换
表示对 Pod 状况的要求。该要求表示为 Pod 状况模式的一个列表。 如果至少一个模式与实际的 Pod 状况匹配,则满足此要求。最多允许 20 个。
PodFailurePolicyOnPodConditionsPattern 描述与实际 Pod 状况类型匹配的模式。
- **podFailurePolicy.rules.onPodConditions.status** (string),必需
指定必需的 Pod 状况状态。要匹配一个 Pod 状况,指定的状态必须等于该 Pod 状况状态。默认为 True。
podFailurePolicy.rules.onPodConditions.type (string),必需
指定必需的 Pod 状况类型。要匹配一个 Pod 状况,指定的类型必须等于该 Pod 状况类型。
successPolicy (SuccessPolicy)
successPolicy 指定策略,用于判定何时可以声明任务为成功。如果为空,则应用默认行为 —— 仅当成功
Pod 的数量等于完成数量时,任务才会被声明为成功。指定了该字段时,该字段必须是不可变的,
并且仅适用于带索引的任务。一旦任务满足 successPolicy
,滞留 Pod 就会被终止。
此字段为 Beta 级。要使用此字段,你必须启用 JobSuccessPolicy
特性门控(默认启用)。
successPolicy 描述何时可以根据某些索引的成功将任务声明为成功。
successPolicy.rules ([]SuccessPolicyRule),必需
原子性:合并期间会被替换
rules 表示在 .status.succeeded >= .spec.completions
之前将任务声明为成功的备选规则列表。
一旦满足任何规则,就会添加 SucceededCriteriaMet
状况,并删除滞留的 Pod。
此类 Pod 的最终状态具有 Complete
状况。此外,这些规则按顺序进行评估;
一旦任务满足其中一条规则,其他规则将被忽略。最多允许 20 个元素。
SuccessPolicyRule 描述了将任务声明为成功的规则。每条规则必须至少指定 succeededIndexes
或 succeededCount
之一。
successPolicy.rules.succeededCount (int32)
succeededCount
指定任务成功索引集所需的最小规模。当 succeededCount
与 succeededIndexes
一起使用时,
仅检查由 succeededIndexes
指定的索引集合。例如,假定 succeededIndexes
是
"1-4",succeededCount 是 "3",而完成的索引是 "1"、"3" 和 "5",那么该任务不会被视为成功,
因为在该规则下只考虑了 "1" 和 "3" 索引。当该字段为 null 时,不会被视为具有默认值,
并且在任何时候都不会进行评估。当该字段被设置时,所设置的值应是一个正整数。
successPolicy.rules.succeededIndexes (string)
succeededIndexes
指定需要包含在实际完成索引集合中的各个索引。索引列表必须在 0 到 .spec.completions-1
之间,并且不能包含重复项。至少需要一个元素。索引表示为用逗号分隔的区间。
区间可以是一个十进制整数或一对由破折号分隔的十进制整数。数字序列用区间的第一个和最后一个元素来表示,
并用破折号分隔。例如,如果完成的索引是 1、3、4、5 和 7,则表示为 "1,3-5,7"。
当该字段为 null 时,该字段不会默认为任何值,并且在任何时候都不会进行评估。
backoffLimitPerIndex(int32)
指定在将特定索引的 Pod 标记为失败之前在对该 Pod 重试次数的限制。
启用后,各索引的失败次数将保存在 Pod 的 batch.kubernetes.io/job-index-failure-count
注解中。
仅当 Job 的 completionMode=Indexed 且 Pod 的重启策略为 Never 时才能设置此字段。
此字段是不可变更的。此字段是 Beta 级别的。
当 JobBackoffLimitPerIndex
特性门控被启用时(默认被启用),可以使用此字段。
managedBy (string)
managedBy
字段标明管理任务的控制器。
Kubernetes 的 Job 控制器会协调那些没有这个字段或字段值为保留字符串 kubernetes.io/job-controller
的任务,
但会跳过协调那些为此字段设置了自定义值的任务。字段值必须是一个包含有效域名前缀的路径(例如 acme.io/foo
)—— 第一个 /
之前的全部字符必须符合
RFC 1123 定义的有效子域。第一个 / 后面的所有字符必须是 RFC 3986 定义的有效 HTTP 路径字符。
字段值的长度不能超过 63 个字符。此字段是不可变的。
此字段处于 Beta 阶段。当启用 JobManagedBy
特性门控时(默认情况下禁用),任务控制器接受设置此字段。
maxFailedIndexes(int32)
指定在 backoffLimitPerIndex 被设置时、标记 Job 为失败之前所允许的最大失败索引数。
一旦失败的索引数超过此数值,整个 Job 将被标记为 Failed 并终止执行。
如果不设置此字段(对应为 null),则作业继续执行其所有索引,且 Job 会被标记 Complete
状况。
此字段只能在设置 backoffLimitPerIndex 时指定。此字段值可以是 null 或完成次数之内的值。
当完成次数大于 10^5 时,此字段是必需的且必须小于等于 10^4。
此字段是 Beta 级别的。当 JobBackoffLimitPerIndex
特性门控被启用时(默认启用),可以使用此字段。
podReplacementPolicy(string)
podReplacementPolicy 指定何时创建替代的 Pod。可能的值包括:
当使用 podFailurePolicy 时,Failed 是唯一允许值。 当不使用 podFailurePolicy 时,允许使用 TerminatingOrFailed 和 Failed。 这是一个 Beta 级别的字段。要使用此特性,请启用 JobPodReplacementPolicy 特性门控。 此特性默认处于被启用状态。
JobStatus 表示 Job 的当前状态。
startTime (Time)
表示任务控制器开始处理任务的时间。在挂起状态下创建 Job 时,直到第一次恢复时才会设置此字段。 每次从暂停中恢复任务时都会重置此字段。它表示为 RFC3339 格式的 UTC 时间。
一旦设置,仅当 Job 被挂起时才可移除该字段。Job 取消挂起或完成时,无法修改该字段。
Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。time 包提供的许多工厂方法都提供了包装器。
completionTime (Time)
表示 Job 完成的时间。不能保证对多个独立操作按发生的先后顺序设置。此字段表示为 RFC3339 格式的 UTC 时间。 完成时间在且仅在 Job 成功完成时设置。该值无法更新或删除。该值表示与 startTime 字段相同或更晚的时间点。
Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。time 包提供的许多工厂方法都提供了包装器。
active (int32)
未处于终止进程中(未设置 deletionTimestamp
)的待处理和正在运行的 Pod 数量。对于已完成的 Job,该值为零。
failed (int32)
进入 Failed 阶段的 Pod 数量。该值单调增加。
succeeded (int32)
进入 Succeeded 阶段的 Pod 数量。对于给定的规范,该值会单调增加。 但是,由于弹性索引任务的缩减,该值可能会减少。
completedIndexes (string)
completedIndexes 以文本格式保存 .spec.completionMode
设置为 "Indexed"
的 Pod 已完成的索引。
索引用十进制整数表示,用逗号分隔。数字是按递增的顺序排列的。三个或更多的连续数字被压缩,
用系列的第一个和最后一个元素表示,用连字符分开。例如,如果完成的索引是 1、3、4、5 和 7,则表示为 "1、3-5、7"。
conditions ([]JobCondition)
补丁策略:根据 type
键合并
原子: 将在合并期间被替换
对象当前状态的最新可用观察结果。当任务失败时,其中一个状况的类型为 “Failed”,状态为 true。 当任务被暂停时,其中一个状况的类型为 “Suspended”,状态为true;当任务被恢复时,该状况的状态将变为 false。 任务完成时,其中一个状况的类型为 "Complete",状态为 true。
当任务处于最终状态(即 "Complete" 或 "Failed")时,即视为任务已完成。任务不能同时处于 "Complete" 和 "Failed" 状态。 此外,任务也不能处于 "Complete" 和 "FailureTarget" 状态。"Complete"、"Failed" 和 "FailureTarget" 状态不能被禁用。
更多信息:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/jobs-run-to-completion/
conditions.status (string), 必需
状况的状态:True、False、Unknown 之一。
conditions.type (string), 必需
任务状况的类型:Completed 或 Failed。
conditions.lastProbeTime (Time)
最后一次探测的时间。
Time 是对 time.Time 的封装,支持正确编码为 YAML 和 JSON。我们为 time 包提供的许多工厂方法提供了封装器。
conditions.lastTransitionTime (Time)
上一次从一种状况转换到另一种状况的时间。
Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。time 包提供的许多工厂方法都提供了包装器。
conditions.message (string)
表示上次转换信息的人类可读消息。
conditions.reason (string)
状况最后一次转换的(简要)原因
uncountedTerminatedPods (UncountedTerminatedPods)
UncountedTerminatedPods 保存已终止但尚未被任务控制器纳入状态计数器中的 Pod 的 UID 的集合。
任务控制器所创建 Pod 带有终结器。当 Pod 终止(成功或失败)时,控制器将执行三个步骤以在任务状态中对其进行说明:
使用此字段可能无法跟踪旧任务,在这种情况下,该字段保持为空。对于已完成的任务,此结构为空。
UncountedTerminatedPods 持有已经终止的 Pod 的 UID,但还没有被计入工作状态计数器中。
uncountedTerminatedPods.failed ([]string)
集合:合并期间保留唯一值
failed 字段包含已失败 Pod 的 UID。
uncountedTerminatedPods.succeeded ([]string)
集合:合并期间保留唯一值
succeeded 包含已成功的 Pod 的 UID。
ready (int32)
具有 Ready 状况且未处于终止过程中(没有设置 deletionTimestamp
)的活动 Pod 的数量。
failedIndexes (string)
当设置了 spec.backoffLimitPerIndex
时,failedIndexes 保存失败的索引。
索引以文本格式表示,类似于 completedIndexes
字段,即这些索引是使用逗号分隔的十进制整数。
这些数字按升序列出。三个或更多连续的数字会被压缩,整个序列表示为第一个数字、连字符和最后一个数字。
例如,如果失败的索引是 1、3、4、5 和 7,则表示为 "1,3-5,7"。
失败索引集不能与完成索引集重叠。
该字段是 Beta 级别的。当 JobBackoffLimitPerIndex
特性门控被启用时(默认被启用),可以使用此字段。
terminating(int32)
正在终止的 Pod 数量(处于 Pending 或 Running 阶段且具有 deletionTimestamp)。
此字段是 Beta 级别的。当特性门控 JobPodReplacementPolicy 被启用时(默认被启用), Job 控制器会填充该字段。
JobList 是 Job 的集合。
apiVersion: batch/v1
kind: JobList
metadata (ListMeta)
标准列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]Job), required
items 是 Job 对象的列表。
get
读取指定的 JobGET /apis/batch/v1/namespaces/{namespace}/jobs/{name}
name (路径参数):string,必需
Job 的名称。
200 (Job): OK
401: Unauthorized
get
读取指定任务的状态GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
200 (Job): OK
401: Unauthorized
list
列举或监测 Job 类别的对象GET /apis/batch/v1/namespaces/{namespace}/jobs
namespace (路径参数): string, 必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (JobList): OK
401: Unauthorized
list
列举或监测 Job 类别的对象GET /apis/batch/v1/jobs
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (JobList): OK
401: Unauthorized
create
创建一个 JobPOST /apis/batch/v1/namespaces/{namespace}/jobs
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Job): OK
201 (Job): Created
202 (Job): Accepted
401: Unauthorized
update
替换指定的 JobPUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Job): OK
201 (Job): Created
401: Unauthorized
update
替换指定 Job 的状态PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Job): OK
201 (Job): Created
401: Unauthorized
patch
部分更新指定的 JobPATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Job): OK
201 (Job): Created
401: Unauthorized
patch
部分更新指定 Job 的状态PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Job): OK
201 (Job): Created
401: Unauthorized
delete
删除一个 JobDELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}
name (路径参数): string, 必需
Job 的名称。
namespace (路径参数): string, 必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 Job 的集合DELETE /apis/batch/v1/namespaces/{namespace}/jobs
namespace (路径参数): string, 必需
body: DeleteOptions
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
CronJob 代表单个定时作业(Cron Job) 的配置。
apiVersion: batch/v1
kind: CronJob
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (CronJobSpec)
定时作业的预期行为的规约,包括排期表(Schedule)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (CronJobStatus)
定时作业的当前状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
CronJobSpec 描述了作业的执行方式和实际将运行的时间。
jobTemplate (JobTemplateSpec), 必需
指定执行 CronJob 时将创建的作业。
JobTemplateSpec 描述了从模板创建作业时应具有的数据
jobTemplate.metadata (ObjectMeta)
从此模板创建的作业的标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
jobTemplate.spec (JobSpec)
对作业的预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
schedule (string), 必需
Cron 格式的排期表,请参阅 https://zh.wikipedia.org/wiki/Cron。
timeZone (string)
给定时间表的时区名称,请参阅 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones。 如果未指定,这将默认为 kube-controller-manager 进程的时区。 有效时区名称和时区偏移量的设置由 API 服务器在 CronJob 验证期间从系统范围的时区数据库进行加载, 在执行期间由控制器管理器从系统范围的时区数据库进行加载。 如果找不到系统范围的时区数据库,则转而使用该数据库的捆绑版本。 如果时区名称在 CronJob 的生命周期内或由于主机配置更改而变得无效,该控制器将停止创建新的 Job, 并将创建一个原因为 UnknownTimeZone 的系统事件。更多信息,请请参阅 https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/#time-zones。
concurrencyPolicy (string)
指定如何处理作业的并发执行。 有效值为:
startingDeadlineSeconds (int64)
可选字段。当作业因为某种原因错过预定时间时,设定作业的启动截止时间(秒)。错过排期的作业将被视为失败的作业。
suspend (boolean)
这个标志告诉控制器暂停后续的执行,它不适用于已经开始的执行。默认为 false。
successfulJobsHistoryLimit (int32)
要保留的成功完成作业数。值必须是非负整数。默认值为 3。
failedJobsHistoryLimit (int32)
要保留的以失败状态结束的作业个数。值必须是非负整数。默认值为 1。
CronJobStatus 表示某个定时作业的当前状态。
active ([]ObjectReference)
Atomic: 将在合并过程中被替换
指向当前正在运行的作业的指针列表。
lastScheduleTime (Time)
上次成功调度作业的时间信息。
Time 是对 time.Time 的封装,它支持对 YAML 和 JSON 的正确编排。为 time 包提供的许多工厂方法模式提供了包装器。
lastSuccessfulTime (Time)
上次成功完成作业的时间信息。
Time 是对 time.Time 的封装,它支持对 YAML 和 JSON 的正确编排。为 time 包提供的许多工厂方法模式提供了包装器。
CronJobList 是定时作业的集合。
apiVersion: batch/v1
kind: CronJobList
metadata (ListMeta)
标准列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CronJob), required
items 是 CronJob 的列表。
get
查看指定的 CronJobGET /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
200 (CronJob): OK
401: Unauthorized
get
查看指定 CronJob 的状态GET /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
200 (CronJob): OK
401: Unauthorized
list
查看或监视 CronJob 类别的对象GET /apis/batch/v1/namespaces/{namespace}/cronjobs
namespace (路径参数): string, 必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (CronJobList): OK
401: Unauthorized
list
查看或监视 CronJob 类型的对象GET /apis/batch/v1/cronjobs
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (in query): string
resourceVersion (in query): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
200 (CronJobList): OK
401: Unauthorized
create
创建一个 CronJobPOST /apis/batch/v1/namespaces/{namespace}/cronjobs
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CronJob): OK
201 (CronJob): Created
202 (CronJob): Accepted
401: Unauthorized
update
替换指定的 CronJobPUT /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
update
替换指定 CronJob 的状态PUT /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
patch
部分更新指定的 CronJobPATCH /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
patch
部分更新指定 CronJob 的状态PATCH /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (参数参数): string
fieldManager (参数参数): string
fieldValidation (参数参数): string
force (参数参数): boolean
pretty (参数参数): string
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
delete
删除一个 CronJobDELETE /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
name (路径参数): string, 必需
CronJob 的名称
namespace (路径参数): string, 必需
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除一组 CronJobDELETE /apis/batch/v1/namespaces/{namespace}/cronjobs
namespace (路径参数): string, 必需
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: autoscaling/v1
import "k8s.io/api/autoscaling/v1"
水平 Pod 自动缩放器的配置。
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata (ObjectMeta)
标准的对象元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (HorizontalPodAutoscalerSpec)
spec
定义自动缩放器的规约。
更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
status (HorizontalPodAutoscalerStatus)
status
是自动缩放器的当前信息。
水平 Pod 自动缩放器的规约。
maxReplicas (int32),必填
maxReplicas
是自动扩缩器可以设置的 Pod 数量上限;
不能小于 minReplicas。
scaleTargetRef (CrossVersionObjectReference),必填
对被扩缩资源的引用; 水平 Pod 自动缩放器将了解当前的资源消耗,并使用其 scale 子资源设置所需的 Pod 数量。
CrossVersionObjectReference 包含足够的信息来让你识别出所引用的资源。
scaleTargetRef.kind (string),必填
kind
是被引用对象的类别;
更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
scaleTargetRef.name (string),必填
name
是被引用对象的名称;
更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
scaleTargetRef.apiVersion (string)
apiVersion
是被引用对象的 API 版本。
minReplicas (int32)
minReplicas 是自动缩放器可以缩减的副本数的下限。 它默认为 1 个 Pod。 如果启用了 alpha 特性门禁 HPAScaleToZero 并且配置了至少一个 Object 或 External 度量标准, 则 minReplicas 允许为 0。 只要至少有一个度量值可用,缩放就处于活动状态。
targetCPUUtilizationPercentage (int32)
targetCPUUtilizationPercentage
是所有 Pod 的目标平均 CPU 利用率(以请求 CPU 的百分比表示);
如果未指定,将使用默认的自动缩放策略。
水平 Pod 自动缩放器的当前状态
currentReplicas (int32),必填
currentReplicas
是此自动缩放器管理的 Pod 的当前副本数。
desiredReplicas (int32),必填
desiredReplicas
是此自动缩放器管理的 Pod 副本的所需数量。
currentCPUUtilizationPercentage (int32)
currentCPUUtilizationPercentage
是当前所有 Pod 的平均 CPU 利用率,
以请求 CPU 的百分比表示,
例如:70 表示平均 Pod 现在正在使用其请求 CPU 的 70%。
lastScaleTime (Time)
lastScaleTime
是上次 HorizontalPodAutoscaler 缩放 Pod 的数量;
自动缩放器用它来控制 Pod 数量的更改频率。
Time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。
observedGeneration (int64)
observedGeneration
是此自动缩放器观察到的最新一代。
水平 Pod 自动缩放器对象列表。
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscalerList
metadata (ListMeta)
标准的列表元数据。
items ([]HorizontalPodAutoscaler), required
items
是水平 Pod 自动缩放器对象的列表。
get
读取特定的 HorizontalPodAutoscalerGET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必填
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
get
读取特定 HorizontalPodAutoscaler 的状态GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必填
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
list
列出或监视 HorizontalPodAutoscaler 类别的对象GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必填
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数*): integer
watch (查询参数): boolean
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
list
列出或监视 HorizontalPodAutoscaler 类别的对象GET /apis/autoscaling/v1/horizontalpodautoscalers
allowWatchBookmarks (查询参数): boolean
continue (查询参数*): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
create
创建一个 HorizontalPodAutoscalerPOST /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必填
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
202 (HorizontalPodAutoscaler): Accepted
401: Unauthorized
update
替换特定的 HorizontalPodAutoscalerPUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称
namespace (路径参数): string,必填
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
update
替换特定 HorizontalPodAutoscaler 的状态PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称
namespace (路径参数): string,必填
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
部分更新特定的 HorizontalPodAutoscalerPATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称
namespace (路径参数): string,必填
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
部分更新特定 HorizontalPodAutoscaler 的状态PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称
namespace (路径参数): string,必填
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
delete
删除一个 HorizontalPodAutoscalerDELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必填
HorizontalPodAutoscaler 的名称
namespace (路径参数): string,必填
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 HorizontalPodAutoscaler 的集合DELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必填
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: autoscaling/v2
import "k8s.io/api/autoscaling/v2"
HorizontalPodAutoscaler 是水平 Pod 自动扩缩器的配置, 它根据指定的指标自动管理实现 scale 子资源的任何资源的副本数。
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata (ObjectMeta)
metadata 是标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (HorizontalPodAutoscalerSpec)
spec 是自动扩缩器行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
status (HorizontalPodAutoscalerStatus)
status 是自动扩缩器的当前信息。
HorizontalPodAutoscalerSpec 描述了 HorizontalPodAutoscaler 预期的功能。
maxReplicas (int32),必需
maxReplicas 是自动扩缩器可以扩容的副本数的上限。不能小于 minReplicas。
scaleTargetRef (CrossVersionObjectReference),必需
scaleTargetRef 指向要扩缩的目标资源,用于收集 Pod 的相关指标信息以及实际更改的副本数。
CrossVersionObjectReference 包含足够的信息来让你识别出所引用的资源。
scaleTargetRef.kind (string),必需
kind
是被引用对象的类别;更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
scaleTargetRef.name (string),必需
name
是被引用对象的名称;更多信息:https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names
scaleTargetRef.apiVersion (string)
apiVersion
是被引用对象的 API 版本。
minReplicas (int32)
minReplicas 是自动扩缩器可以缩减的副本数的下限。它默认为 1 个 Pod。 如果启用了 Alpha 特性门控 HPAScaleToZero 并且配置了至少一个 Object 或 External 度量指标, 则 minReplicas 允许为 0。只要至少有一个度量值可用,扩缩就处于活动状态。
behavior (HorizontalPodAutoscalerBehavior)
behavior 配置目标在扩容(Up)和缩容(Down)两个方向的扩缩行为(分别用 scaleUp 和 scaleDown 字段)。 如果未设置,则会使用默认的 HPAScalingRules 进行扩缩容。
HorizontalPodAutoscalerBehavior 配置目标在扩容(Up)和缩容(Down)两个方向的扩缩行为 (分别用 scaleUp 和 scaleDown 字段)。
behavior.scaleDown (HPAScalingRules)
scaleDown 是缩容策略。如果未设置,则默认值允许缩减到 minReplicas 数量的 Pod, 具有 300 秒的稳定窗口(使用最近 300 秒的最高推荐值)。
HPAScalingRules 为一个方向配置扩缩行为。在根据 HPA 的指标计算 desiredReplicas 后应用这些规则。 可以通过指定扩缩策略来限制扩缩速度。可以通过指定稳定窗口来防止抖动, 因此不会立即设置副本数,而是选择稳定窗口中最安全的值。
behavior.scaleDown.policies ([]HPAScalingPolicy)
原子性:将在合并时被替换
policies 是可在扩缩容过程中使用的潜在扩缩策略的列表。必须至少指定一个策略,否则 HPAScalingRules 将被视为无效而丢弃。
HPAScalingPolicy 是一个单一的策略,它必须在指定的过去时间间隔内保持为 true。
behavior.scaleDown.policies.type (string),必需
type 用于指定扩缩策略。
behavior.scaleDown.policies.value (int32),必需
value 包含策略允许的更改量。它必须大于零。
behavior.scaleDown.policies.periodSeconds (int32),必需
periodSeconds 表示策略应该保持为 true 的时间窗口长度。 periodSeconds 必须大于零且小于或等于 1800(30 分钟)。
behavior.scaleDown.selectPolicy (string)
selectPolicy 用于指定应该使用哪个策略。如果未设置,则使用默认值 Max。
behavior.scaleDown.stabilizationWindowSeconds (int32)
stabilizationWindowSeconds 是在扩缩容时应考虑的之前建议的秒数。stabilizationWindowSeconds 必须大于或等于零且小于或等于 3600(一小时)。如果未设置,则使用默认值:
behavior.scaleUp (HPAScalingRules)
scaleUp 是用于扩容的扩缩策略。如果未设置,则默认值为以下值中的较高者:
不使用稳定窗口。
HPAScalingRules 为一个方向配置扩缩行为。在根据 HPA 的指标计算 desiredReplicas 后应用这些规则。 可以通过指定扩缩策略来限制扩缩速度。可以通过指定稳定窗口来防止抖动, 因此不会立即设置副本数,而是选择稳定窗口中最安全的值。
behavior.scaleUp.policies ([]HPAScalingPolicy)
原子性:将在合并时被替换
policies 是可在扩缩容过程中使用的潜在扩缩策略的列表。必须至少指定一个策略,否则 HPAScalingRules 将被视为无效而丢弃。
HPAScalingPolicy 是一个单一的策略,它必须在指定的过去时间间隔内保持为 true。
behavior.scaleUp.policies.type (string),必需
type 用于指定扩缩策略。
- **behavior.scaleUp.policies.value** (int32),必需
value 包含策略允许的更改量。它必须大于零。
behavior.scaleUp.policies.periodSeconds (int32),必需
periodSeconds 表示策略应该保持为 true 的时间窗口长度。 periodSeconds 必须大于零且小于或等于 1800(30 分钟)。
behavior.scaleUp.selectPolicy (string)
selectPolicy 用于指定应该使用哪个策略。如果未设置,则使用默认值 Max。
behavior.scaleUp.stabilizationWindowSeconds (int32)
stabilizationWindowSeconds 是在扩缩容时应考虑的之前建议的秒数。stabilizationWindowSeconds 必须大于或等于零且小于或等于 3600(一小时)。如果未设置,则使用默认值:
metrics ([]MetricSpec)
原子性:将在合并时被替换
metrics 包含用于计算预期副本数的规约(将使用所有指标的最大副本数)。 预期副本数是通过将目标值与当前值之间的比率乘以当前 Pod 数来计算的。 因此,使用的指标必须随着 Pod 数量的增加而减少,反之亦然。 有关每种类别的指标必须如何响应的更多信息,请参阅各个指标源类别。 如果未设置,默认指标将设置为 80% 的平均 CPU 利用率。
MetricSpec 指定如何基于单个指标进行扩缩容(一次只能设置 type
和一个其他匹配字段)
metrics.type (string),必需
type 是指标源的类别。它取值是 “ContainerResource”、“External”、“Object”、“Pods” 或 “Resource” 之一, 每个类别映射到对象中的一个对应的字段。注意:“ContainerResource” 类别在特性门控 HPAContainerMetrics 启用时可用。
metrics.containerResource (ContainerResourceMetricSource)
containerResource 是指 Kubernetes 已知的资源指标(例如在请求和限制中指定的那些), 描述当前扩缩目标中每个 Pod 中的单个容器(例如 CPU 或内存)。 此类指标内置于 Kubernetes 中,在使用 “pods” 源的、按 Pod 计算的普通指标之外,还具有一些特殊的扩缩选项。 这是一个 Alpha 特性,可以通过 HPAContainerMetrics 特性标志启用。
ContainerResourceMetricSource 指示如何根据请求和限制中指定的 Kubernetes 已知的资源指标进行扩缩容, 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。在与目标值比较之前,这些值先计算平均值。 此类指标内置于 Kubernetes 中,并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。 只应设置一种 “target” 类别。
metrics.containerResource.container (string),必需
container 是扩缩目标的 Pod 中容器的名称。
- **metrics.containerResource.name** (string),必需
name 是相关资源的名称。
metrics.containerResource.target (MetricTarget),必需
target 指定给定指标的目标值。
MetricTarget 定义特定指标的目标值、平均值或平均利用率
metrics.containerResource.target.type (string),必需
type 表示指标类别是 Utilization
、Value
或 AverageValue
。
metrics.containerResource.target.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 的资源指标均值的目标值, 表示为 Pod 资源请求值的百分比。目前仅对 “Resource” 指标源类别有效。
metrics.containerResource.target.averageValue (Quantity)
是跨所有相关 Pod 的指标均值的目标值(以数量形式给出)。
metrics.containerResource.target.value (Quantity)
value 是指标的目标值(以数量形式给出)。
metrics.external (ExternalMetricSource)
external 指的是不与任何 Kubernetes 对象关联的全局指标。 这一字段允许基于来自集群外部运行的组件(例如云消息服务中的队列长度,或来自运行在集群外部的负载均衡器的 QPS)的信息进行自动扩缩容。
ExternalMetricSource 指示如何基于 Kubernetes 对象无关的指标 (例如云消息传递服务中的队列长度,或来自集群外部运行的负载均衡器的 QPS)执行扩缩操作。
metrics.external.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
metrics.external.metric.name (string),必需
name 是给定指标的名称。
metrics.external.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
metrics.external.target (MetricTarget),必需
target 指定给定指标的目标值。
MetricTarget 定义特定指标的目标值、平均值或平均利用率
metrics.external.target.type (string),必需
type 表示指标类别是 Utilization
、Value
或 AverageValue
。
metrics.external.target.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得到的资源指标均值的目标值, 表示为 Pod 资源请求值的百分比。目前仅对 “Resource” 指标源类别有效。
metrics.external.target.averageValue (Quantity)
averageValue 是跨所有相关 Pod 得到的指标均值的目标值(以数量形式给出)。
metrics.external.target.value (Quantity)
value 是指标的目标值(以数量形式给出)。
metrics.object (ObjectMetricSource)
object 是指描述单个 Kubernetes 对象的指标(例如,Ingress 对象上的 hits-per-second
)。
ObjectMetricSource 表示如何根据描述 Kubernetes 对象的指标进行扩缩容(例如,Ingress 对象的 hits-per-second
)
metrics.object.describedObject (CrossVersionObjectReference),必需
describeObject 表示对象的描述,如对象的 kind
、name
、apiVersion
。
CrossVersionObjectReference 包含足够的信息来让你识别所引用的资源。
metrics.object.describedObject.kind (string),必需
被引用对象的类别;更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metrics.object.describedObject.name (string),必需
被引用对象的名称;更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names
metrics.object.describedObject.apiVersion (string)
被引用对象的 API 版本。
metrics.object.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
metrics.object.metric.name (string),必需
name 是给定指标的名称。
metrics.object.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
metrics.object.target (MetricTarget),必需
target 表示给定指标的目标值。
MetricTarget 定义特定指标的目标值、平均值或平均利用率
metrics.object.target.type (string),必需
type 表示指标类别是 Utilization
、Value
或 AverageValue
。
metrics.object.target.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的目标值, 表示为 Pod 资源请求值的百分比。目前仅对 “Resource” 指标源类别有效。
metrics.object.target.averageValue (Quantity)
averageValue 是跨所有 Pod 得出的指标均值的目标值(以数量形式给出)。
metrics.object.target.value (Quantity)
value 是指标的目标值(以数量形式给出)。
metrics.pods (PodsMetricSource)
pods 是指描述当前扩缩目标中每个 Pod 的指标(例如,transactions-processed-per-second
)。
在与目标值进行比较之前,这些指标值将被平均。
PodsMetricSource 表示如何根据描述当前扩缩目标中每个 Pod 的指标进行扩缩容(例如,transactions-processed-per-second
)。
在与目标值进行比较之前,这些指标值将被平均。
metrics.pods.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
metrics.pods.metric.name (string),必需
name 是给定指标的名称。
metrics.pods.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
metrics.pods.target (MetricTarget),必需
target 表示给定指标的目标值。
MetricTarget 定义特定指标的目标值、平均值或平均利用率
metrics.pods.target.type (string),必需
type 表示指标类别是 Utilization
、Value
或 AverageValue
。
metrics.pods.target.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的目标值, 表示为 Pod 资源请求值的百分比。目前仅对 “Resource” 指标源类别有效。
metrics.pods.target.averageValue (Quantity)
averageValue 是跨所有 Pod 得出的指标均值的目标值(以数量形式给出)。
metrics.pods.target.value (Quantity)
value 是指标的目标值(以数量形式给出)。
metrics.resource (ResourceMetricSource)
resource 是指 Kubernetes 已知的资源指标(例如在请求和限制中指定的那些), 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。此类指标内置于 Kubernetes 中, 并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。
ResourceMetricSource 指示如何根据请求和限制中指定的 Kubernetes 已知的资源指标进行扩缩容, 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。在与目标值比较之前,这些指标值将被平均。 此类指标内置于 Kubernetes 中,并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。 只应设置一种 “target” 类别。
metrics.resource.name (string),必需
name 是相关资源的名称。
metrics.resource.target (MetricTarget),必需
target 指定给定指标的目标值。
MetricTarget 定义特定指标的目标值、平均值或平均利用率
metrics.resource.target.type (string),必需
type 表示指标类别是 Utilization
、Value
或 AverageValue
。
metrics.resource.target.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的目标值, 表示为 Pod 资源请求值的百分比。目前仅对 “Resource” 指标源类别有效。
metrics.resource.target.averageValue (Quantity)
averageValue 是跨所有 Pod 得出的指标均值的目标值(以数量形式给出)。
metrics.resource.target.value (Quantity)
value 是指标的目标值(以数量形式给出)。
HorizontalPodAutoscalerStatus 描述了水平 Pod 自动扩缩器的当前状态。
desiredReplicas (int32),必需
desiredReplicas 是此自动扩缩器管理的 Pod 的所期望的副本数,由自动扩缩器最后计算。
conditions ([]HorizontalPodAutoscalerCondition)
补丁策略:基于键 type
合并
Map:合并时将保留 type 键的唯一值
conditions 是此自动扩缩器扩缩其目标所需的一组条件,并指示是否满足这些条件。
HorizontalPodAutoscalerCondition 描述 HorizontalPodAutoscaler 在某一时间点的状态。
conditions.status (string),必需
status 是状况的状态(True、False、Unknown)。
conditions.type (string),必需
type 描述当前状况。
conditions.lastTransitionTime (Time)
lastTransitionTime 是状况最近一次从一种状态转换到另一种状态的时间。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。为 time 包的许多函数方法提供了封装器。
conditions.message (string)
message 是一个包含有关转换的可读的详细信息。
conditions.reason (string)
reason 是状况最后一次转换的原因。
currentMetrics ([]MetricStatus)
原子性:将在合并期间被替换
currentMetrics 是此自动扩缩器使用的指标的最后读取状态。
MetricStatus 描述了单个指标的最后读取状态。
currentMetrics.type (string),必需
type 是指标源的类别。它取值是 “ContainerResource”、“External”、“Object”、“Pods” 或 “Resource” 之一, 每个类别映射到对象中的一个对应的字段。注意:“ContainerResource” 类别在特性门控 HPAContainerMetrics 启用时可用。
currentMetrics.containerResource (ContainerResourceMetricStatus)
containerResource 是指 Kubernetes 已知的一种资源指标(例如在请求和限制中指定的那些), 描述当前扩缩目标中每个 Pod 中的单个容器(例如 CPU 或内存)。 此类指标内置于 Kubernetes 中,并且在使用 "Pods" 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。
ContainerResourceMetricStatus 指示如何根据请求和限制中指定的 Kubernetes 已知的资源指标进行扩缩容, 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。此类指标内置于 Kubernetes 中, 并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。
currentMetrics.containerResource.container (string),必需
container 是扩缩目标的 Pod 中的容器名称。
currentMetrics.containerResource.current (MetricValueStatus),必需
current 包含给定指标的当前值。
MetricValueStatus 保存指标的当前值
currentMetrics.containerResource.current.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的当前值,表示为 Pod 资源请求值的百分比。
currentMetrics.containerResource.current.averageValue (Quantity)
averageValue 是跨所有相关 Pod 的指标均值的当前值(以数量形式给出)。
currentMetrics.containerResource.current.value (Quantity)
value 是指标的当前值(以数量形式给出)。
currentMetrics.containerResource.name (string),必需
name 是相关资源的名称。
currentMetrics.external (ExternalMetricStatus)
external 指的是不与任何 Kubernetes 对象关联的全局指标。这一字段允许基于来自集群外部运行的组件 (例如云消息服务中的队列长度,或来自集群外部运行的负载均衡器的 QPS)的信息进行自动扩缩。
ExternalMetricStatus 表示与任何 Kubernetes 对象无关的全局指标的当前值。
currentMetrics.external.current (MetricValueStatus),必需
current 包含给定指标的当前值。
MetricValueStatus 保存指标的当前值
currentMetrics.external.current.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的当前值,表示为 Pod 资源请求值的百分比。
currentMetrics.external.current.averageValue (Quantity)
averageValue 是跨所有相关 Pod 的指标均值的当前值(以数量形式给出)。
currentMetrics.external.current.value (Quantity)
value 是指标的当前值(以数量形式给出)。
currentMetrics.external.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
currentMetrics.external.metric.name (string),必需
name 是给定指标的名称。
currentMetrics.external.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
currentMetrics.object (ObjectMetricStatus)
object 是指描述单个 Kubernetes 对象的指标(例如,Ingress 对象的 hits-per-second
)。
ObjectMetricStatus 表示描述 Kubernetes 对象的指标的当前值(例如,Ingress 对象的 hits-per-second
)。
currentMetrics.object.current (MetricValueStatus),必需
current 包含给定指标的当前值。
MetricValueStatus 保存指标的当前值
currentMetrics.object.current.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的当前值,表示为 Pod 资源请求值的百分比。
currentMetrics.object.current.averageValue (Quantity)
averageValue 是跨所有相关 Pod 的指标均值的当前值(以数量形式给出)。
currentMetrics.object.current.value (Quantity)
value 是指标的当前值(以数量形式给出)。
currentMetrics.object.describedObject (CrossVersionObjectReference),必需
describeObject 表示对象的描述,如对象的 kind
、name
、apiVersion
。
CrossVersionObjectReference 包含足够的信息来让你识别所引用的资源。
currentMetrics.object.describedObject.kind (string),必需
kind
是被引用对象的类别;更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
currentMetrics.object.describedObject.name (string),必需
被引用对象的名称;更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names
currentMetrics.object.describedObject.apiVersion (string)
被引用对象的 API 版本。
currentMetrics.object.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
currentMetrics.object.metric.name (string),必需
name 是给定指标的名称。
currentMetrics.object.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
currentMetrics.pods (PodsMetricStatus)
pods 是指描述当前扩缩目标中每个 Pod 的指标(例如,transactions-processed-per-second
)。
在与目标值进行比较之前,这些指标值将被平均。
PodsMetricStatus 表示描述当前扩缩目标中每个 Pod 的指标的当前值(例如,transactions-processed-per-second
)。
currentMetrics.pods.current (MetricValueStatus),必需
current 包含给定指标的当前值。
MetricValueStatus 保存指标的当前值
currentMetrics.pods.current.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的当前值,表示为 Pod 资源请求值的百分比。
currentMetrics.pods.current.averageValue (Quantity)
averageValue 是跨所有相关 Pod 的指标均值的当前值(以数量形式给出)。
currentMetrics.pods.current.value (Quantity)
value 是指标的当前值(以数量形式给出)。
currentMetrics.pods.metric (MetricIdentifier),必需
metric 通过名称和选择算符识别目标指标。
MetricIdentifier 定义指标的名称和可选的选择算符
currentMetrics.pods.metric.name (string),必需
name 是给定指标的名称。
currentMetrics.pods.metric.selector (LabelSelector)
selector 是给定指标的标准 Kubernetes 标签选择算符的字符串编码形式。 设置后,它作为附加参数传递给指标服务器,以获取更具体的指标范围。 未设置时,仅 metricName 参数将用于收集指标。
currentMetrics.resource (ResourceMetricStatus)
resource 是指 Kubernetes 已知的资源指标(例如在请求和限制中指定的那些), 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。此类指标内置于 Kubernetes 中, 并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。
ResourceMetricSource 指示如何根据请求和限制中指定的 Kubernetes 已知的资源指标进行扩缩容, 此结构描述当前扩缩目标中的每个 Pod(例如 CPU 或内存)。在与目标值比较之前,这些指标值将被平均。 此类指标内置于 Kubernetes 中,并且在使用 “Pods” 源的、按 Pod 统计的普通指标之外支持一些特殊的扩缩选项。
currentMetrics.resource.current (MetricValueStatus),必需
current 包含给定指标的当前值。
MetricValueStatus 保存指标的当前值
currentMetrics.resource.current.averageUtilization (int32)
averageUtilization 是跨所有相关 Pod 得出的资源指标均值的当前值, 表示为 Pod 资源请求值的百分比。
currentMetrics.resource.current.averageValue (Quantity)
averageValue 是跨所有相关 Pod 的指标均值的当前值(以数量形式给出)。
currentMetrics.resource.current.value (Quantity)
value 是指标的当前值(以数量形式给出)。
currentMetrics.resource.name (string),必需
name 是相关资源的名称。
currentReplicas (int32)
currentReplicas 是此自动扩缩器管理的 Pod 的当前副本数,如自动扩缩器最后一次看到的那样。
lastScaleTime (Time)
lastScaleTime 是 HorizontalPodAutoscaler 上次扩缩 Pod 数量的时间,自动扩缩器使用它来控制更改 Pod 数量的频率。
Time 是对 time.Time 的封装。Time 支持对 YAML 和 JSON 进行正确封包。为 time 包的许多函数方法提供了封装器。
observedGeneration (int64)
observedGeneration 是此自动扩缩器观察到的最新一代。
HorizontalPodAutoscalerList 是水平 Pod 自动扩缩器对象列表。
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscalerList
metadata (ListMeta)
metadata 是标准的列表元数据。
items ([]HorizontalPodAutoscaler),必需
items 是水平 Pod 自动扩缩器对象的列表。
get
读取指定的 HorizontalPodAutoscalerGET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
get
读取指定 HorizontalPodAutoscaler 的状态GET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
list
列出或观察 HorizontalPodAutoscaler 类别的对象GET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
list
列出或观察 HorizontalPodAutoscaler 类别的对象GET /apis/autoscaling/v2/horizontalpodautoscalers
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
create
创建一个 HorizontalPodAutoscalerPOST /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必需
body:HorizontalPodAutoscaler,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
202 (HorizontalPodAutoscaler): Accepted
401: Unauthorized
update
替换指定的 HorizontalPodAutoscalerPUT /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必需
body:HorizontalPodAutoscaler,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
update
替换指定 HorizontalPodAutoscaler 的状态PUT /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必需
body:HorizontalPodAutoscaler,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
部分更新指定的 HorizontalPodAutoscalerPATCH /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必需
body:Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
部分更新指定 HorizontalPodAutoscaler 的状态PATCH /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必需
body:Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
delete
删除一个 HorizontalPodAutoscalerDELETE /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
name (路径参数): string,必需
HorizontalPodAutoscaler 的名称。
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 HorizontalPodAutoscaler 的集合DELETE /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: scheduling.k8s.io/v1
import "k8s.io/api/scheduling/v1"
PriorityClass 定义了从优先级类名到优先级数值的映射。 该值可以是任何有效的整数。
metadata (ObjectMeta)
标准对象的元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
value (int32),必需
value 表示此优先级的整数值。这是 Pod 在其 Pod 规约中有此类名称时收到的实际优先级。
description (string)
description 是一个任意字符串,通常提供有关何时应使用此优先级的指南。
globalDefault (boolean)
globalDefault 指定是否应将此 PriorityClass 视为没有任何优先级类的 Pod 的默认优先级。
只有一个 PriorityClass 可以标记为 globalDefault
。
但是,如果存在多个 PriorityClasses 且其 globalDefault
字段设置为 true,
则将使用此类全局默认 PriorityClasses 的最小值作为默认优先级。
preemptionPolicy (string)
PreemptionPolicy 是抢占优先级较低的 Pod 的策略。 可选值:Never、PreemptLowerPriority。 如果未设置,则默认为 PreemptLowerPriority。
PriorityClassList 是优先级类的集合。
metadata (ListMeta)
标准列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]PriorityClass),必需
items 是 PriorityClasses 的列表
get
读取特定的 PriorityClassGET /apis/scheduling.k8s.io/v1/priorityclasses/{name}
name (路径参数): string,必需
PriorityClass 名称
pretty (查询参数):string
200 (PriorityClass): OK
401: Unauthorized
list
列出或观察 PriorityClass类的对象GET /apis/scheduling.k8s.io/v1/priorityclasses
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (PriorityClassList): OK
401: Unauthorized
create
创建一个 PriorityClassPOST /apis/scheduling.k8s.io/v1/priorityclasses
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (PriorityClass): OK
201 (PriorityClass): Created
202 (PriorityClass): Accepted
401: Unauthorized
update
替换指定的 PriorityClassPUT /apis/scheduling.k8s.io/v1/priorityclasses/{name}
name (路径参数): string,必需
PriorityClass 名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (PriorityClass): OK
201 (PriorityClass): Created
401: Unauthorized
patch
部分更新特定的 PriorityClassPATCH /apis/scheduling.k8s.io/v1/priorityclasses/{name}
name (路径参数): string,必需
PriorityClass 名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
200 (PriorityClass): OK
201 (PriorityClass): Created
401: Unauthorized
delete
删除一个 PriorityClassDELETE /apis/scheduling.k8s.io/v1/priorityclasses/{name}
name (路径参数): string,必需
PriorityClass 名称。
dryRun (查询参数):string
gracePeriodSeconds (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 PriorityClass 集合DELETE /apis/scheduling.k8s.io/v1/priorityclasses
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数):integer
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
PodSchedulingContext 对象包含调度某些 Pod 所需要的额外信息,这些 Pod 使用了 “WaitForFirstConsumer” 分配模式的 ResourceClaim。
本功能特性是 Alpha 级别的特性,需要启用 DRAControlPlaneController 特性门控。
apiVersion: resource.k8s.io/v1alpha3
kind: PodSchedulingContext
metadata (ObjectMeta)
标准的对象元数据。
spec (PodSchedulingContextSpec),必需
spec 描述了 Pod 需要在哪里找到资源。
status (PodSchedulingContextStatus)
status 描述了 Pod 的资源可以在哪里分配。
PodSchedulingContextSpec 描述了 Pod 所需要的资源在哪里。
potentialNodes ([]string)
原子:将在合并期间被替换
potentialNodes 列出可以运行 Pod 的节点。
该字段的大小限制为 128。对于许多集群来说,这已经足够大了。 较大的集群可能需要更多的尝试去找到一个适合所有待定资源的节点。 这个限制值可能会在以后提高,但不会降低。
selectedNode (string)
selectedNode 是一个节点,由 Pod 引用的 ResourceClaim 将在此节点上尝试, 且尝试的分配模式是 “WaitForFirstConsumer”。
PodSchedulingContextStatus 描述 Pod 的资源可以从哪里分配。
resourceClaims ([]ResourceClaimSchedulingStatus)
映射:键 name
的唯一值将在合并过程中保留
resourceClaims 描述了每个 pod.spec.resourceClaim 条目的资源可用性, 其中对应的 ResourceClaim 使用 “WaitForFirstConsumer” 分配模式。
ResourceClaimSchedulingStatus 包含关于一个采用 “WaitForFirstConsumer” 分配模式的特定 ResourceClaim 的信息。
resourceClaims.name (string)
name 与 pod.spec.resourceClaims[*].name 字段匹配。
resourceClaims.unsuitableNodes ([]string)
原子:将在合并期间被替换
unsuitableNodes 列出 ResourceClaim 无法被分配的节点。
该字段的大小限制为 128,与 PodSchedulingSpec.PotentialNodes 相同。 这可能会在以后增加,但不会减少。
PodSchedulingContextList 是 Pod 调度对象的集合。
apiVersion: resource.k8s.io/v1alpha3
kind: PodSchedulingContextList
metadata (ListMeta)
标准的列表元数据。
items ([]PodSchedulingContext),必需
items 是 PodSchedulingContext 对象的列表。
get
读取指定的 PodSchedulingContextGET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
pretty(查询参数):string
200 (PodSchedulingContext): OK
401: Unauthorized
get
读取指定 PodSchedulingContext 的状态GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
pretty(查询参数):string
200 (PodSchedulingContext): OK
401: Unauthorized
list
列出或监视 PodSchedulingContext 类别的对象GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
namespace(路径参数):string,必需
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200 (PodSchedulingContextList): OK
401: Unauthorized
list
列出或监视 PodSchedulingContext 类别的对象GET /apis/resource.k8s.io/v1alpha3/podschedulingcontexts
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200 (PodSchedulingContextList): OK
401: Unauthorized
create
创建 PodSchedulingContextPOST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
namespace(路径参数):string,必需
body: PodSchedulingContext,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
202 (PodSchedulingContext): Accepted
401: Unauthorized
update
替换指定的 PodSchedulingContextPUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
body: PodSchedulingContext,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
update
替换指定 PodSchedulingContext 的状态PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
body: PodSchedulingContext,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
patch
部分更新指定的 PodSchedulingContextPATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
patch
部分更新指定 PodSchedulingContext 的状态PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
delete
删除 PodSchedulingContextDELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
name(路径参数):string,必需
PodSchedulingContext 的名称。
namespace(路径参数):string,必需
body: DeleteOptions
dryRun(查询参数):string
gracePeriodSeconds(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
200 (PodSchedulingContext): OK
202 (PodSchedulingContext): Accepted
401: Unauthorized
deletecollection
删除 PodSchedulingContext 的集合DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
namespace(路径参数):string,必需
body: DeleteOptions
continue(查询参数):string
dryRun(查询参数):string
fieldSelector(查询参数):string
gracePeriodSeconds(查询参数):integer
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceClaim 描述对集群中供工作负载使用的资源的访问请求。 例如,如果某个工作负载需要具有特定属性的加速器设备,这就是表达该请求的方式。 状态部分跟踪此申领是否已被满足,以及具体分配了哪些资源。
这是一个 Alpha 级别的资源类型,需要启用 DynamicResourceAllocation 特性门控。
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaim
metadata (ObjectMeta)
标准的对象元数据。
spec (ResourceClaimSpec),必需
spec 描述正在被请求的资源及其配置方式。spec 是不可变更的。
status (ResourceClaimStatus)
status 描述申领是否就绪以及已分配了哪些。
ResourceClaimSpec 定义在 ResourceClaim 中正在被请求的资源及其配置方式。
controller (string)
controller 是用于处理此申领分配的 DRA 驱动的名称。 如果为空,则在调度 Pod 时分配由调度器处理。
必须是一个 DNS 子域,并且应以驱动供应商拥有的 DNS 域结尾。
这是一个 Alpha 字段,需要启用 DRAControlPlaneController 特性门控。
devices (DeviceClaim)
devices 定义如何请求设备。
DeviceClaim 定义如何通过 ResourceClaim 请求设备。
devices.config ([]DeviceClaimConfiguration)
原子:将在合并期间被替换
此字段保存可以满足此申领请求的多个潜在驱动的配置。在分配申领时此字段被忽略。
DeviceClaimConfiguration 用于 DeviceClaim 中的配置参数。
devices.config.opaque (OpaqueDeviceConfiguration)
opaque 提供特定于驱动的配置参数。
OpaqueDeviceConfiguration 以驱动供应商所定义的格式提供驱动的配置参数。
devices.config.opaque.driver (string),必需
driver 用于确定需要将这些配置参数传递给哪个 kubelet 插件。
驱动开发者所提供的准入策略可以使用此字段来决定是否需要校验这些参数。
必须是一个 DNS 子域,并且应以驱动供应商拥有的 DNS 域结尾。
devices.config.opaque.parameters (RawExtension),必需
parameters 可以包含任意数据。处理校验和版本控制是驱动开发者的责任。 通常这包括自我识别和版本化管理(对 Kubernetes 而言即 "kind" + "apiVersion"),并在不同版本之间进行转换。
要使用它,请生成一个字段,在外部、版本化结构中以 RawExtension 作为其类型,在内部结构中以 Object 作为其类型。 你还需要注册你的各个插件类型。
// 内部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.Object `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 外部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.RawExtension `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 在网络上,JSON 看起来像这样:
{
"kind":"MyAPIObject",
"apiVersion":"v1",
"myPlugin": {
"kind":"PluginA",
"aOption":"foo",
},
}
那么会发生什么?解码首先使用 JSON 或 YAML 将序列化数据解组到你的外部 MyAPIObject 中。
这会导致原始 JSON 被存储下来,但不会被解包。下一步是复制(使用 pkg/conversion)到内部结构中。
runtime 包的 DefaultScheme 安装了转换函数,它将解析存储在 RawExtension 中的 JSON,
将其转换为正确的对象类型,并将其存储在 Object 中。
(TODO:如果对象是未知类型,将创建并存储一个 runtime.Unknown
对象。)
devices.config.requests ([]string)
原子:将在合并期间被替换
requests 列出了配置适用的请求的名称。如果为空,则适用于所有请求。
devices.constraints ([]DeviceConstraint)
原子:将在合并期间被替换
这些约束必须由为申领分配的设备集合所满足。
除了 requests 之外,DeviceConstraint 还必须有且仅有一个字段被设置。
devices.constraints.matchAttribute (string)
matchAttribute 要求所有待考察的设备都具有此属性,并且在这些设备上该属性的类型和值相同。
例如,如果你指定了 "dra.example.com/numa"(假设的例子!),那么只有在同一 NUMA 节点中的设备将被选中。 没有该属性的设备将不会被选中。所有设备应对此属性使用相同类型的值,因为这是其规约的一部分, 但如果某个设备不这样做,那么此设备也不会被选中。
必须包括域限定符。
devices.constraints.requests ([]string)
原子:将在合并期间被替换
requests 是此申领中必须共同满足此约束的一个或多个请求的列表。 如果一个请求由多个设备满足,则所有设备必须符合此约束。 如果未设置此字段,则此约束适用于此申领中的所有请求。
devices.requests ([]DeviceRequest)
原子:将在合并期间被替换
requests 表示对不同设备的各个请求,这些请求必须同时被满足。如果字段为空,则不需要分配设备。
DeviceRequest 是对申领所需设备的请求。这通常是对单个资源(如设备)的请求,但也可以请求几个相同的设备。 deviceClassName 目前是必需的。客户端必须检查它是否已被设置。 缺少它表示某些更改以客户端尚不支持的方式发生,在这种情况下客户端必须拒绝处理请求。
devices.requests.deviceClassName (string),必需
deviceClassName 引用特定的 DeviceClass,它可以定义要由此请求所继承的额外配置和选择算符。
类是必需的。哪些类可用取决于集群。
管理员通过仅为允许的设备使用选择算符安装类,就可以使用此字段限制哪些设备可以被请求。 如果用户可以自由请求任何设备而没有限制,则管理员可以创建一个空的 DeviceClass 供用户引用。
devices.requests.name (string),必需
name 可用于在 pod.spec.containers[].resources.claims 条目和申领的约束中引用此请求。
必须是 DNS 标签。
devices.requests.adminAccess (boolean)
adminAccess 表示这是对设备的管理访问权限的申领请求。 使用 adminAccess 的申领请求预期用于设备的监控或其他管理服务。 就访问模式和资源分配而言,它们会忽略对设备的所有普通申领。
devices.requests.allocationMode (string)
allocationMode 及其相关字段定义如何分配设备以满足此请求。支持的值为:
ExactCount:此请求是针对特定数量的设备。 这是默认值。确切数量在 count 字段中提供。
All:此请求是针对池中所有匹配的设备。 如果某些设备已经被分配,则分配将失败,除非请求了 adminAccess。
如果 allocationMode 未被指定,则默认模式为 ExactCount。 如果模式为 ExactCount 而 count 未被指定,则默认值为 1。 其他任何请求必须指定此字段。
将来可能会添加更多模式。客户端必须拒绝处理未知模式的请求。
devices.requests.count (int64)
count 仅在计数模式为 "ExactCount" 时使用。必须大于零。 如果 allocationMode 为 ExactCount 而此字段未被指定,则默认值为 1。
devices.requests.selectors ([]DeviceSelector)
原子:将在合并期间被替换
selectors 定义特定设备必须满足的条件,满足条件的设备被视为此请求的候选者。 所有选择算符必须同时被满足才会考虑某个设备。
devices.requests.selectors.cel (CELDeviceSelector)
cel 包含一个用于选择设备的 CEL 表达式。
CELDeviceSelector 包含一个用于选择设备的 CEL 表达式。
devices.requests.selectors.cel.expression (string),必需
expression 是一个 CEL 表达式,用于评估单个设备。 当被考虑的设备满足所需条件时,表达式的求值结果必须为 true;当不满足时,结果应为 false。 任何其他结果都是错误,会导致设备分配中止。
表达式的输入是一个名为 "device" 的对象,具有以下属性:
示例:考虑一个驱动为 "dra.example.com" 的设备,它暴露两个名为 "model" 和 "ext.example.com/family" 的属性, 并且暴露一个名为 "modules" 的容量。此表达式的输入将具有以下字段:
device.driver
device.attributes["dra.example.com"].model
device.attributes["ext.example.com"].family
device.capacity["dra.example.com"].modules
device.driver 字段可用于检查特定驱动,既可以作为高层次的前提条件(即你只想考虑来自此驱动的设备), 也可以作为考虑来自不同驱动的设备的多子句表达式的一部分。
attribute 中每个元素的值类型由设备定义,编写这些表达式的用户必须查阅其特定驱动的文档。 capacity 中元素的值类型为 Quantity。
如果在 device.attributes 或 device.capacity 中使用未知前缀进行查找, 将返回一个空映射。对未知字段的任何引用将导致评估错误和分配中止。
一个健壮的表达式应在引用属性之前检查其是否存在。
为了方便使用,cel.bind() 函数被启用,此函数可用于简化访问同一域的多个属性的表达式。例如:
cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
ResourceClaimStatus 跟踪资源是否已被分配以及产生的结果是什么。
allocation (AllocationResult)
一旦申领已被成功分配,就会设置 allocation。
allocation.controller (string)
controller 是处理了分配的 DRA 驱动的名称。 该驱动还负责对此申领的去配操作。当申领可以在不涉及驱动的情况下被去配时,此字段为空。
驱动可以分配由其他驱动提供的设备,因此此驱动名称可能与结果中列出的驱动名称不同。
这是一个 Alpha 字段,需要启用 DRAControlPlaneController 特性门控。
allocation.devices (DeviceAllocationResult)
devices 是分配设备的结果。
DeviceAllocationResult 是分配设备的结果。
allocation.devices.config ([]DeviceAllocationConfiguration)
原子:将在合并期间被替换
此字段是所有申领和类配置参数的组合。驱动可以基于某标志来区分这些参数。
字段包括在结果中没有分配设备的驱动的配置参数,因为由驱动决定它们支持哪些配置参数。 它们可以静默忽略未知的配置参数。
DeviceAllocationConfiguration 嵌入在 AllocationResult 中。
allocation.devices.config.source (string),必需
source 记录配置是否来自某类(因此不是普通用户能够设置的内容)或者来自某申领。
allocation.devices.config.opaque (OpaqueDeviceConfiguration)
opaque 提供特定于驱动的配置参数。
OpaqueDeviceConfiguration 包含由以驱动供应商所定义的格式提供驱动的配置参数。
allocation.devices.config.opaque.driver (string),必需
driver 用于确定需要将这些配置参数传递给哪个 kubelet 插件。
由驱动开发者提供的准入策略可以使用此字段来决定是否需要验证这些配置参数。
必须是 DNS 子域,并且应以驱动供应商拥有的 DNS 域结尾。
allocation.devices.config.opaque.parameters (RawExtension),必需
parameters 可以包含任意数据。驱动开发者负责处理校验和版本控制。 通常,这包括自我标识信息和版本化信息(就 Kubernetes 而言是 "kind" + "apiVersion"),以及不同版本之间的转换。
要使用它,请生成一个字段,在外部、版本化结构中以 RawExtension 作为其类型,在内部结构中以 Object 作为其类型。 你还需要注册你的各个插件类型。
// 内部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.Object `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 外部包:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.RawExtension `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
// 在网络上,JSON 将类似于:
{
"kind":"MyAPIObject",
"apiVersion":"v1",
"myPlugin": {
"kind":"PluginA",
"aOption":"foo",
},
}
那么会发生什么?解码首先使用 JSON 或 YAML 将序列化数据解组到你的外部 MyAPIObject 中。
这会导致原始 JSON 被存储下来,但不会被解包。下一步是复制(使用 pkg/conversion)到内部结构中。
runtime 包的 DefaultScheme 安装了转换函数,它将解析存储在 RawExtension 中的 JSON,
将其转换为正确的对象类型,并将其存储在 Object 中。
(TODO:如果对象是未知类型,将创建并存储一个 runtime.Unknown
对象。)
allocation.devices.config.requests ([]string)
原子:将在合并期间被替换
requests 列出配置适用的请求名称。如果为空,则适用于所有请求。
allocation.devices.results ([]DeviceRequestAllocationResult)
原子:将在合并期间被替换
results 列出所有已分配的设备。
DeviceRequestAllocationResult 包含一个请求的分配结果。
allocation.devices.results.device (string),必需
device 通过名称引用驱动资源池中的一个设备实例。字段值必须是一个 DNS 标签。
allocation.devices.results.driver (string),必需
driver 指定 DRA 驱动的名称,此驱动的 kubelet 插件应在节点上需要申领时被调用以处理分配。
必须是 DNS 子域,并且应以驱动供应商拥有的 DNS 域结尾。
allocation.devices.results.pool (string),必需
此名称与驱动名称和设备名称字段一起标识哪些设备已被分配(<驱动名称>/<资源池名称>/<设备名称>
)。
不得超过 253 个字符,并且可以包含用一个或多个用斜杠分隔的 DNS 子域。
allocation.devices.results.request (string),必需
request 是造成此设备被分配的申领中的请求名称。每个请求可以分配多个设备。
allocation.nodeSelector (NodeSelector)
nodeSelector 定义在哪儿可以使用分配的资源。如果不设置,则分配的资源在任何地方都可用。
节点选择算符表示在一组节点上一个或多个标签查询结果的并集; 也就是说,它表示由节点选择算符条件表示的选择算符的逻辑或计算结果。
allocation.nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm),必需
原子:将在合并期间被替换
必需。节点选择算符条件的列表。这些条件以逻辑与进行计算。
一个 null 或空的节点选择算符条件不会与任何对象匹配。这些要求会按逻辑与的关系来计算。 TopologySelectorTerm 类别实现了 NodeSelectorTerm 的子集。
allocation.nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
原子:将在合并期间被替换
基于节点标签所设置的节点选择算符要求的列表。
allocation.nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
原子:将在合并期间被替换
基于节点字段所设置的节点选择算符要求的列表。
deallocationRequested (boolean)
表示某申领需要被去分配。如果设置了此字段,新的使用者不可以被添加到 reservedFor 中。
只有在申领需要由 DRA 驱动来去配时才会使用此字段。 该驱动必须为此申领执行去配操作并重置此字段,同时清除 allocation 字段。
这是一个 Alpha 字段,需要启用 DRAControlPlaneController 特性门控。
reservedFor ([]ResourceClaimConsumerReference)
补丁策略:根据键 uid
执行合并操作
映射:在合并期间将根据键 uid 保留唯一值
reservedFor 标明目前哪些实体允许使用申领。 如果 Pod 引用了未为其预留的 ResourceClaim,则该 Pod 将不会启动。 正在使用或可能正在使用的申领(因为它已被预留)不准被去配。
在有多个调度器实例的集群中,两个 Pod 可能会被不同的调度器同时调度。 当它们引用同一个已达到最大使用者数量的 ResourceClaim 时,只能有一个 Pod 被调度。
两个调度器都尝试将它们的 Pod 添加到 claim.status.reservedFor 字段, 但只有第一个到达 API 服务器的更新会被存储,另一个会因错误而失败。 发出此请求的调度器知道它必须将 Pod 重新放回队列,等待 ResourceClaim 再次可用。
最多可以有 32 个这样的预留。这一限制可能会在未来放宽,但不会减少。
ResourceClaimConsumerReference 包含足够的信息以便定位 ResourceClaim 的使用者。 用户必须是与 ResourceClaim 在同一名字空间中的资源。
reservedFor.name (string),必需
name 是所引用资源的名称。
reservedFor.resource (string),必需
resource 是所引用资源的类别,例如 "pods"。
reservedFor.uid (string),必需
uid 用于唯一标识资源的某实例。
reservedFor.apiGroup (string)
apiGroup 是所引用资源的组。对于核心 API 而言此值为空字符串。 字段值与创建资源时所用的 apiVersion 中的组匹配。
ResourceClaimList 是申领的集合。
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimList
metadata (ListMeta)
标准的列表元数据。
items ([]ResourceClaim),必需
items 是资源申领的列表。
get
读取指定的 ResourceClaimGET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
200 (ResourceClaim): OK
401: Unauthorized
get
读取指定 ResourceClaim 的状态GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
200 (ResourceClaim): OK
401: Unauthorized
list
列出或监视 ResourceClaim 类别的对象GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
namespace(路径参数):string,必需
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200 (ResourceClaimList): OK
401: Unauthorized
list
列出或监视 ResourceClaim 类别的对象GET /apis/resource.k8s.io/v1alpha3/resourceclaims
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200 (ResourceClaimList): OK
401: Unauthorized
create
创建 ResourceClaimPOST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
namespace(路径参数):string,必需
body: ResourceClaim,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (ResourceClaim): OK
201 (ResourceClaim): Created
202 (ResourceClaim): Accepted
401: Unauthorized
update
替换指定的 ResourceClaimPUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
name(路径参数):string,必需
ResourceClaim 的名称。
namespace(路径参数):string,必需
body: ResourceClaim,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
update
替换指定 ResourceClaim 的状态PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
name(路径参数):string,必需
ResourceClaim 的名称。
namespace(路径参数):string,必需
body: ResourceClaim,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
patch
部分更新指定的 ResourceClaimPATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
name(路径参数):string,必需
ResourceClaim 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
patch
部分更新指定 ResourceClaim 的状态PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
name(路径参数):string,必需
ResourceClaim 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
delete
删除 ResourceClaimDELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
name(路径参数):string,必需
ResourceClaim 的名称。
namespace(路径参数):string,必需
body: DeleteOptions
dryRun(查询参数):string
gracePeriodSeconds(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
200 (ResourceClaim): OK
202 (ResourceClaim): Accepted
401: Unauthorized
deletecollection
删除 ResourceClaim 的集合DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
namespace(路径参数):string,必需
body: DeleteOptions
continue(查询参数):string
dryRun(查询参数):string
fieldSelector(查询参数):string
gracePeriodSeconds(查询参数):integer
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents(查询参数):boolean
timeoutSeconds(查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceClaimTemplate 用于生成 ResourceClaim 对象。
这是一个 Alpha 类型的特性,需要启用 DynamicResourceAllocation 特性门控。
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimTemplate
metadata (ObjectMeta)
标准的对象元数据。
spec (ResourceClaimTemplateSpec),必需
描述要生成的 ResourceClaim。
该字段是不可变的。当需要时,控制平面将为 Pod 创建一个 ResourceClaim,然后不再对其进行更新。
ResourceClaimTemplateSpec 包含针对 ResourceClaim 的元数据和字段。
spec (ResourceClaimSpec),必需
ResourceClaim 的规约。整个内容将不加修改地复制到从模板创建的 ResourceClaim 中。 与 ResourceClaim 中相同的字段在此处也是有效的。
metadata (ObjectMeta)
ObjectMeta 可以包含创建 PVC 时将要复制到其中的标签和注解。 不允许设置其他字段,并且即便设置了也会在验证期间被拒绝。
ResourceClaimTemplateList 是申领模板的集合。
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimTemplateList
metadata (ListMeta)
标准的列表元数据。
items ([]ResourceClaimTemplate),必需
items 是资源申领模板的列表。
get
读取指定的 ResourceClaimTemplateGET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
name (路径参数): string,必需
ResourceClaimTemplate 的名称。
namespace (路径参数): string,必需
pretty (查询参数): string
200 (ResourceClaimTemplate): OK
401: Unauthorized
list
列出或监视 ResourceClaimTemplate 类别的对象GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ResourceClaimTemplateList): OK
401: Unauthorized
list
列出或监视 ResourceClaimTemplate 类别的对象GET /apis/resource.k8s.io/v1alpha3/resourceclaimtemplates
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ResourceClaimTemplateList): OK
401: Unauthorized
create
创建 ResourceClaimTemplatePOST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
namespace (路径参数): string,必需
body: ResourceClaimTemplate,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
202 (ResourceClaimTemplate): Accepted
401: Unauthorized
update
替换指定的 ResourceClaimTemplatePUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
name (路径参数): string,必需
ResourceClaimTemplate 的名称。
namespace (路径参数): string,必需
body: ResourceClaimTemplate,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
401: Unauthorized
patch
部分更新指定的 ResourceClaimTemplatePATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
name (路径参数): string,必需
ResourceClaimTemplate 的名称。
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
401: Unauthorized
delete
删除 ResourceClaimTemplateDELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
name (路径参数): string,必需
ResourceClaimTemplate 的名称。
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (ResourceClaimTemplate): OK
202 (ResourceClaimTemplate): Accepted
401: Unauthorized
deletecollection
删除 ResourceClaimTemplate 的集合DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1”
Service 是软件服务(例如 mysql)的命名抽象,包含代理要侦听的本地端口(例如 3306)和一个选择算符, 选择算符用来确定哪些 Pod 将响应通过代理发送的请求。
apiVersion: v1
kind: Service
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ServiceSpec)
spec 定义 Service 的行为。 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status(ServiceStatus)
最近观察到的 Service 状态。由系统填充。只读。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ServiceSpec 描述用户在服务上创建的属性。
selector (map[string]string)
将 Service 流量路由到具有与此 selector 匹配的标签键值对的 Pod。 如果为空或不存在,则假定该服务有一个外部进程管理其端点,Kubernetes 不会修改该端点。 仅适用于 ClusterIP、NodePort 和 LoadBalancer 类型。如果类型为 ExternalName,则忽略。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/
ports ([]ServicePort)
补丁策略:基于键 type
合并
Map:合并时将保留 type 键的唯一值
此 Service 公开的端口列表。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
ServicePort 包含有关 ServicePort 的信息。
ports.port (int32),必需
Service 将公开的端口。
ports.targetPort (IntOrString)
在 Service 所针对的 Pod 上要访问的端口号或名称。
编号必须在 1 到 65535 的范围内。名称必须是 IANA_SVC_NAME。
如果此值是一个字符串,将在目标 Pod 的容器端口中作为命名端口进行查找。
如果未指定字段,则使用 port
字段的值(直接映射)。
对于 clusterIP 为 None 的服务,此字段将被忽略,
应忽略不设或设置为 port
字段的取值。更多信息:
https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#defining-a-service
IntOrString 是一种可以保存 int32 或字符串的类型。 在 JSON 或 YAML 编组和解组中使用时,它会生成或使用内部类型。 例如,这允许您拥有一个可以接受名称或数字的 JSON 字段。
ports.protocol (string)
此端口的 IP 协议。支持 “TCP”、“UDP” 和 “SCTP”。默认为 TCP。
ports.name (string)
Service 中此端口的名称。这必须是 DNS_LABEL。
ServiceSpec 中的所有端口的名称都必须唯一。
在考虑 Service 的端点时,这一字段值必须与 EndpointPort 中的 name
字段相同。
如果此服务上仅定义一个 ServicePort,则为此字段为可选。
ports.nodePort (int32)
当类型为 NodePort 或 LoadBalancer 时,Service 公开在节点上的端口, 通常由系统分配。如果指定了一个在范围内且未使用的值,则将使用该值,否则操作将失败。 如果在创建的 Service 需要该端口时未指定该字段,则会分配端口。 如果在创建不需要该端口的 Service时指定了该字段,则会创建失败。 当更新 Service 时,如果不再需要此字段(例如,将类型从 NodePort 更改为 ClusterIP),这个字段将被擦除。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#type-nodeport
ports.appProtocol (string)
此端口的应用协议,用作实现的提示,为他们理解的协议提供更丰富的行为。此字段遵循标准 Kubernetes 标签语法,有效值包括:
无前缀协议名称 - 保留用于 IANA 标准服务名称(根据 RFC-6335 和 https://www.iana.org/assignments/service-names)。
Kubernetes 定义的前缀名称:
其他协议应使用实现定义的前缀名称,例如 mycompany.com/my-custom-protocol。
type (string)
type 确定 Service 的公开方式。默认为 ClusterIP。
有效选项为 ExternalName、ClusterIP、NodePort 和 LoadBalancer。
ClusterIP
为端点分配一个集群内部 IP 地址用于负载均衡。
Endpoints 由 selector 确定,如果未设置 selector,则需要通过手动构造 Endpoints 或 EndpointSlice 的对象来确定。
如果 clusterIP 为 None
,则不分配虚拟 IP,并且 Endpoints 作为一组端点而不是虚拟 IP 发布。
NodePort
建立在 ClusterIP 之上,并在每个节点上分配一个端口,该端口路由到与 clusterIP 相同的 Endpoints。
LoadBalancer
基于 NodePort 构建并创建一个外部负载均衡器(如果当前云支持),该负载均衡器路由到与 clusterIP 相同的 Endpoints。
externalName
将此 Service 别名为指定的 externalName。其他几个字段不适用于 ExternalName Service。更多信息:
https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#publishing-services-service-types
ipFamilies ([]string)
原子: 将在合并期间被替换
iPFamilies 是分配给此服务的 IP 协议(例如 IPv4、IPv6)的列表。 该字段通常根据集群配置和 ipFamilyPolicy 字段自动设置。 如果手动指定该字段,且请求的协议在集群中可用,且 ipFamilyPolicy 允许,则使用;否则服务创建将失败。 该字段修改是有条件的:它允许添加或删除辅助 IP 协议,但不允许更改服务的主要 IP 协议。 有效值为 “IPv4” 和 “IPv6”。 该字段仅适用于 ClusterIP、NodePort 和 LoadBalancer 类型的服务,并且确实可用于“无头”服务。 更新服务设置类型为 ExternalName 时,该字段将被擦除。
该字段最多可以包含两个条目(双栈系列,按任意顺序)。 如果指定,这些协议栈必须对应于 clusterIPs 字段的值。 clusterIP 和 ipFamilies 都由 ipFamilyPolicy 字段管理。
ipFamilyPolicy (string)
iPFamilyPolicy 表示此服务请求或要求的双栈特性。 如果没有提供值,则此字段将被设置为 SingleStack。 服务可以是 “SingleStack”(单个 IP 协议)、 “PreferDualStack”(双栈配置集群上的两个 IP 协议或单栈集群上的单个 IP 协议) 或 “RequireDualStack”(双栈上的两个 IP 协议配置的集群,否则失败)。 ipFamilies 和 clusterIPs 字段取决于此字段的值。 更新服务设置类型为 ExternalName 时,此字段将被擦除。
clusterIP (string)
clusterIP 是服务的 IP 地址,通常是随机分配的。 如果地址是手动指定的,在范围内(根据系统配置),且没有被使用,它将被分配给服务,否则创建服务将失败。 clusterIP 一般不会被更改,除非 type 被更改为 ExternalName (ExternalName 需要 clusterIP 为空)或 type 已经是 ExternalName 时,可以更改 clusterIP(在这种情况下,可以选择指定此字段)。 可选值 “None”、空字符串 (“”) 或有效的 IP 地址。 clusterIP 为 “None” 时会生成“无头服务”(无虚拟 IP),这在首选直接 Endpoint 连接且不需要代理时很有用。 仅适用于 ClusterIP、NodePort、和 LoadBalancer 类型的服务。 如果在创建 ExternalName 类型的 Service 时指定了 clusterIP,则创建将失败。 更新 Service type 为 ExternalName 时,clusterIP 会被移除。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
clusterIPs ([]string)
原子: 将在合并期间被替换
clusterIPs 是分配给该 Service 的 IP 地址列表,通常是随机分配的。 如果地址是手动指定的,在范围内(根据系统配置),且没有被使用,它将被分配给 Service;否则创建 Service 失败。 clusterIP 一般不会被更改,除非 type 被更改为 ExternalName (ExternalName 需要 clusterIPs 为空)或 type 已经是 ExternalName 时,可以更改 clusterIPs(在这种情况下,可以选择指定此字段)。 可选值 “None”、空字符串 (“”) 或有效的 IP 地址。 clusterIPs 为 “None” 时会生成“无头服务”(无虚拟 IP),这在首选直接 Endpoint 连接且不需要代理时很有用。 适用于 ClusterIP、NodePort、和 LoadBalancer 类型的服务。 如果在创建 ExternalName 类型的 Service 时指定了 clusterIPs,则会创建失败。 更新 Service type 为 ExternalName 时,该字段将被移除。如果未指定此字段,则将从 clusterIP 字段初始化。 如果指定 clusterIPs,客户端必须确保 clusterIPs[0] 和 clusterIP 一致。
clusterIPs 最多可包含两个条目(双栈系列,按任意顺序)。 这些 IP 必须与 ipFamilies 的值相对应。 clusterIP 和 ipFamilies 都由 ipFamilyPolicy 管理。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
externalIPs ([]string)
原子:将在合并期间被替换
externalIPs 是一个 IP 列表,集群中的节点会为此 Service 接收针对这些 IP 地址的流量。 这些 IP 不被 Kubernetes 管理。用户需要确保流量可以到达具有此 IP 的节点。 一个常见的例子是不属于 Kubernetes 系统的外部负载均衡器。
sessionAffinity (string)
支持 “ClientIP” 和 “None”。用于维护会话亲和性。 启用基于客户端 IP 的会话亲和性。必须是 ClientIP 或 None。默认为 None。更多信息: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
loadBalancerIP (string)
仅适用于服务类型:LoadBalancer。此功能取决于底层云提供商是否支持负载均衡器。 如果云提供商不支持该功能,该字段将被忽略。 已弃用:该字段信息不足,且其含义因实现而异。此字段是不可移植的,并且可能不支持双栈。。 我们鼓励用户在可用时使用特定于实现的注解。
loadBalancerSourceRanges ([]string)
原子:将在合并期间被替换
如果设置了此字段并且被平台支持,将限制通过云厂商的负载均衡器的流量到指定的客户端 IP。 如果云提供商不支持该功能,该字段将被忽略。更多信息: https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/create-external-load-balancer/
loadBalancerClass (string)
loadBalancerClass 是此 Service 所属的负载均衡器实现的类。 如果设置了此字段,则字段值必须是标签风格的标识符,带有可选前缀,例如 ”internal-vip” 或 “example.com/internal-vip”。 无前缀名称是为最终用户保留的。该字段只能在 Service 类型为 “LoadBalancer” 时设置。 如果未设置此字段,则使用默认负载均衡器实现。默认负载均衡器现在通常通过云提供商集成完成,但应适用于任何默认实现。 如果设置了此字段,则假定负载均衡器实现正在监测具有对应负载均衡器类的 Service。 任何默认负载均衡器实现(例如云提供商)都应忽略设置此字段的 Service。 只有在创建或更新的 Service 的 type 为 “LoadBalancer” 时,才可设置此字段。 一经设定,不可更改。当 Service 的 type 更新为 “LoadBalancer” 之外的其他类型时,此字段将被移除。
externalName (string)
externalName 是发现机制将返回的外部引用,作为此服务的别名(例如 DNS CNAME 记录)。
不涉及代理。必须是小写的 RFC-1123 主机名 (https://tools.ietf.org/html/rfc1123),
并且要求 type
为 ExternalName
。
externalTrafficPolicy (string)
externalTrafficPolicy 描述了节点如何分发它们在 Service 的“外部访问”地址 (NodePort、ExternalIP 和 LoadBalancer IP)接收到的服务流量。 如果设置为 “Local”,代理将以一种假设外部负载均衡器将负责在节点之间服务流量负载均衡, 因此每个节点将仅向服务的节点本地端点传递流量,而不会伪装客户端源 IP。 (将丢弃错误发送到没有端点的节点的流量。) “Cluster” 默认值使用负载均衡路由到所有端点的策略(可能会根据拓扑和其他特性进行修改)。 请注意,从集群内部发送到 External IP 或 LoadBalancer IP 的流量始终具有 “Cluster” 语义, 但是从集群内部发送到 NodePort 的客户端需要在选择节点时考虑流量路由策略。
internalTrafficPolicy (string)
internalTrafficPolicy 描述节点如何分发它们在 ClusterIP 上接收到的服务流量。 如果设置为 “Local”,代理将假定 Pod 只想与在同一节点上的服务端点通信,如果没有本地端点,它将丢弃流量。 “Cluster” 默认将流量路由到所有端点(可能会根据拓扑和其他特性进行修改)。
healthCheckNodePort (int32)
healthCheckNodePort 指定 Service 的健康检查节点端口。 仅适用于 type 为 LoadBalancer 且 externalTrafficPolicy 设置为 Local 的情况。 如果为此字段设定了一个值,该值在合法范围内且没有被使用,则使用所指定的值。 如果未设置此字段,则自动分配字段值。外部系统(例如负载平衡器)可以使用此端口来确定给定节点是否拥有此服务的端点。 在创建不需要 healthCheckNodePort 的 Service 时指定了此字段,则 Service 创建会失败。 要移除 healthCheckNodePort,需要更改 Service 的 type。 该字段一旦设置就无法更改。
publishNotReadyAddresses (boolean)
publishNotReadyAddresses 表示任何处理此 Service 端点的代理都应忽略任何准备就绪/未准备就绪的指示。 设置此字段的主要场景是为 StatefulSet 的服务提供支持,使之能够为其 Pod 传播 SRV DNS 记录,以实现对等发现。 为 Service 生成 Endpoints 和 EndpointSlice 资源的 Kubernetes 控制器对字段的解读是, 即使 Pod 本身还没有准备好,所有端点都可被视为 “已就绪”。 对于代理而言,如果仅使用 Kubernetes 通过 Endpoints 或 EndpointSlice 资源所生成的端点, 则可以安全地假设这种行为。
sessionAffinityConfig (SessionAffinityConfig)
sessionAffinityConfig 包含会话亲和性的配置。
allocateLoadBalancerNodePorts (boolean)
allocateLoadBalancerNodePorts 定义了是否会自动为 LoadBalancer 类型的 Service 分配 NodePort。默认为 true。 如果集群负载均衡器不依赖 NodePort,则可以设置此字段为 false。 如果调用者(通过指定一个值)请求特定的 NodePort,则无论此字段如何,都会接受这些请求。 该字段只能设置在 type 为 LoadBalancer 的 Service 上,如果 type 更改为任何其他类型,该字段将被移除。
trafficDistribution (string)
trafficDistribution 提供了一种流量如何被分配到 Service 端点的偏好表达方式。 各个实现可以将此字段用作提示,但不需要严格遵守。如果此字段未设置,实现将应用其默认路由策略。 如果设置为“PreferClose”,则实现应优先考虑在拓扑上接近的端点(例如,位于同一区域)。 这是一个 Beta 字段,需要启用 ServiceTrafficDistribution 特性。
ServiceStatus 表示 Service 的当前状态。
conditions ([]Condition)
补丁策略:基于键 type
合并
Map: 键类型的唯一值将在合并期间保留
服务的当前状态。
condition 包含此 API 资源某一方面当前的状态详细信息。
conditions.lastTransitionTime(Time),必需
lastTransitionTime 是状况最近一次状态转化的时间。 变化应该发生在下层状况发生变化的时候。如果不知道下层状况发生变化的时间, 那么使用 API 字段更改的时间是可以接受的。
Time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。
conditions.message (string),必需
message 是人类可读的消息,有关转换的详细信息,可以是空字符串。
conditions.reason (string),必需
reason 包含一个程序标识符,指示 condition 最后一次转换的原因。 特定条件类型的生产者可以定义该字段的预期值和含义,以及这些值是否被视为有保证的 API。 该值应该是 CamelCase 字符串且不能为空。
conditions.status (string),必需
condition 的状态,True、False、Unknown 之一。
conditions.type (string),必需
condition 的类型,格式为 CamelCase 或 foo.example.com/CamelCase。
conditions.observedGeneration (int64)
observedGeneration 表示设置 condition 基于的 .metadata.generation 的过期次数。 例如,如果 .metadata.generation 当前为 12,但 .status.conditions[x].observedGeneration 为 9, 则 condition 相对于实例的当前状态已过期。
loadBalancer (LoadBalancerStatus)
loadBalancer 包含负载均衡器的当前状态(如果存在)。
LoadBalancerStatus 表示负载均衡器的状态。
loadBalancer.ingress ([]LoadBalancerIngress)
原子:将在合并期间被替换
ingress 是一个包含负载均衡器 Ingress 点的列表。Service 的流量需要被发送到这些 Ingress 点。
LoadBalancerIngress 表示负载平衡器入口点的状态: 用于服务的流量是否被发送到入口点。
loadBalancer.ingress.hostname (string)
hostname 是为基于 DNS 的负载均衡器 Ingress 点(通常是 AWS 负载均衡器)设置的。
loadBalancer.ingress.ip (string)
ip 是为基于 IP 的负载均衡器 Ingress 点(通常是 GCE 或 OpenStack 负载均衡器)设置的。
loadBalancer.ingress.ipMode (string)
ipMode 指定负载平衡器 IP 的行为方式,并且只能在设置了 ip 字段时指定。
将其设置为 VIP
表示流量将传送到节点,并将目标设置为负载均衡器的 IP 和端口。
将其设置为 Proxy
表示将流量传送到节点或 Pod,并将目标设置为节点的 IP 和节点端口或 Pod 的 IP 和端口。
服务实现可以使用此信息来调整流量路由。
loadBalancer.ingress.ports ([]PortStatus)
原子:将在合并期间被替换
ports 是 Service 的端口列表。如果设置了此字段,Service 中定义的每个端口都应该在此列表中。
loadBalancer.ingress.ports.port (int32),必需
port 是所记录的服务端口状态的端口号。
loadBalancer.ingress.ports.protocol (string),必需
protocol 是所记录的服务端口状态的协议。支持的值为:“TCP”、“UDP”、“SCTP”。
loadBalancer.ingress.ports.error (string)
error 是记录 Service 端口的问题。 错误的格式应符合以下规则:
ServiceList 包含一个 Service 列表。
apiVersion: v1
kind: ServiceList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items([]Service),必需
Service 列表。
get
读取指定的 ServiceGET /api/v1/namespaces/{namespace}/services/{name}
200(Service): OK
401: Unauthorized
get
读取指定 Service 的状态GET /api/v1/namespaces/{namespace}/services/{name}/status
200(Service): OK
401: Unauthorized
list
列出或监测 Service 类型的对象GET /api/v1/namespaces/{namespace}/services
namespace(路径参数):string,必需
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents (查询参数):boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200(ServiceList): OK
401: Unauthorized
list
列出或监测 Service 类型的对象GET /api/v1/services
allowWatchBookmarks(查询参数):boolean
continue(查询参数):string
fieldSelector(查询参数):string
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds(查询参数):integer
watch(查询参数):boolean
200(ServiceList): OK
401: Unauthorized
create
创建一个 ServicePOST /api/v1/namespaces/{namespace}/services
namespace(路径参数):string,必需
body:Service,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200(Service): OK
201(Service): Created
202(Service): Accepted
401: Unauthorized
update
替换指定的 ServicePUT /api/v1/namespaces/{namespace}/services/{name}
name (路径参数):string,必需
Service 的名称。
namespace(路径参数):string,必需
body: Service,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200(Service): OK
201(Service): Created
401: Unauthorized
update
替换指定 Service 的状态PUT /api/v1/namespaces/{namespace}/services/{name}/status
name (路径参数):string,必需
Service 的名称。
namespace(路径参数):string,必需
body: Service,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
pretty(查询参数):string
200(Service): OK
201(Service): Created
401: Unauthorized
patch
部分更新指定的 ServicePATCH /api/v1/namespaces/{namespace}/services/{name}
name (路径参数):string,必需
Service 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200(Service): OK
201(Service): Created
401: Unauthorized
patch
部分更新指定 Service 的状态PATCH /api/v1/namespaces/{namespace}/services/{name}/status
name (路径参数):string,必需
Service 的名称。
namespace(路径参数):string,必需
body: Patch,必需
dryRun(查询参数):string
fieldManager(查询参数):string
fieldValidation(查询参数):string
force(查询参数):boolean
pretty(查询参数):string
200(Service): OK
201(Service): Created
401: Unauthorized
delete
删除 ServiceDELETE /api/v1/namespaces/{namespace}/services/{name}
name (路径参数):string,必需
Service 的名称。
namespace(路径参数):string,必需
body: DeleteOptions
dryRun(查询参数):string
gracePeriodSeconds(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
200(Service): OK
202(Service): Accepted
401: Unauthorized
deletecollection
删除 Service 集合DELETE /api/v1/namespaces/{namespace}/services
namespace(路径参数):string,必需
body: DeleteOptions
continue(查询参数):string
dryRun(查询参数):string
fieldSelector(查询参数):string
gracePeriodSeconds(查询参数):integer
labelSelector(查询参数):string
limit(查询参数):integer
pretty(查询参数):string
propagationPolicy(查询参数):string
resourceVersion(查询参数):string
resourceVersionMatch(查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds(查询参数):integer
200(Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
Endpoints 是实现实际服务的端点的集合。举例:
Name: "mysvc",
Subsets: [
{
Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
},
{
Addresses: [{"ip": "10.10.3.3"}],
Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
},
]
apiVersion: v1
kind: Endpoints
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
subsets ([]EndpointSubset)
Atomic:将在合并期间被替换
所有端点的集合是所有 subsets 的并集。不同地址会根据其 IP 地址被放入不同子集。 对于具有多个端口的单个地址,如果其中一些端口已就绪,而另一些端口未就绪(因为它们来自不同的容器), 将导致地址显示在不同端口的不同子集中。 任何地址都不可以同时出现在 addresses 和 notReadyAddress 中的相同子集内。
EndpointSubset 是一组具有公共端口集的地址。扩展的端点集是 addresses 和 ports 的笛卡尔乘积。例如假设:
{ Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] }
则最终的端点集可以看作:
a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], b: [ 10.10.1.1:309, 10.10.2.2:309 ]*
subsets.addresses ([]EndpointAddress)
Atomic:将在合并期间被替换
提供标记为就绪的相关端口的 IP 地址。 这些端点应该被认为是负载均衡器和客户端可以安全使用的。
EndpointAddress 是描述单个 IP 地址的元组。
subsets.addresses.ip (string), 必需
端点的 IP。不可以是本地回路(127.0.0.0/8 或 ::1)、 链路本地(169.254.0.0/16 或 fe80::/10)或链路本地多播(224.0.0.0/24 或 ff02::/16))地址。
subsets.addresses.hostname (string)
端点主机名称。
subsets.addresses.nodeName (string)
可选:承载此端点的节点。此字段可用于确定一个节点的本地端点。
subsets.addresses.targetRef (ObjectReference)
对提供端点的对象的引用。
subsets.notReadyAddresses ([]EndpointAddress)
**Atomic:将在合并期间被替换**
提供相关端口但由于尚未完成启动、最近未通过就绪态检查或最近未通过活跃性检查而被标记为当前未就绪的 IP 地址。 EndpointAddress 是描述单个 IP 地址的元组。
subsets.notReadyAddresses.ip (string), 必需
端点的 IP。不可以是本地环路(127.0.0.0/8 或 ::1)、 链路本地(169.254.0.0/16 或 fe80::/10)或链路本地多播(224.0.0.0/24 或 ff02::/16)地址。
subsets.notReadyAddresses.hostname (string)
端点主机名称。
subsets.notReadyAddresses.nodeName (string)
可选:承载此端点的节点。此字段可用于确定节点的本地端点。
subsets.notReadyAddresses.targetRef (ObjectReference)
对提供端点的对象的引用。
subsets.ports ([]EndpointPort)
Atomic:将在合并期间被替换
相关 IP 地址上可用的端口号。
subsets.ports.port (int32), 必需
端点的端口号。
subsets.ports.protocol (string)
此端口的 IP 协议。必须是 UDP、TCP 或 SCTP。默认值为 TCP。
subsets.ports.name (string)
端口的名称。此字段必须与相应 ServicePort 中的 name
字段匹配。必须是 DNS_LABEL。
仅当定义了一个端口时才可选。
subsets.ports.appProtocol (string)
端口的应用程序协议。这被用作实现的提示,为他们理解的协议提供更丰富的行为。 此字段遵循标准的 Kubernetes 标签语法。有效值为:
未加前缀的名称保留给 IANA 标准服务名称(遵循 RFC-6335 和 https://www.iana.org/assignments/service-names)。
Kubernetes 定义的前缀名称
其他协议应使用实现定义的前缀名称,如 mycompany.com/my-custom-protocol。
EndpointsList 是端点列表。
apiVersion: v1
kind: EndpointsList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]Endpoints), 必需
端点列表。
get
读取指定的 EndpointsGET /api/v1/namespaces/{namespace}/endpoints/{name}
name (路径参数):string,必需
Endpoints 的名称。
namespace (路径参数):string,必需
pretty (查询参数):string
200 (Endpoints): OK
401: Unauthorized
list
列出或监测 Endpoints 类型的对象GET /api/v1/namespaces/{namespace}/endpoints
namespace (路径参数):string,必需
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (EndpointsList): OK
401: Unauthorized
list
列出或监测 Endpoints 类型的对象GET /api/v1/endpoints
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (EndpointsList): OK
401: Unauthorized
create
创建 EndpointsPOST /api/v1/namespaces/{namespace}/endpoints
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (Endpoints): OK
201 (Endpoints): Created
202 (Endpoints): Accepted
401: Unauthorized
update
替换指定的 EndpointsPUT /api/v1/namespaces/{namespace}/endpoints/{name}
name (路径参数):string,必需
Endpoints 名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (Endpoints): OK
201 (Endpoints): Created
401: Unauthorized
patch
部分更新指定的 EndpointsPATCH /api/v1/namespaces/{namespace}/endpoints/{name}
name (路径参数):string,必需
Endpoints 名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
200 (Endpoints): OK
201 (Endpoints): Created
401: Unauthorized
delete
删除 EndpointsDELETE /api/v1/namespaces/{namespace}/endpoints/{name}
name (路径参数):string,必需
Endpoints 名称
namespace (路径参数):string,必需
body: DeleteOptions
dryRun (查询参数):string
gracePeriodSeconds (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 Endpoints 组DELETE /api/v1/namespaces/{namespace}/endpoints
namespace (路径参数):string,必需
body: DeleteOptions
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数):integer
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: discovery.k8s.io/v1
import "k8s.io/api/discovery/v1"
EndpointSlice 是实现某 Service 的端点的子集。一个 Service 可以有多个 EndpointSlice 对象与之对应, 必须将所有的 EndpointSlice 拼接起来才能形成一套完整的端点集合。Service 通过标签来选择 EndpointSlice。
apiVersion:discovery.k8s.io/v1
kind:EndpointSlice
metadata (ObjectMeta)
标准的对象元数据。
addressType (string), 必需
addressType 指定当前 EndpointSlice 携带的地址类型。一个 EndpointSlice 只能携带同一类型的地址。 EndpointSlice 对象创建完成后不可以再更改 addressType 字段。 目前支持的地址类型为:
endpoints ([]Endpoint), 必需
原子性:合并期间将被替换
endpoints 是当前 EndpointSlice 中一组唯一的端点。每个 EndpointSlice 最多可以包含 1000 个端点。
端点是实现某 Service 的一个逻辑“后端”。
endpoints.addresses ([]string), 必需
集合:不重复的值在合并期间会被保留
本端点的地址。此字段的内容会根据对应的 EndpointSlice addressType 字段的值进行解释。 消费者必须根据自身能力处理不同类型的地址。此字段必须至少包含 1 个地址,最多不超过 100 个地址。 假定这些地址都是可替换的,而且客户端也可能选择只用第一个元素。参阅: https://issue.k8s.io/106267
endpoints.conditions (EndpointConditions)
conditions 包含和本端点当前状态有关的信息。
EndpointConditions 是端点的当前状况。
endpoints.conditions.ready (boolean)
ready 说明此端点已经准备好根据相关的系统映射接收流量。nil 值表示状态未知。 在大多数情况下,消费者应将这种未知状态视为就绪(ready)。 考虑到兼容性,对于正在结束状态下的端点,永远不能将 ready 设置为“true”, 除非正常的就绪行为被显式覆盖,例如当关联的服务设置了 publishNotReadyAddresses 标志时。
endpoints.conditions.serving (boolean)
serving 和 ready 非常相似。唯一的不同在于, 即便某端点的状态为 Terminating 也可以设置 serving。 对于处在终止过程中的就绪端点,此状况应被设置为 “true”。 如果设置为 nil,则消费者应该以 ready 值为准。
endpoints.conditions.terminating (boolean)
terminating 说明当前端点正在终止过程中。nil 值表示状态未知。 消费者应将这种未知状态视为端点并不处于终止过程中。
endpoints.deprecatedTopology (map[string]string)
deprecatedTopology 包含 v1beta1 API 的拓扑信息部分。目前已经弃用了此字段, 移除 v1beta1 API 时(不早于 Kubernetes v1.24)会一起移除此字段。 此字段目前仍然可以存储值,但是不能通过 v1 API 写入数据。 向此字段写入数据的任何尝试都会被忽略,并且不会通知用户。 移除此字段后,可以在 zone 和 nodeName 字段中查看拓扑信息。
endpoints.hints (EndpointHints)
hints 是关于应该如何使用某端点的提示信息。
EndpointHints 提供应该如何使用某端点的提示信息。
endpoints.hostname (string)
此端点的主机名称。端点的使用者可以通过此字段区分各个端点(例如,通过 DNS 域名)。 使用同一主机名称的多个端点应被视为可替换(例如,DNS 中的多个 A 记录)。 必须为小写字母,并且需要通过 DNS Label (RFC 1123) 验证。
endpoints.nodeName (string)
nodeName 是托管此端点的 Node 的名称,使用 nodeName 可以决定 Node 本地有哪些端点。
endpoints.targetRef (ObjectReference)
targetRef 是对代表此端点的 Kubernetes 对象的引用。
endpoints.zone (string)
zone 是此端点所在的可用区(Zone)的名称。
ports ([]EndpointPort)
原子性:合并期间会被替代
ports 列出了当前 EndpointSlice 中各个端点所暴露的网络端口。每个端口的名称不得重复。 当 ports 列表为空时,表示没有已经指定暴露哪些端口。如果端口值被定义为 nil,表示暴露“所有端口”。 每个 EndpointSlice 最多可以包含 100 个端口。
EndpointPort 是 EndpointSlice 使用的端口。
ports.port (int32)
port 表示端点的端口号。如果未指定,就不限制端口,且必须根据消费者的具体环境进行解释。
ports.protocol (string)
protocol 表示此端口的 IP 协议。必须为 UDP、TCP 或 SCTP。默认为 TCP。
ports.name (string)
name 表示此端口的名称。EndpointSlice 中所有端口的名称都不得重复。 如果 EndpointSlice 是基于 Kubernetes Service 创建的, 那么此端口的名称和 Service.ports[].name 字段的值一致。默认为空字符串。 名称必须是空字符串,或者必须通过 DNS_LABEL 验证:
ports.appProtocol (string)
此端口的应用层协议。字段值被用作提示,允许协议实现为其所理解的协议提供更丰富的行为。 此字段遵循标准的 Kubernetes 标签句法。有效的取值是:
不带前缀的协议名 - 是 IANA 标准服务的保留名称(参见 RFC-6335 和 https://www.iana.org/assignments/service-names)。
Kubernetes 定义的前缀名称:
其他协议应该使用带前缀的名称,例如 mycompany.com/my-custom-protocol。
EndpointSliceList 是 EndpointSlice 的列表。
apiVersion:discovery.k8s.io/v1
kind:EndpointSliceList
metadata (ListMeta)
标准的列表元数据
items ([]EndpointSlice), 必需
items 是 EndpointSlice 列表
get
读取指定的 EndpointSliceGET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (路径参数):string, 必需
EndpointSlice 的名称
namespace (路径参数):string, 必需
pretty (查询参数):string
200 (EndpointSlice):OK
401:Unauthorized
list
列举或监测 EndpointSlice 类别的对象GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (路径参数):string, 必需
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (EndpointSliceList): OK
401:Unauthorized
list
列举或监测 EndpointSlice 类别的对象GET /apis/discovery.k8s.io/v1/endpointslices
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (EndpointSliceList):OK
401:Unauthorized
create
创建 EndpointSlicePOST /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (路径参数):string, 必需
body:EndpointSlice, 必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (EndpointSlice):OK
201 (EndpointSlice):Created
202 (EndpointSlice):Accepted
401:Unauthorized
update
替换指定的 EndpointSlicePUT /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (路径参数):string, 必需
EndpointSlice 的名称
namespace (路径参数):string, 必需
body:EndpointSlice,必需
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string-
pretty (查询参数):string
200 (EndpointSlice):OK
201 (EndpointSlice):Created
401:Unauthorized
patch
部分更新指定的 EndpointSlicePATCH /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (路径参数): string, 必需
EndpointSlice 的名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
200 (EndpointSlice):OK
201 (EndpointSlice):Created
401:Unauthorized
delete
删除 EndpointSliceDELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}
name (路径参数):string, 必需
EndpointSlice 的名称
namespace (路径参数):string, 必需
body:DeleteOptions
dryRun (查询参数):string
gracePeriodSeconds (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (Status):OK
202 (Status):Accepted
401:Unauthorized
deletecollection
删除 EndpointSlice 的集合DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices
namespace (路径参数):string, 必需
body:DeleteOptions
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询参数):integer
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
200 (Status):OK
401:Unauthorized
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress 是允许入站连接到达后端定义的端点的规则集合。 Ingress 可以配置为向服务提供外部可访问的 URL、负载均衡流量、终止 SSL、提供基于名称的虚拟主机等。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (IngressSpec)
spec 是 Ingress 的预期状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (IngressStatus)
status 是 Ingress 的当前状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
IngressSpec 描述用户希望存在的 Ingress。
defaultBackend (IngressBackend)
defaultBackend 是负责处理与任何规则都不匹配的请求的后端。 如果未指定 rules,则必须指定 defaultBackend。 如果未设置 defaultBackend,则不符合任何 rules 的请求的处理将由 Ingress 控制器决定。
ingressClassName (string)
ingressClassName 是 IngressClass 集群资源的名称。
Ingress 控制器实现使用此字段来了解它们是否应该通过传递连接(控制器 -> IngressClass -> Ingress 资源)为该
Ingress 资源提供服务。尽管 kubernetes.io/ingress.class
注解(简单的常量名称)从未正式定义,
但它被 Ingress 控制器广泛支持,以在 Ingress 控制器和 Ingress 资源之间创建直接绑定。
新创建的 Ingress 资源应该优先选择使用该字段。但是,即使注解已被正式弃用,
出于向后兼容性的原因,Ingress 控制器仍应能够处理该注解(如果存在)。
rules ([]IngressRule)
Atomic: 将在合并期间被替换
rules 是用于配置 Ingress 的主机规则列表。如果未指定或没有规则匹配,则所有流量都将发送到默认后端。
IngressRule 表示将指定主机下的路径映射到相关后端服务的规则。 传入请求首先评估主机匹配,然后路由到与匹配的 IngressRuleValue 关联的后端。
rules.host (string)
host 是 RFC 3986 定义的网络主机的完全限定域名。请注意以下与 RFC 3986 中定义的 URI 的 “host” 部分的偏差:
不允许 IP。当前 IngressRuleValue 只能应用于父 Ingress Spec 中的 IP。
由于不允许使用端口,因此不理会 “:” 分隔符。 当前 Ingress 的端口隐式为:
:80
用于 http:443
用于 https这两种情况在未来都可能发生变化。入站请求在通过 IngressRuleValue 处理之前先进行 host 匹配。 如果主机未指定,Ingress 将根据指定的 IngressRuleValue 规则路由所有流量。
host 可以是 “精确“ 的,设置为一个不含终止句点的网络主机域名(例如 “foo.bar.com” ), 也可以是一个 “通配符”,设置为以单个通配符标签为前缀的域名(例如 “.foo.com”)。 通配符 “” 必须单独显示为第一个 DNS 标签,并且仅与单个标签匹配。 你不能单独使用通配符作为标签(例如,Host=“*”)。请求将按以下方式与主机字段匹配:
Host
标头等于 host 值,则请求与此规则匹配。Host
标头与通配符规则的后缀(删除第一个标签)相同,
则请求与此规则匹配。rules.http (HTTPIngressRuleValue)
HTTPIngressRuleValue 是指向后端的 http 选择算符列表。例如 http://<host>/<path>?<searchpart> -> 后端
,
其中 url
的部分对应于 RFC 3986,此资源将用于匹配最后一个 “/” 之后和第一个 “?” 之前的所有内容或 “#”。
rules.http.paths ([]HTTPIngressPath),必需
Atomic: 将在合并期间被替换
paths 是一个将请求映射到后端的路径集合。
HTTPIngressPath 将路径与后端关联。与路径匹配的传入 URL 将转发到后端。
rules.http.paths.backend (IngressBackend),必需
backend 定义将流量转发到的引用服务端点。
rules.http.paths.pathType (string),必需
pathType 决定如何解释 path 匹配。pathType 可以是以下值之一:
Exact
:与 URL 路径完全匹配。
Prefix
:根据按 “/” 拆分的 URL 路径前缀进行匹配。
匹配是按路径元素逐个元素完成。路径元素引用的是路径中由“/”分隔符拆分的标签列表。
如果每个 p 都是请求路径 p 的元素前缀,则请求与路径 p 匹配。
请注意,如果路径的最后一个元素是请求路径中的最后一个元素的子字符串,则匹配不成功
(例如 /foo/bar
匹配 /foo/bar/baz
,但不匹配 /foo/barbaz
)。
ImplementationSpecific:路径匹配的解释取决于 IngressClass。 实现可以将其视为单独的路径类型,也可以将其视为前缀或确切的路径类型。 实现需要支持所有路径类型。
rules.http.paths.path (string)
path 要与传入请求的路径进行匹配。 目前,它可以包含 RFC 3986 定义的 URL 的常规 “路径” 部分所不允许的字符。 路径必须以 “/” 开头,并且在 pathType 值为 “Exact” 或 “Prefix” 时必须存在。
tls ([]IngressTLS)
Atomic: 将在合并期间被替换
tls 表示 TLS 配置。目前,Ingress 仅支持一个 TLS 端口 443。 如果此列表的多个成员指定了不同的主机,如果实现 Ingress 的 Ingress 控制器支持 SNI, 则它们将根据通过 SNI TLS 扩展指定的主机名在同一端口上多路复用。
IngressTLS 描述与 Ingress 相关的传输层安全性。
tls.hosts ([]string)
Atomic: 将在合并期间被替换
hosts 是 TLS 证书中包含的主机列表。 此列表中的值必须与 tlsSecret 中使用的名称匹配。 默认为实现此 Ingress 的负载均衡控制器的通配符主机设置(如果未指定)。
tls.secretName (string)
secretName 是用于终止端口 443 上 TLS 通信的 Secret 的名称。 字段是可选的,以允许仅基于 SNI 主机名的 TLS 路由。 如果侦听器中的 SNI 主机与入口规则使用的 “Host” 标头字段冲突,则 SNI 主机用于终止,Host 标头的值用于路由。
IngressBackend 描述给定服务和端口的所有端点。
resource (TypedLocalObjectReference)
resource 是对 Ingress 对象所在命名空间中另一个 Kubernetes 资源的引用。
如果指定了 resource,则不得指定 service.name 和 service.port。
此字段是一个与 service
互斥的设置。
service (IngressServiceBackend)
service 引用一个 Service 作为后端。此字段是一个与 resource
互斥的设置。
IngressServiceBackend 引用一个 Kubernetes Service 作为后端。
name 是引用的服务。服务必须与 Ingress 对象位于同一命名空间中。
所引用的服务的端口。IngressServiceBackend 需要端口名或端口号。
ServiceBackendPort 是被引用的服务的端口。
service.port.name (string)
name 是服务上的端口名称。此字段是一个与 number
互斥的设置。
service.port.number (int32)
number 是服务上的数字形式端口号(例如 80)。此字段是一个与 name
互斥的设置。
IngressStatus 描述 Ingress 的当前状态。
loadBalancer (IngressLoadBalancerStatus)
loadBalancer 包含负载均衡器的当前状态。
IngressLoadBalancerStatus 表示负载均衡器的状态。
loadBalancer.ingress ([]IngressLoadBalancerIngress)
原子性:将在合并期间被替换
ingress 是一个包含负载均衡器入口点的列表。
IngressLoadBalancerIngress 表示负载均衡器入口点的状态。
loadBalancer.ingress.hostname (string)
hostname 是为基于 DNS 的负载平衡器入口点所设置的主机名。
loadBalancer.ingress.ip (string)
ip 是为基于 IP 的负载平衡器入口点设置的 IP。
loadBalancer.ingress.ports ([]IngressPortStatus)
Atomic: 将在合并期间被替换
ports 提供有关此 LoadBalancer 公开端口的信息。
loadBalancer.ingress.ports.port (int32),必需
port 是入栈端口的端口号
loadBalancer.ingress.ports.protocol (string),必需
protocol 是入栈端口的协议。支持的值为:“TCP”、“UDP”、“SCTP”。
loadBalancer.ingress.ports.error (string)
error 用来记录服务端口的问题。错误的格式应符合以下规则:
foo.example.com/CamelCase
格式。IngressList 是 Ingress 的集合。
items ([]Ingress),必需
items 是 Ingress 的列表。
apiVersion (string)
apiVersion 定义对象表示的版本化模式。 服务器应将已识别的架构转换为最新的内部值,并且可能会拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
kind 是一个字符串值,表示此对象所表示的 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#metadata
get
读取指定的 IngressGET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
name (路径参数):string,必需
Ingress 的名称。
200 (Ingress): OK
401: Unauthorized
get
读取指定 Ingress 状态GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
200 (Ingress): OK
401: Unauthorized
list
列出或监测 Ingress 类型对象GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
namespace (路径参数):string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (IngressList): OK
401: Unauthorized
list
列出或监测 Ingress 类型对象GET /apis/networking.k8s.io/v1/ingresses
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (IngressList): OK
401: Unauthorized
create
创建一个 IngressPOST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Ingress): OK
201 (Ingress): Created
202 (Ingress): Accepted
401: Unauthorized
update
替换指定的 IngressPUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Ingress): OK
201 (Ingress): Created
401: Unauthorized
update
替换指定 Ingress 的状态PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Ingress): OK
201 (Ingress): Created
401: Unauthorized
patch
部分更新指定的 IngressPATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Ingress): OK
201 (Ingress): Created
401: Unauthorized
patch
部分更新指定 Ingress 的状态PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Ingress): OK
201 (Ingress): Created
401: Unauthorized
delete
删除一个 IngressDELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
name (路径参数):string,必需
Ingress 的名称。
namespace (路径参数):string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 Ingress 的集合DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
namespace (路径参数):string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
IngressClass 代表 Ingress 的类,被 Ingress 的规约引用。
ingressclass.kubernetes.io/is-default-class
注解可以用来标明一个 IngressClass 应该被视为默认的 Ingress 类。
当某个 IngressClass 资源将此注解设置为 true 时,
没有指定类的新 Ingress 资源将被分配到此默认类。
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata (ObjectMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (IngressClassSpec)
spec 是 IngressClass 的期望状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
IngressClassSpec 提供有关 Ingress 类的信息。
controller (string)
controller 是指应该处理此类的控制器名称。 这允许由同一控制器控制不同“口味”。例如,对于同一个实现的控制器你可能有不同的参数。 此字段应该指定为长度不超过 250 个字符的域前缀路径,例如 “acme.io/ingress-controller”。 该字段是不可变的。
parameters (IngressClassParametersReference)
parameters 是指向控制器中包含额外配置的自定义资源的链接。 如果控制器不需要额外的属性,这是可选的。
IngressClassParametersReference 标识一个 API 对象。这可以用来指定一个集群或者命名空间范围的资源
parameters.kind (string),必需
kind 是被引用资源的类型。
parameters.name (string),必需
name 是被引用资源的名称。
parameters.apiGroup (string)
apiGroup 是被引用资源的组。 如果未指定 apiGroup,则被指定的 kind 必须在核心 API 组中。 对于任何其他第三方类型,apiGroup 是必需的。
parameters.namespace (string)
namespace 是被引用资源的命名空间。 当范围被设置为 “namespace” 时,此字段是必需的; 当范围被设置为 “Cluster” 时,此字段必须不设置。
parameters.scope (string)
scope 表示是否引用集群或者命名空间范围的资源。 这可以设置为“集群”(默认)或者“命名空间”。
IngressClassList 是 IngressClasses 的集合。
apiVersion: networking.k8s.io/v1
kind: IngressClassList
metadata (ListMeta)
标准的列表元数据。
items ([]IngressClass),必需
items 是 IngressClasses 的列表。
get
读取指定的 IngressClassGET /apis/networking.k8s.io/v1/ingressclasses/{name}
name (路径参数):string,必需
IngressClass 的名称
pretty (查询参数):string
200 (IngressClass): OK
401: Unauthorized
list
列出或监视 IngressClass 类型的对象GET /apis/networking.k8s.io/v1/ingressclasses
allowWatchBookmarks (查询参数):boolean
continue (查询参数):string
fieldSelector (查询参数):string
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
watch (查询参数):boolean
200 (IngressClassList): OK
401: Unauthorized
create
创建一个 IngressClassPOST /apis/networking.k8s.io/v1/ingressclasses
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (IngressClass): OK
201 (IngressClass): Created
202 (IngressClass): Accepted
401: Unauthorized
update
替换指定的 IngressClassPUT /apis/networking.k8s.io/v1/ingressclasses/{name}
name (路径参数):string,必需
IngressClass 的名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
pretty (查询参数):string
200 (IngressClass): OK
201 (IngressClass): Created
401: Unauthorized
patch
部分更新指定的 IngressClassPATCH /apis/networking.k8s.io/v1/ingressclasses/{name}
name (路径参数):string,必需
IngressClass 的名称
dryRun (查询参数):string
fieldManager (查询参数):string
fieldValidation (查询参数):string
force (查询参数):boolean
pretty (查询参数):string
200 (IngressClass): OK
201 (IngressClass): Created
401: Unauthorized
delete
删除一个 IngressClassDELETE /apis/networking.k8s.io/v1/ingressclasses/{name}
name (路径参数):string,必需
IngressClass 的名称
body: DeleteOptions
dryRun (查询参数):string
gracePeriodSeconds (查询字符串):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 IngressClass 的集合DELETE /apis/networking.k8s.io/v1/ingressclasses
continue (查询参数):string
dryRun (查询参数):string
fieldSelector (查询参数):string
gracePeriodSeconds (查询字符串):integer
labelSelector (查询参数):string
limit (查询参数):integer
pretty (查询参数):string
propagationPolicy (查询参数):string
resourceVersion (查询参数):string
resourceVersionMatch (查询参数):string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数):integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
ConfigMap 包含供 Pod 使用的配置数据。
apiVersion: v1
kind: ConfigMap
metadata (ObjectMeta)
标准的对象元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
binaryData (map[string][]byte)
binaryData 包含二进制数据。 每个键必须由字母、数字、“-”、“_” 或 “.” 组成。 binaryData 可以包含不在 UTF-8 范围中的字节序列。 binaryData 中存储的键不得与 data 字段中的键重叠,这在验证过程中是强制要求。 使用此字段需要 apiserver 和 kubelet 的版本高于 1.10。
data (map[string]string)
data 包含配置数据。 每个键必须由字母、数字、“-”、“_” 或 “.” 组成。 如果值包含非 UTF-8 字节序列,则必须使用 binaryData 字段。 data 中存储的键不得与 binaryData 字段中的键重叠,这在验证过程中是强制要求。
immutable (boolean)
如果 immutable 设为 true, 则确保不会更新 ConfigMap 中存储的数据(只能修改对象元数据)。 如果未设为 true,则可以随时修改此字段。 默认为 nil。
ConfigMapList 是包含 ConfigMap 对象列表的资源。
apiVersion: v1
kind: ConfigMapList
metadata (ListMeta)
更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]ConfigMap),必需
items 是 ConfigMap 的列表。
get
读取指定的 ConfigMapGET /api/v1/namespaces/{namespace}/configmaps/{name}
200 (ConfigMap): OK
401: Unauthorized
list
列出或观测类别为 ConfigMap 的对象GET /api/v1/namespaces/{namespace}/configmaps
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ConfigMapList): OK
401: Unauthorized
list
列出或观测类别为 ConfigMap 的对象GET /api/v1/configmaps
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (ConfigMapList): OK
401: Unauthorized
create
创建 ConfigMapPOST /api/v1/namespaces/{namespace}/configmaps
namespace (路径参数): string,必需
body: ConfigMap,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ConfigMap): OK
201 (ConfigMap): Created
202 (ConfigMap): Accepted
401: Unauthorized
update
替换指定的 ConfigMapPUT /api/v1/namespaces/{namespace}/configmaps/{name}
name (路径参数): string,必需
ConfigMap 的名称
namespace (路径参数): string,必需
body: ConfigMap,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (ConfigMap): OK
201 (ConfigMap): Created
401: Unauthorized
patch
部分更新指定的 ConfigMapPATCH /api/v1/namespaces/{namespace}/configmaps/{name}
name (路径参数): string,必需
ConfigMap 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (ConfigMap): OK
201 (ConfigMap): Created
401: Unauthorized
delete
删除 ConfigMapDELETE /api/v1/namespaces/{namespace}/configmaps/{name}
name (路径参数): string,必需
ConfigMap 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 ConfigMap 的集合DELETE /api/v1/namespaces/{namespace}/configmaps
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
Secret 包含某些类别的秘密数据。 data 字段值的总字节必须小于 MaxSecretSize 字节。
apiVersion: v1
kind: Secret
metadata (ObjectMeta)
标准的对象元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
data (map[string][]byte)
data 包含秘密数据。 每个键必须由字母、数字、“-”、“_” 或 “.” 组成。 秘密数据的序列化格式是 base64 编码的字符串,表示此处的任意(可能是非字符串)数据值。 请参阅 https://tools.ietf.org/html/rfc4648#section-4
immutable (boolean)
如果 immutable 设为 true,则确保不会更新 Secret 中存储的数据(只能修改对象元数据)。 如果未设为 true,则可以随时修改此字段。 默认为 nil。
stringData (map[string]string)
stringData 允许指定字符串格式的非二进制秘密数据。 为了方便起见,它作为只写输入字段提供。 写入时将所有键和值合并到 data 字段,且覆盖任何现有的值。 从 API 读取时绝不会输出 stringData 字段。
type (string)
用于满足程序化方式处理秘密数据。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#secret-types
SecretList 是 Secret 的列表。
apiVersion: v1
kind: SecretList
metadata (ListMeta)
标准的列表元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]Secret),必需
items 是 Secret 对象的列表。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/secret
get
读取指定的 SecretGET /api/v1/namespaces/{namespace}/secrets/{name}
200 (Secret): OK
401: Unauthorized
list
列出或观测类别为 Secret 的对象GET /api/v1/namespaces/{namespace}/secrets
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (SecretList): OK
401: Unauthorized
list
列出或观测类别为 Secret 的对象GET /api/v1/secrets
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (SecretList): OK
401: Unauthorized
create
创建 SecretPOST /api/v1/namespaces/{namespace}/secrets
namespace (路径参数): string,必需
body: Secret,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Secret): OK
201 (Secret): Created
202 (Secret): Accepted
401: Unauthorized
update
替换指定的 SecretPUT /api/v1/namespaces/{namespace}/secrets/{name}
name (路径参数): string,必需
Secret 的名称
namespace (路径参数): string,必需
body: Secret,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (Secret): OK
201 (Secret): Created
401: Unauthorized
patch
部分更新指定的 SecretPATCH /api/v1/namespaces/{namespace}/secrets/{name}
name (路径参数): string,必需
Secret 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (Secret): OK
201 (Secret): Created
401: Unauthorized
delete
删除 SecretDELETE /api/v1/namespaces/{namespace}/secrets/{name}
name (路径参数): string,必需
Secret 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 Secret 的集合DELETE /api/v1/namespaces/{namespace}/secrets
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver 抓取集群上部署的容器存储接口(CSI)卷驱动有关的信息。 Kubernetes 挂接/解除挂接控制器使用此对象来决定是否需要挂接。 Kubelet 使用此对象决定挂载时是否需要传递 Pod 信息。 CSIDriver 对象未划分命名空间。
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata (ObjectMeta)
标准的对象元数据。
metadata.name
表示此对象引用的 CSI 驱动的名称;
它必须与该驱动的 CSI GetPluginName() 调用返回的名称相同。
驱动名称不得超过 63 个字符,以字母、数字([a-z0-9A-Z])开头和结尾,
中间可包含短划线(-)、英文句点(.)、字母和数字。
更多信息:
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (CSIDriverSpec),必需
spec 表示 CSI 驱动的规约。
CSIDriverSpec 是 CSIDriver 的规约。
attachRequired (boolean)
attachRequired 表示这个 CSI 卷驱动需要挂接操作 (因为它实现了 CSI ControllerPublishVolume() 方法), Kubernetes 挂接/解除挂接控制器应调用挂接卷接口, 以检查卷挂接(volumeattachment)状态并在继续挂载之前等待卷被挂接。 CSI 外部挂接器与 CSI 卷驱动配合使用,并在挂接操作完成时更新 volumeattachment 状态。 如果 CSIDriverRegistry 特性门控被启用且此值指定为 false,将跳过挂接操作。 否则将调用挂接操作。
此字段不可变更。
fsGroupPolicy (string)
fsGroupPolicy 定义底层卷是否支持在挂载之前更改卷的所有权和权限。 有关更多详细信息,请参考特定的 FSGroupPolicy 值。
此字段在 Kubernetes 1.29 版本之前不可变更,现在可变更。
默认为 ReadWriteOnceWithFSType,这会检查每个卷,以决定 Kubernetes 是否应修改卷的所有权和权限。 采用默认策略时,如果定义了 fstype 且卷的访问模式包含 ReadWriteOnce,将仅应用定义的 fsGroup。
podInfoOnMount (boolean)
如果 podInfoOnMount 设为 true,则表示在挂载操作期间这个 CSI 卷驱动需要更多的 Pod 信息(例如 podName 和 podUID 等)。 如果设为 false,则挂载时将不传递 Pod 信息。默认为 false。
CSI 驱动将 podInfoOnMount 指定为驱动部署的一部分。 如果为 true,Kubelet 将在 CSI NodePublishVolume() 调用中作为 VolumeContext 传递 Pod 信息。 CSI 驱动负责解析和校验作为 VolumeContext 传递进来的信息。
如果 podInfoOnMount 设为 true,将传递以下 VolumeConext。 此列表可能变大,但将使用前缀。
“csi.storage.k8s.io/ephemeral” 是 Kubernetes 1.16 中一个新的功能特性。 只有同时支持 “Persistent” 和 “Ephemeral” VolumeLifecycleMode 的驱动,此字段才是必需的。 其他驱动可以保持禁用 Pod 信息或忽略此字段。 由于 Kubernetes 1.15 不支持此字段,所以在这类集群上部署驱动时,只能支持一种模式。 该部署就决定了是哪种模式,例如通过驱动的命令行参数。
此字段在 Kubernetes 1.29 版本之前不可变更,现在可变更。
requiresRepublish (boolean)
requiresRepublish 表示 CSI 驱动想要 NodePublishVolume
被周期性地调用,
以反映已挂载卷中的任何可能的变化。
此字段默认为 false。
注:成功完成对 NodePublishVolume 的初始调用后,对 NodePublishVolume 的后续调用只应更新卷的内容。 新的挂载点将不会被运行的容器察觉。
seLinuxMount (boolean)
seLinuxMount 指定 CSI 驱动是否支持 "-o context" 挂载选项。
当值为 “true” 时,CSI 驱动必须确保该 CSI 驱动提供的所有卷可以分别用不同的 -o context
选项进行挂载。
这对于将卷作为块设备上的文件系统或作为独立共享卷提供的存储后端来说是典型的方法。
当 Kubernetes 挂载在 Pod 中使用的已显式设置 SELinux 上下文的 ReadWriteOncePod 卷时,
将使用 "-o context=xyz" 挂载选项调用 NodeStage / NodePublish。
未来可能会扩展到其他的卷访问模式(AccessModes)。在任何情况下,Kubernetes 都会确保该卷仅使用同一 SELinux 上下文进行挂载。
当值为 “false” 时,Kubernetes 不会将任何特殊的 SELinux 挂载选项传递给驱动。 这通常用于代表更大共享文件系统的子目录的卷。
默认为 “false”。
storageCapacity (boolean)
如果设为 true,则 storageCapacity 表示 CSI 卷驱动希望 Pod 调度时考虑存储容量, 驱动部署将通过创建包含容量信息的 CSIStorageCapacity 对象来报告该存储容量。
部署驱动时可以立即启用这个检查。 这种情况下,只有此驱动部署已发布某些合适的 CSIStorageCapacity 对象, 才会继续制备新的卷,然后进行绑定。
换言之,可以在未设置此字段或此字段为 false 的情况下部署驱动, 并且可以在发布存储容量信息后再修改此字段。
此字段在 Kubernetes 1.22 及更早版本中不可变更,但现在可以变更。
tokenRequests ([]TokenRequest)
原子性:将在合并期间被替换
tokenRequests 表示 CSI 驱动需要供挂载卷所用的 Pod 的服务帐户令牌,进行必要的鉴权。 Kubelet 将在 CSI NodePublishVolume 调用中传递 VolumeContext 中的令牌。 CSI 驱动应解析和校验以下 VolumeContext:
"csi.storage.k8s.io/serviceAccount.tokens": {
"<audience>": {
"token": <token>,
"expirationTimestamp": <expiration timestamp in RFC3339>,
},
...
}
注:每个 tokenRequest 中的受众应该不同,且最多有一个令牌是空字符串。 要在令牌过期后接收一个新的令牌,requiresRepublish 可用于周期性地触发 NodePublishVolume。
audience 是 “TokenRequestSpec” 中令牌的目标受众。 它默认为 kube apiserver 的受众。
tokenRequests.expirationSeconds (int64)
expirationSeconds 是 “TokenRequestSpec” 中令牌的有效期。 它具有与 “TokenRequestSpec” 中 “expirationSeconds” 相同的默认值。
volumeLifecycleModes ([]string)
集合:唯一值将在合并期间被保留
volumeLifecycleModes 定义这个 CSI 卷驱动支持哪种类别的卷。 如果列表为空,则默认值为 “Persistent”,这是 CSI 规范定义的用法, 并通过常用的 PV/PVC 机制在 Kubernetes 中实现。
另一种模式是 “Ephemeral”。 在这种模式下,在 Pod 规约中用 CSIVolumeSource 以内联方式定义卷,其生命周期与该 Pod 的生命周期相关联。 驱动必须感知到这一点,因为只有针对这种卷才会接收到 NodePublishVolume 调用。
有关实现此模式的更多信息,请参阅 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html。 驱动可以支持其中一种或多种模式,将来可能会添加更多模式。
此字段处于 Beta 阶段。此字段不可变更。
CSIDriverList 是 CSIDriver 对象的集合。
apiVersion: storage.k8s.io/v1
kind: CSIDriverList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CSIDriver),必需
items 是 CSIDriver 的列表。
get
读取指定的 CSIDriverGET /apis/storage.k8s.io/v1/csidrivers/{name}
name (路径参数): string,必需
CSIDriver 的名称。
pretty (查询参数): string
200 (CSIDriver): OK
401: Unauthorized
list
列出或观测类别为 CSIDriver 的对象GET /apis/storage.k8s.io/v1/csidrivers
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (CSIDriverList): OK
401: Unauthorized
create
创建 CSIDriverPOST /apis/storage.k8s.io/v1/csidrivers
body: CSIDriver,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSIDriver): OK
201 (CSIDriver): Created
202 (CSIDriver): Accepted
401: Unauthorized
update
替换指定的 CSIDriverPUT /apis/storage.k8s.io/v1/csidrivers/{name}
name (路径参数): string,必需
CSIDriver 的名称。
body: CSIDriver,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSIDriver): OK
201 (CSIDriver): Created
401: Unauthorized
patch
部分更新指定的 CSIDriverPATCH /apis/storage.k8s.io/v1/csidrivers/{name}
name (路径参数): string,必需
CSIDriver 的名称。
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (CSIDriver): OK
201 (CSIDriver): Created
401: Unauthorized
delete
删除 CSIDriverDELETE /apis/storage.k8s.io/v1/csidrivers/{name}
name (路径参数): string,必需
CSIDriver 的名称。
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (CSIDriver): OK
202 (CSIDriver): Accepted
401: Unauthorized
deletecollection
删除 CSIDriver 的集合DELETE /apis/storage.k8s.io/v1/csidrivers
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSINode 包含节点上安装的所有 CSI 驱动有关的信息。CSI 驱动不需要直接创建 CSINode 对象。 只要这些驱动使用 node-driver-registrar 边车容器,kubelet 就会自动为 CSI 驱动填充 CSINode 对象, 作为 kubelet 插件注册操作的一部分。CSINode 的名称与节点名称相同。 如果不存在此对象,则说明该节点上没有可用的 CSI 驱动或 Kubelet 版本太低无法创建该对象。 CSINode 包含指向相应节点对象的 OwnerReference。
apiVersion: storage.k8s.io/v1
kind: CSINode
metadata (ObjectMeta)
标准的对象元数据。metadata.name 必须是 Kubernetes 节点的名称。
spec (CSINodeSpec),必需
spec 是 CSINode 的规约。
CSINodeSpec 包含一个节点上安装的所有 CSI 驱动规约有关的信息。
drivers ([]CSINodeDriver),必需
补丁策略:按照键 name
合并
映射:键 name
的唯一值将在合并过程中保留
drivers 是节点上存在的所有 CSI 驱动的信息列表。如果列表中的所有驱动均被卸载,则此字段可以为空。
CSINodeDriver 包含一个节点上安装的一个 CSI 驱动规约有关的信息。
drivers.name (string),必需
name 表示该对象引用的 CSI 驱动的名称。此字段值必须是针对该驱动由 CSI GetPluginName() 调用返回的相同名称。
drivers.nodeID (string),必需
从驱动角度来看,这是节点的 nodeID。 对于未与节点共享相同命名法的存储系统,此字段使得 Kubernetes 能够与之进行通信。 例如,Kubernetes 可能将给定节点视为 "node1",但存储系统可以将同一节点视为 "nodeA"。 当 Kubernetes 向存储系统发出一条命令将一个卷挂接到特定的节点时, 它可以藉此字段使用存储系统所理解的 ID 引用节点名称,例如使用 “nodeA” 而不是 “node1”。 此字段是必需的。
drivers.allocatable (VolumeNodeResources)
allocatable 表示一个节点上可供调度的卷资源。此字段处于 beta 阶段。
VolumeNodeResources 是调度卷时所用的一组资源限制。
drivers.allocatable.count (int32)
这是一个节点上可使用的、由 CSI 驱动管理的独立卷个数的上限。 挂接并挂载到一个节点上的卷被视为被使用一次,不是两次。 相同的规则适用于同一个节点上多个 Pod 之间共享的同一个卷。 如果未指定此字段,则该节点上支持的卷数量是无限的。
drivers.topologyKeys ([]string)
原子性:合并期间将被替换
topologyKeys 是驱动支持的键的列表。 在集群上初始化一个驱动时,该驱动将提供一组自己理解的拓扑键 (例如 “company.com/zone”、“company.com/region”)。 在一个节点上初始化一个驱动时,该驱动将提供相同的拓扑键和值。 Kubelet 将在其自己的节点对象上将这些拓扑键暴露为标签。 当 Kubernetes 进行拓扑感知的制备时,可以使用此列表决定应从节点对象中检索哪些标签并传回驱动。 不同的节点可以使用不同的拓扑键。 如果驱动不支持拓扑,则此字段可以为空。
CSINodeList 是 CSINode 对象的集合。
apiVersion: storage.k8s.io/v1
kind: CSINodeList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CSINode),必需
items 是 CSINode 的列表。
get
读取指定的 CSINodeGET /apis/storage.k8s.io/v1/csinodes/{name}
name (路径参数): string,必需
CSINode 的名称
pretty (查询参数): string
200 (CSINode): OK
401: Unauthorized
list
列出或观测类别为 CSINode 的对象GET /apis/storage.k8s.io/v1/csinodes
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (CSINodeList): OK
401: Unauthorized
create
创建 CSINodePOST /apis/storage.k8s.io/v1/csinodes
body: CSINode,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSINode): OK
201 (CSINode): Created
202 (CSINode): Accepted
401: Unauthorized
update
替换指定的 CSINodePUT /apis/storage.k8s.io/v1/csinodes/{name}
name (路径参数): string,必需
CSINode 的名称
body: CSINode,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSINode): OK
201 (CSINode): Created
401: Unauthorized
patch
部分更新指定的 CSINodePATCH /apis/storage.k8s.io/v1/csinodes/{name}
name (路径参数): string,必需
CSINode 的名称
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (CSINode): OK
201 (CSINode): Created
401: Unauthorized
delete
删除 CSINodeDELETE /apis/storage.k8s.io/v1/csinodes/{name}
name (路径参数): string,必需
CSINode 的名称
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (CSINode): OK
202 (CSINode): Accepted
401: Unauthorized
deletecollection
删除 CSINode 的集合DELETE /apis/storage.k8s.io/v1/csinodes
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIStorageCapacity 存储一个 CSI GetCapacity 调用的结果。 对于给定的 StorageClass,此结构描述了特定拓扑段中可用的容量。 当考虑在哪里实例化新的 PersistentVolume 时可以使用此项。
例如,此结构可以描述如下内容:
以下三种情况均暗示了某些组合没有可用的容量:
这些对象的制作方可以决定哪种方法更合适。
当 CSI 驱动选择使用 CSIDriverSpec.StorageCapacity 进行容量感知调度时,kube-scheduler 会使用这些对象。 该调度器将 MaximumVolumeSize 与 pending 卷的请求大小进行比较,以过滤掉不合适的节点。 如果未设置 MaximumVolumeSize,则回退为与不太精确的容量(Capacity)进行比较。 如果还是未设置,则该调度器假定容量不足并尝试某些其他节点。
apiVersion: storage.k8s.io/v1
kind: CSIStorageCapacity
metadata (ObjectMeta)
标准的对象元数据。 此名称没有特定的含义。 它必须是 DNS 子域名(允许英文句点,最多 253 个字符)。 为了确保与集群上的其他 CSI 驱动没有冲突,建议使用一个生成的名称 csisc-<uuid>, 或使用以唯一 CSI 驱动名称结尾的反向域名。
这些对象是有命名空间的。
更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
storageClassName (string),必需
storageClassName 是已报告容量所对应的 StorageClass 的名称。 它必须满足与 StorageClass 对象名称相同的要求(非空,DNS 子域名)。 如果该对象不再存在,则 CSIStorageCapacity 对象将被废弃且应由创建者移除。 此字段不可变更。
capacity (Quantity)
capacity 是 CSI 驱动在其 GetCapacityResponse 中为 GetCapacityRequest 报告的值,其拓扑和参数与之前的字段匹配。
该语义目前(CSI 规范 1.2)定义为:可用于制备卷的可用存储容量(单位为字节)。 如果未设置,则该信息目前不可用。
maximumVolumeSize (Quantity)
maximumVolumeSize 是 CSI 驱动在其 GetCapacityResponse 中为 GetCapacityRequest 报告的值,其拓扑和参数与之前的字段匹配。
自从 CSI 规范 1.4.0 起,这定义为 CreateVolumeRequest.capacity_range.required_bytes
字段中可以使用的最大值,
以便用 GetCapacityRequest 中相同的参数创建一个卷。
Kubernetes API 中的相应值是卷声明中的 ResourceRequirements.Requests。
nodeTopology (LabelSelector)
nodeTopology 定义了哪些节点有权访问已报告容量的存储。 如果未设置,则不能从集群中的任意节点访问此存储。 如果留空,则可以从所有节点访问此存储。此字段不可变更。
CSIStorageCapacityList 是 CSIStorageCapacity 对象的集合。
apiVersion: storage.k8s.io/v1
kind: CSIStorageCapacityList
metadata (ListMeta)
标准的列表元数据。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CSIStorageCapacity),必需
items 是 CSIStorageCapacity 对象的列表。
get
读取指定的 CSIStorageCapacityGET /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}
name (路径参数): string,必需
CSIStorageCapacity 的名称
namespace (路径参数): string,必需
pretty (查询参数): string
200 (CSIStorageCapacity): OK
401: Unauthorized
list
列出或观测类别为 CSIStorageCapacity 的对象GET /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (CSIStorageCapacityList): OK
401: Unauthorized
list
列出或观测类别为 CSIStorageCapacity 的对象GET /apis/storage.k8s.io/v1/csistoragecapacities
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (CSIStorageCapacityList): OK
401: Unauthorized
create
创建 CSIStorageCapacityPOST /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities
namespace (路径参数): string,必需
body: CSIStorageCapacity,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSIStorageCapacity): OK
201 (CSIStorageCapacity): Created
202 (CSIStorageCapacity): Accepted
401: Unauthorized
update
替换指定的 CSIStorageCapacityPUT /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}
name (路径参数): string,必需
CSIStorageCapacity 的名称
namespace (路径参数): string,必需
body: CSIStorageCapacity,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (CSIStorageCapacity): OK
201 (CSIStorageCapacity): Created
401: Unauthorized
patch
部分更新指定的 CSIStorageCapacityPATCH /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}
name (路径参数): string,必需
CSIStorageCapacity 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (CSIStorageCapacity): OK
201 (CSIStorageCapacity): Created
401: Unauthorized
delete
删除 CSIStorageCapacityDELETE /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}
name (路径参数): string,必需
CSIStorageCapacity 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
删除 CSIStorageCapacity 的集合DELETE /apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
PersistentVolumeClaim 是用户针对一个持久卷的请求和申领。
apiVersion: v1
kind: PersistentVolumeClaim
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PersistentVolumeClaimSpec)
spec 定义 Pod 作者所请求的卷的预期特征。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
status (PersistentVolumeClaimStatus)
status 表示一个持久卷申领的当前信息/状态。只读。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
PersistentVolumeClaimSpec 描述存储设备的常用参数,并支持通过 source 来设置特定于提供商的属性。
accessModes ([]string)
原子性:将在合并期间被替换
accessModes 包含卷应具备的预期访问模式。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#access-modes-1
selector (LabelSelector)
selector 是在绑定时对卷进行选择所执行的标签查询。
resources 表示卷应拥有的最小资源。 如果启用了 RecoverVolumeExpansionFailure 功能特性,则允许用户指定这些资源要求, 此值必须低于之前的值,但必须高于申领的状态字段中记录的容量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#resources
VolumeResourceRequirements 描述了卷的存储资源要求。
resources.limits (map[string]Quantity)
limits 描述允许的最大计算资源量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[string]Quantity)
requests 描述所需的最小计算资源量。 如果针对容器省略 requests,则在显式指定的情况下默认为 limits,否则为具体实现所定义的值。请求不能超过限制。更多信息: https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
volumeName (string)
volumeName 是对此申领所对应的 PersistentVolume 的绑定引用。
storageClassName (string)
storageClassName 是此申领所要求的 StorageClass 名称。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#class-1
volumeMode (string)
volumeMode 定义申领需要哪种类别的卷。当申领规约中未包含此字段时,意味着取值为 Filesystem。
dataSource (TypedLocalObjectReference)
dataSource 字段可用于二选一:
现有的 VolumeSnapshot 对象(snapshot.storage.k8s.io/VolumeSnapshot)
现有的 PVC (PersistentVolumeClaim)
如果制备器或外部控制器可以支持指定的数据源,则它将根据指定数据源的内容创建新的卷。 当 AnyVolumeDataSource 特性门控被启用时,dataSource 内容将被复制到 dataSourceRef, 当 dataSourceRef.namespace 未被指定时,dataSourceRef 内容将被复制到 dataSource。 如果名字空间被指定,则 dataSourceRef 不会被复制到 dataSource。
dataSourceRef (TypedObjectReference)
dataSourceRef 指定一个对象,当需要非空卷时,可以使用它来为卷填充数据。 此字段值可以是来自非空 API 组(非核心对象)的任意对象,或一个 PersistentVolumeClaim 对象。 如果设置了此字段,则仅当所指定对象的类型与所安装的某些卷填充器或动态制备器匹配时,卷绑定才会成功。 此字段将替换 dataSource 字段的功能,因此如果两个字段非空,其取值必须相同。 为了向后兼容,当未在 dataSourceRef 中指定名字空间时, 如果(dataSource 和 dataSourceRef)其中一个字段为空且另一个字段非空,则两个字段将被自动设为相同的值。 在 dataSourceRef 中指定名字空间时,dataSource 未被设置为相同的值且必须为空。 dataSource 和 dataSourceRef 之间有三个重要的区别:
(Beta) 使用此字段需要启用 AnyVolumeDataSource 特性门控。 (Alpha) 使用 dataSourceRef 的名字空间字段需要启用 CrossNamespaceVolumeDataSource 特性门控。
kind 是正被引用的资源的类型。
dataSourceRef.name (string),必需
name 是正被引用的资源的名称。
apiGroup 是正被引用的资源的组。如果 apiGroup 未被指定,则指定的 kind 必须在核心 API 组中。 对于任何第三方类型,apiGroup 是必需的。
dataSourceRef.namespace (string)
namespace 是正被引用的资源的名字空间。请注意,当指定一个名字空间时, 在引用的名字空间中 gateway.networking.k8s.io/ReferenceGrant 对象是必需的, 以允许该名字空间的所有者接受引用。有关详细信息,请参阅 ReferenceGrant 文档。 (Alpha) 此字段需要启用 CrossNamespaceVolumeDataSource 特性门控。
volumeAttributesClassName (string)
volumeAttributesClassName
可用于设置此申领所使用的 VolumeAttributesClass。
如果设置了此字段,CSI 驱动程序将使用相应 VolumeAttributesClass 中定义的属性创建或更新卷。
与 storageClassName
的用途不同,此属性可以在创建申领之后更改。空字符串值表示不会将 VolumeAttributesClass
应用于申领,但一旦设置,就不允许将此字段重置为空字符串。如果未指定且 PersistentVolumeClaim 未绑定,
则持久卷控制器将设置默认的 VolumeAttributesClass(如果存在)。
如果 VolumeAttributesClass 所引用的资源不存在,则此 PersistentVolumeClaim 将被设置为 Pending 状态,
如 modifyVolumeStatus
字段所示,直到存在此类资源。更多信息:
https://kubernetes.io/zh-cn/docs/concepts/storage/volume-attributes-classes/
(Beta)使用此字段需要启用 VolumeAttributesClass 特性门控(默认情况下关闭)。
PersistentVolumeClaimStatus 是持久卷申领的当前状态。
accessModes ([]string)
原子性:将在合并期间被替换
accessModes 包含支持 PVC 的卷所具有的实际访问模式。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#access-modes-1
allocatedResourceStatuses (map[string]string)
allocatedResourceStatuses 存储为给定 PVC 而调整大小的资源的状态。键名遵循标准的 Kubernetes 标签语法。 有效值为:
kubernetes.io
前缀的键被视为保留键,因此不能使用。ClaimResourceStatus 可以处于以下任一状态:
例如:如果扩展 PVC 以获取更多的容量,则此字段可以是以下状态之一:
如果控制器收到具有先前未知的 resourceName 或 ClaimResourceStatus 的 PVC 更新, 则该控制器应忽略此项更新才能按预期工作。例如,仅负责调整卷容量大小的控制器应忽略更改与 PVC 关联的其他合法资源的 PVC 更新。
这是一个 Alpha 字段,需要启用 RecoverVolumeExpansionFailure 功能特性。
allocatedResources (map[string]Quantity)
allocatedResources 跟踪分配给 PVC 的资源,包括其容量。键名遵循标准的 Kubernetes 标签语法。 有效值为:
kubernetes.io
前缀的键被视为保留键,因此不能使用。当出现卷扩充操作请求时,此字段可能大于实际的容量。 就存储配额而言,将使用 allocatedResources 和 PVC.spec.resources 二者中的更大值。 如果未设置 allocatedResources,则 PVC.spec.resources 单独用于配额计算。 如果减小一个卷扩充容量请求,则仅当没有正在进行的扩充操作且实际卷容量等于或小于请求的容量时, 才会减小 allocatedResources。
如果控制器收到具有先前未知的 resourceName 的 PVC 更新,则该控制器应忽略此项更新才能按预期工作。 例如,仅负责调整卷容量大小的控制器应忽略更改与 PVC 关联的其他合法资源的 PVC 更新。
这是一个 Alpha 字段,需要启用 RecoverVolumeExpansionFailure 功能特性。
capacity (map[string]Quantity)
capacity 表示底层卷的实际资源。
conditions ([]PersistentVolumeClaimCondition)
补丁策略:按照键 type
合并
映射:基于 name
键的唯一值将在合并期间被保留
conditions 是持久卷声明的当前的状况。 如果正在调整底层持久卷的大小,则状况将被设为 “Resizing”。
conditions.status (string),必需
conditions.type (string),必需
conditions.lastProbeTime (Time)
lastProbeTime 是我们探测 PVC 状况的时间。
Time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。
conditions.lastTransitionTime (Time)
lastTransitionTime 是状况从一个状态转换为另一个状态的时间。
Time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。
conditions.message (string)
message 是人类可读的消息,指示有关上一次转换的详细信息。
conditions.reason (string)
reason 是唯一的,它应该是一个机器可理解的简短字符串,指明上次状况转换的原因。 如果它报告 “Resizing”,则意味着正在调整底层持久卷的大小。
currentVolumeAttributesClassName (string)
currentVolumeAttributesClassName
是 PVC 所使用的 VolumeAttributesClass 的当前名称。
这是一个 Beta 级别字段,需要启用 VolumeAttributesClass 特性(默认情况下处于关闭状态)。
modifyVolumeStatus (ModifyVolumeStatus)
modifyVolumeStatus
表示 ControllerModifyVolume 操作的状态对象。
如果未设置,则表示没有尝试执行任何修改卷操作。这是一个测试字段,需要启用
VolumeAttributesClass 特性(默认关闭)。
ModifyVolumeStatus 表示 ControllerModifyVolume 操作的状态对象
modifyVolumeStatus.status (string),必需
status 是 ControllerModifyVolume 操作的状态。它可以是以下任一状态:
modifyVolumeStatus.targetVolumeAttributesClassName (string)
targetVolumeAttributesClassName
是当前正在协调的 PVC 的 VolumeAttributesClass 的名称
phase (string)
phase 表示 PersistentVolumeClaim 的当前阶段。
PersistentVolumeClaimList 是 PersistentVolumeClaim 各项的列表。
apiVersion: v1
kind: PersistentVolumeClaimList
metadata (ListMeta)
标准的列表元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]PersistentVolumeClaim),必需
items 是持久卷申领的列表。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
get
读取指定的 PersistentVolumeClaimGET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
401: Unauthorized
get
读取指定的 PersistentVolumeClaim 的状态GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
401: Unauthorized
list
列出或观测类别为 PersistentVolumeClaim 的对象GET /api/v1/namespaces/{namespace}/persistentvolumeclaims
namespace (路径参数): string,必需
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (PersistentVolumeClaimList): OK
401: Unauthorized
list
列出或观测类别为 PersistentVolumeClaim 的对象GET /api/v1/persistentvolumeclaims
allowWatchBookmarks (查询参数): boolean
continue (查询参数): string
fieldSelector (查询参数): string
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
watch (查询参数): boolean
200 (PersistentVolumeClaimList): OK
401: Unauthorized
create
创建 PersistentVolumeClaimPOST /api/v1/namespaces/{namespace}/persistentvolumeclaims
namespace (路径参数): string,必需
body: PersistentVolumeClaim,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
202 (PersistentVolumeClaim): Accepted
401: Unauthorized
update
替换指定的 PersistentVolumeClaimPUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
body: PersistentVolumeClaim,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
update
替换指定的 PersistentVolumeClaim 的状态PUT /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
body: PersistentVolumeClaim,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
patch
部分更新指定的 PersistentVolumeClaimPATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
patch
部分更新指定的 PersistentVolumeClaim 的状态PATCH /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
body: Patch,必需
dryRun (查询参数): string
fieldManager (查询参数): string
fieldValidation (查询参数): string
force (查询参数): boolean
pretty (查询参数): string
200 (PersistentVolumeClaim): OK
201 (PersistentVolumeClaim): Created
401: Unauthorized
delete
删除 PersistentVolumeClaimDELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}
name (路径参数): string,必需
PersistentVolumeClaim 的名称
namespace (路径参数): string,必需
body: DeleteOptions
dryRun (查询参数): string
gracePeriodSeconds (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
200 (PersistentVolumeClaim): OK
202 (PersistentVolumeClaim): Accepted
401: Unauthorized
deletecollection
删除 PersistentVolumeClaim 的集合DELETE /api/v1/namespaces/{namespace}/persistentvolumeclaims
namespace (路径参数): string,必需
body: DeleteOptions
continue (查询参数): string
dryRun (查询参数): string
fieldSelector (查询参数): string
gracePeriodSeconds (查询参数): integer
labelSelector (查询参数): string
limit (查询参数): integer
pretty (查询参数): string
propagationPolicy (查询参数): string
resourceVersion (查询参数): string
resourceVersionMatch (查询参数): string
sendInitialEvents (查询参数): boolean
timeoutSeconds (查询参数): integer
200 (Status): OK
401: Unauthorized
apiVersion: v1
import "k8s.io/api/core/v1"
PersistentVolume (PV) 是管理员制备的一个存储资源。它类似于一个节点。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes
apiVersion: v1
kind: PersistentVolume
metadata (ObjectMeta)
标准的对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PersistentVolumeSpec)
spec 定义了集群所拥有的持久卷的规约。由管理员进行制备。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#persistent-volumes
status (PersistentVolumeStatus)
status 表示持久卷的当前信息/状态。该值由系统填充,只读。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#persistent-volumes
PersistentVolumeSpec 是持久卷的规约。
accessModes ([]string)
原子:将在合并期间被替换
accessModes 包含可以挂载卷的所有方式。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#access-modes
capacity (map[string]Quantity)
capacity 描述持久卷的资源和容量。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#capacity
claimRef (ObjectReference)
claimRef 是 PersistentVolume 和 PersistentVolumeClaim 之间双向绑定的一部分。 预期在绑定时为非空。claim.VolumeName 是在 PV 和 PVC 间绑定关系的正式确认。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#binding
mountOptions ([]string)
原子:将在合并期间被替换
mountOptions 是挂载选项的列表,例如 ["ro", "soft"]。 针对此字段无合法性检查——如果某选项无效,则只是挂载会失败。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/#mount-options
nodeAffinity (VolumeNodeAffinity)
nodeAffinity 定义可以从哪些节点访问此卷的约束限制。此字段会影响调度使用此卷的 Pod。
VolumeNodeAffinity 定义可以从哪些节点访问此卷的约束限制。
nodeAffinity.required (NodeSelector)
required 指定必须满足的硬性节点约束。
节点选择器表示在一组节点上一个或多个标签查询结果的并集; 也就是说,它表示由节点选择器条件表示的选择器的逻辑或计算结果。
nodeAffinity.required.nodeSelectorTerms ([]NodeSelectorTerm),必需
原子:将在合并期间被替换
必需。节点选择器条件的列表。这些条件是逻辑或的计算结果。
一个 null 或空的节点选择器条件不会与任何对象匹配。这些条件会按逻辑与的关系来计算。 TopologySelectorTerm 类别实现了 NodeSelectorTerm 的子集。
nodeAffinity.required.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
原子:将在合并期间被替换
基于节点标签所设置的节点选择器要求的列表。
nodeAffinity.required.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
原子:将在合并期间被替换
基于节点字段所设置的节点选择器要求的列表。
persistentVolumeReclaimPolicy (string)
persistentVolumeReclaimPolicy 定义当从持久卷声明释放持久卷时会发生什么。 有效的选项为 Retain(手动创建 PersistentVolumes 所用的默认值)、 Delete(动态制备 PersistentVolumes 所用的默认值)和 Recycle(已弃用)。 Recycle 选项必须被 PersistentVolume 下层的卷插件所支持才行。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes#reclaiming
storageClassName (string)
storageClassName 是这个持久卷所属于的 StorageClass 的名称。 空值意味着此卷不属于任何 StorageClass。
volumeAttributesClassName (string)
此持久卷所属的 VolumeAttributesClass 的名称。不能为空。 当此字段未设置时,表示此卷不属于任何 VolumeAttributesClass。 此字段是可变更的,在某个卷已被成功更新为新类后可以由 CSI 驱动更改此字段。对于未绑定的 PersistentVolume, volumeAttributesClassName 将在绑定过程中与未绑定的 PersistentVolumeClaim 进行匹配。 这是一个 Beta 字段,需要启用 VolumeAttributesClass 特性(默认关闭)。
volumeMode (string)
volumeMode 定义一个卷是带着已格式化的文件系统来使用还是保持在原始块状态来使用。 当 spec 中未包含此字段时,意味着取值为 Filesystem。
hostPath (HostPathVolumeSource)
hostPath 表示主机上的目录,由开发或测试人员进行制备。hostPath 仅对单节点开发和测试有用! 不会以任何方式支持主机存储(On-host storage),并且不能用于多节点集群中。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#hostpath
表示映射到 Pod 中的主机路径。主机路径卷不支持所有权管理或 SELinux 重新打标签。
hostPath.path (string),必需
目录在主机上的路径。如果该路径是一个符号链接,则它将沿着链接指向真实路径。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#hostpath
hostPath.type (string)
HostPath 卷的类型。默认为 ""。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#hostpath
local (LocalVolumeSource)
local 表示具有节点亲和性的直连式存储。
local 表示具有节点亲和性的直连式存储(Beta 特性)。
local.path (string),必需
指向节点上卷的完整路径。它可以是一个目录或块设备(磁盘、分区...)。
local.fsType (string)
fsType 是要挂载的文件系统类型。它仅适用于 path 是一个块设备的情况。 必须是主机操作系统所支持的文件系统类型之一。例如 “ext4”、“xfs”、“ntfs”。 在未指定的情况下,默认值是自动选择一个文件系统。
awsElasticBlockStore (AWSElasticBlockStoreVolumeSource)
awsElasticBlockStore 表示挂接到 kubelet 的主机随后暴露给 Pod 的一个 AWS Disk 资源。 更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore
表示 AWS 上的 Persistent Disk 资源。挂载到一个容器之前 AWS EBS 磁盘必须存在。 该磁盘还必须与 kubelet 位于相同的 AWS 区域中。AWS EBS 磁盘只能以读/写一次进行挂载。 AWS EBS 卷支持所有权管理和 SELinux 重新打标签。
awsElasticBlockStore.volumeID (string),必需
volumeID 是 AWS(Amazon EBS 卷)中持久磁盘资源的唯一 ID。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore
awsElasticBlockStore.fsType (string)
fsType 是你要挂载的卷的文件系统类型。提示:确保主机操作系统支持此文件系统类型。 例如:“ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为“ext4”。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore
awsElasticBlockStore.partition (int32)
partition 是你要挂载的卷中的分区。如果省略,则默认为按卷名称进行挂载。 例如:对于卷 /dev/sda1,将分区指定为 “1”。 类似地,/dev/sda 的卷分区为 “0”(或可以将属性留空)。
awsElasticBlockStore.readOnly (boolean)
readOnly 值为 true 将在 VolumeMounts 中强制设置 readOnly。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore
azureDisk (AzureDiskVolumeSource)
azureDisk 表示主机上挂载的 Azure Data Disk 并绑定挂载到 Pod 上。
azureDisk 表示主机上挂载的 Azure Data Disk 并绑定挂载到 Pod 上。
azureDisk.diskName (string),必需
diskName 是 Blob 存储中数据盘的名称。
azureDisk.diskURI (string),必需
diskURI 是 Blob 存储中数据盘的 URI。
azureDisk.cachingMode (string)
cachingMode 是主机缓存(Host Caching)模式:None、Read Only、Read Write。
azureDisk.fsType (string)
fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。
azureDisk.kind (string)
kind 预期值包括:
默认为 Shared。
azureDisk.readOnly (boolean)
readOnly 默认为 false(读/写)。此处 readOnly 将在 VolumeMounts 中强制设置 readOnly。
azureFile (AzureFilePersistentVolumeSource)
azureDisk 表示主机上挂载并绑定挂载到 Pod 上的 Azure File Service。
azureFile 表示主机上挂载的并绑定挂载到 Pod 上的 Azure File Service。
azureFile.secretName (string),必需
secretName 是包含 Azure 存储账号名称和主键的 Secret 的名称。
azureFile.shareName (string),必需
shareName 是 azure Share Name。
azureFile.readOnly (boolean)
readOnly 默认为 false(读/写)。此处 readOnly 将在 VolumeMounts 中强制设置 readOnly。
azureFile.secretNamespace (string)
secretNamespace 是包含 Azure 存储账号名称和主键的 Secret 的名字空间,默认与 Pod 相同。
cephfs (CephFSPersistentVolumeSource)
cephfs 表示在主机上挂载的 Ceph FS,该文件系统挂载与 Pod 的生命周期相同。
表示在 Pod 的生命周期内持续的 Ceph Filesystem 挂载。cephfs 卷不支持所有权管理或 SELinux 重新打标签。
cephfs.monitors ([]string),必需
原子:将在合并期间被替换
monitors 是必需的。monitors 是 Ceph 监测组件的集合。更多信息: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
cephfs.path (string)
path 是可选的。用作挂载的根,而不是完整的 Ceph 树,默认为 /。
cephfs.readOnly (boolean)
readOnly 是可选的。默认为 false(读/写)。此处 readOnly 将在 VolumeMounts 中强制设置 readOnly。 更多信息: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
cephfs.secretFile (string)
secretFile 是可选的。secretFile 是 user 对应的密钥环的路径,默认为 /etc/ceph/user.secret。 更多信息: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
cephfs.secretRef (SecretReference)
secretRef 是可选的。secretRef 是针对用户到身份认证 Secret 的引用,默认为空。更多信息: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
SecretReference 表示对某 Secret 的引用,其中包含足够的信息来访问任何名字空间中的 Secret。
cephfs.secretRef.name (string)
name 在名字空间内是唯一的,以引用一个 Secret 资源。
cephfs.secretRef.namespace (string)
namespace 指定一个名字空间,Secret 名称在该名字空间中必须唯一。
cephfs.user (string)
user 是可选的。user 是 rados 用户名,默认为 admin。更多信息: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
cinder (CinderPersistentVolumeSource)
cinder 表示 kubelet 主机上挂接和挂载的 Cinder 卷。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md
表示 OpenStack 中的一个 Cinder 卷资源。挂载到一个容器之前 Cinder 卷必须已经存在。 该卷还必须与 kubelet 位于相同的地区中。cinder 卷支持所有权管理和 SELinux 重新打标签。
cinder.volumeID (string),必需
volumeID 用于标识 Cinder 中的卷。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md
cinder.fsType (string)
fsType 是要挂载的文件系统类型。必须是主机操作系统支持的文件系统类型。 例如:“ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md
cinder.readOnly (boolean)
readOnly 是可选的。默认为 false(读/写)。 此处 readOnly 将在 VolumeMounts 中强制设置 readOnly。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md