这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

Kubernetes API

Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。

Kubernetes 资源和"意向记录"都是作为 API 对象储存的,并可以通过调用 RESTful 风格的 API 进行修改。 API 允许以声明方式管理配置。 用户可以直接和 Kubernetes API 交互,也可以通过 kubectl 这样的工具进行交互。 核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。

1 - 工作负载资源

2 - Service 资源

3 - 配置和存储资源

4 - 身份认证资源

4.1 - TokenReview

TokenReview 尝试通过验证令牌来确认已知用户。

apiVersion: authentication.k8s.io/v1

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

TokenReview

TokenReview 尝试通过验证令牌来确认已知用户。 注意:TokenReview 请求可能会被 kube-apiserver 中的 webhook 令牌验证器插件缓存。


  • apiVersion: authentication.k8s.io/v1

  • kind: TokenReview

  • metadata (ObjectMeta)

    标准对象的元数据,更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (TokenReviewSpec), required

    spec 保存有关正在评估的请求的信息

  • status (TokenReviewStatus)

    status 由服务器填写,指示请求是否可以通过身份验证。

TokenReviewSpec

TokenReviewPec 是对令牌身份验证请求的描述。


  • audiences ([]string)

    audiences 是带有令牌的资源服务器标识为受众的标识符列表。 受众感知令牌身份验证器将验证令牌是否适用于此列表中的至少一个受众。 如果未提供受众,受众将默认为 Kubernetes API 服务器的受众。

  • token (string)

    token 是不透明的持有者令牌(Bearer Token)。

TokenReviewStatus

TokenReviewStatus 是令牌认证请求的结果。


  • audiences ([]string)

    audiences 是身份验证者选择的与 TokenReview 和令牌兼容的受众标识符。 标识符是 TokenReviewSpec 受众和令牌受众的交集中的任何标识符。 设置 spec.audiences 字段的 TokenReview API 的客户端应验证在 status.audiences 字段中返回了兼容的受众标识符, 以确保 TokenReview 服务器能够识别受众。 如果 TokenReview 返回一个空的 status.audience 字段,其中 status.authenticated 为 “true”, 则该令牌对 Kubernetes API 服务器的受众有效。

  • authenticated (boolean)

    authenticated 表示令牌与已知用户相关联。

  • error (string)

    error 表示无法检查令牌

  • user (UserInfo)

    user 是与提供的令牌关联的 UserInfo。

    <-- UserInfo holds the information about the user needed to implement the user.Info interface. --> UserInfo 保存实现 user.Info 接口所需的用户信息

    • user.extra (map[string][]string)

    验证者提供的任何附加信息。

    • user.groups ([]string)

    此用户所属的组的名称。

    • user.uid (string)

    跨时间标识此用户的唯一值。如果删除此用户并添加另一个同名用户,他们将拥有不同的 UID。

    • user.username (string)

    在所有活动用户中唯一标识此用户的名称。

操作


create 创建一个TokenReview

HTTP 请求

POST /apis/authentication.k8s.io/v1/tokenreviews

参数

响应

200 (TokenReview): OK

201 (TokenReview): Created

202 (TokenReview): Accepted

401: Unauthorized

5 - 鉴权资源

6 - 策略资源

7 - 扩展资源

8 - 集群资源

9 - 公共定义

9.1 - 删除选项

删除 API 对象时可能会提供删除选项。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

删除 API 对象时可能会提供 DeleteOptions。


  • apiVersion (string)

    APIVersion 定义对象表示的版本化模式。 服务器应将已识别的模式转换为最新的内部值,并可能拒绝无法识别的值。 更多信息:https ://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • dryRun ([]string)

    该值如果存在,则表示不应保留修改。 无效或无法识别的 dryRun 指令将导致错误响应并且不会进一步处理请求。有效值为:

    • All:处理所有试运行阶段(Dry Run Stages)
  • gracePeriodSeconds (int64)

    表示对象被删除之前的持续时间(以秒为单位)。 值必须是非负整数。零值表示立即删除。如果此值为 nil,则将使用指定类型的默认宽限期。如果未指定,则为每个对象的默认值。

  • kind (string)

    kind 是一个字符串值,表示此对象代表的 REST 资源。 服务器可以从客户端提交请求的端点推断出此值。此值无法更新,是驼峰的格式。 更多信息:https ://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 。

  • orphanDependents (boolean)

    已弃用:该字段将在 1.7 中弃用,请使用 propagationPolicy 字段。 该字段表示依赖对象是否应该是孤儿。如果为 true/false,对象的 finalizers 列表中会被添加上或者移除掉 “orphan” 终结器(Finalizer)。 可以设置此字段或者设置 propagationPolicy 字段,但不能同时设置以上两个字段。

  • preconditions (Preconditions)

    先决条件必须在执行删除之前完成。如果无法满足这些条件,将返回 409(冲突)状态。

    执行操作(更新、删除等)之前必须满足先决条件。

    • preconditions.resourceVersion (string)

      指定目标资源版本(resourceVersion)。

    • preconditions.uid (string)

      指定目标 UID.

  • propagationPolicy (string)

    表示是否以及如何执行垃圾收集。可以设置此字段或 orphanDependents 字段,但不能同时设置二者。 默认策略由 metadata.finalizers 中现有终结器(Finalizer)集合和特定资源的默认策略决定。 可接受的值为: Orphan - 令依赖对象成为孤儿对象;Background - 允许垃圾收集器在后台删除依赖项;Foreground - 一个级联策略,前台删除所有依赖项。

9.2 - 标签选择器

标签选择器是对一组资源的标签查询。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

标签选择器是对一组资源的标签查询。

matchLabelsmatchExpressions 的结果按逻辑与的关系组合。一个 empty 标签选择器匹配所有对象。一个 null 标签选择器不匹配任何对象。


  • matchExpressions ([]LabelSelectorRequirement)

    matchExpressionsLabelSelectorRequirement 的列表,这些需求结果按逻辑与的关系来计算。

    标签选择器要求是包含值、键和关联键和值的运算符的选择器。

    • matchExpressions.key (string), 必填

      补丁策略: 按照键 key 合并

      key 是选择器应用的标签键.

    • matchExpressions.operator (string),必填

      operator 表示键与一组值的关系。有效的运算符包括 InNotInExistsDoesNotExist

    • matchExpressions.values ([]string)

      values 是一个字符串值数组。如果运算符为 InNotIn,则 values 数组必须为非空。

      如果运算符是 ExistsDoesNotExist,则 values 数组必须为空。

      该数组在战略性补丁(Strategic Merge Patch)期间被替换。

  • matchLabels (map[string]string)

    matchLabels 是 {key,value} 键值对的映射。

    matchLabels 映射中的单个 {key,value} 键值对相当于 matchExpressions 的一个元素,其键字段为 key,运算符为 Invalues 数组仅包含 value

    所表达的需求最终要按逻辑与的关系组合。

9.3 - ListMeta

ListMeta 描述了合成资源必须具有的元数据,包括列表和各种状态对象。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ListMeta 描述了合成资源必须具有的元数据,包括列表和各种状态对象。 一个资源仅能有 {ObjectMeta, ListMeta} 中的一个。


  • continue (string)

    如果用户对返回的条目数量设置了限制,则 continue 可能被设置,表示服务器有更多可用的数据。 该值是不透明的,可用于向提供此列表服务的端点发出另一个请求,以检索下一组可用的对象。 如果服务器配置已更改或时间已过去几分钟,则可能无法继续提供一致的列表。 除非你在错误消息中收到此令牌(token),否则使用此 continue 值时返回的 resourceVersion 字段应该和第一个响应中的值是相同的。

  • remainingItemCount (int64)

    remainingItemCount 是列表中未包含在此列表响应中的后续项目的数量。 如果列表请求包含标签或字段选择器,则剩余项目的数量是未知的,并且在序列化期间该字段将保持未设置和省略。 如果列表是完整的(因为它没有分块或者这是最后一个块),那么就没有剩余的项目,并且在序列化过程中该字段将保持未设置和省略。 早于 v1.15 的服务器不设置此字段。remainingItemCount 的预期用途是估计集合的大小。 客户端不应依赖于设置准确的 remainingItemCount

  • resourceVersion (string)

    标识该对象的服务器内部版本的字符串,客户端可以用该字段来确定对象何时被更改。 该值对客户端是不透明的,并且应该原样传回给服务器。该值由系统填充,只读。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency。

  • selfLink (string)

    selfLink 表示此对象的 URL,由系统填充,只读。

    已弃用:selfLink 是一个遗留的只读字段,不再由系统填充。

9.4 - LocalObjectReference

LocalObjectReference 包含足够的信息,可以让你在同一命名空间内找到引用的对象。

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

LocalObjectReference 包含足够的信息,可以让你在同一命名空间(namespace)内找到引用的对象。


9.5 - NodeSelectorRequirement

节点选择器是要求包含键、值和关联键和值的运算符的选择器

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

节点选择器是要求包含键、值和关联键和值的运算符的选择器。


  • key (string), 必选

    选择器适用的标签键。

  • operator (string), 必选

    表示键与一组值的关系的运算符。有效的运算符包括:In、NotIn、Exists、DoesNotExist、Gt 和 Lt。

  • values ([]string)

    字符串数组。如果运算符为 In 或 NotIn,则数组必须为非空。 如果运算符为 Exists 或 DoesNotExist,则数组必须为空。 如果运算符为 Gt 或 Lt,则数组必须有一个元素,该元素将被译为整数。 该数组在合并计划补丁时将被替换。

9.6 - ObjectFieldSelector

ObjectFieldSelector 选择对象的 APIVersioned 字段。

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

ObjectFieldSelector 选择对象的 APIVersioned 字段。


  • fieldPath (string), 必需的

    在指定 API 版本中要选择的字段的路径。

  • apiVersion (string)

    fieldPath 写入时所使用的模式版本,默认为 "v1"。

9.7 - ObjectMeta

ObjectMeta 是所有持久化资源必须具有的元数据,其中包括用户必须创建的所有对象。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ObjectMeta 是所有持久化资源必须具有的元数据,其中包括用户必须创建的所有对象。


  • name (string)

    name 在命名空间内必须是唯一的。创建资源时需要,尽管某些资源可能允许客户端请求自动地生成适当的名称。 名称主要用于创建幂等性和配置定义。无法更新。 更多信息:http://kubernetes.io/docs/user-guide/identifiers#names

  • generateName (string)

    generateName 是一个可选前缀,由服务器使用,仅在未提供 name 字段时生成唯一名称。 如果使用此字段,则返回给客户端的名称将与传递的名称不同。该值还将与唯一的后缀组合。 提供的值与 name 字段具有相同的验证规则,并且可能会根据所需的后缀长度被截断,以使该值在服务器上唯一。

    如果指定了此字段并且生成的名称存在,则服务器将不会返回 409 ——相反,它将返回 201 Created 或 500, 原因是 ServerTimeout 指示在分配的时间内找不到唯一名称,客户端应重试(可选,在 Retry-After 标头中指定的时间之后)。

    仅在未指定 name 时应用。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency

  • namespace (string)

    namespace 定义了一个值空间,其中每个名称必须唯一。空命名空间相当于 “default” 命名空间,但 “default” 是规范表示。 并非所有对象都需要限定在命名空间中——这些对象的此字段的值将为空。

    必须是 DNS_LABEL。无法更新。更多信息:http://kubernetes.io/docs/user-guide/namespaces

  • labels (map[string]string)

    可用于组织和分类(确定范围和选择)对象的字符串键和值的映射。 可以匹配 ReplicationControllers 和 Service 的选择器。更多信息:http://kubernetes.io/docs/user-guide/labels

  • annotations (map[string]string)

    annotations 是一个非结构化的键值映射,存储在资源中,可以由外部工具设置以存储和检索任意元数据。 它们不可查询,在修改对象时应保留。更多信息:http://kubernetes.io/docs/user-guide/annotations

系统字段

  • finalizers ([]string)

    在从注册表中删除对象之前该字段必须为空。 每个条目都是负责的组件的标识符,各组件将从列表中删除自己对应的条目。 如果对象的 deletionTimestamp 非空,则只能删除此列表中的条目。 终结器可以按任何顺序处理和删除。没有按照顺序执行, 因为它引入了终结器卡住的重大风险。finalizers 是一个共享字段, 任何有权限的参与者都可以对其进行重新排序。如果按顺序处理终结器列表, 那么这可能导致列表中第一个负责终结器的组件正在等待列表中靠后负责终结器的组件产生的信号(字段值、外部系统或其他), 从而导致死锁。在没有强制排序的情况下,终结者可以在它们之间自由排序, 并且不容易受到列表中排序更改的影响。

  • managedFields ([]ManagedFieldsEntry)

    managedFields 将 workflow-id 和版本映射到由该工作流管理的字段集。 这主要用于内部管理,用户通常不需要设置或理解该字段。 工作流可以是用户名、控制器名或特定应用路径的名称,如 “ci-cd”。 字段集始终存在于修改对象时工作流使用的版本。

    ManagedFieldsEntry 是一个 workflow-id,一个 FieldSet,也是该字段集适用的资源的组版本。

    • managedFields.apiVersion (string)

      apiVersion 定义此字段集适用的资源的版本。 格式是 “group/version”,就像顶级 apiVersion 字段一样。 必须跟踪字段集的版本,因为它不能自动转换。

    • managedFields.fieldsType (string)

      FieldsType 是不同字段格式和版本的鉴别器。 目前只有一个可能的值:“FieldsV1”

    • managedFields.fieldsV1 (FieldsV1)

      FieldsV1 包含类型 “FieldsV1” 中描述的第一个 JSON 版本格式。

      FieldsV1 以 JSON 格式将一组字段存储在像 Trie 这样的数据结构中。

      每个键或是 . 表示字段本身,并且始终映射到一个空集, 或是一个表示子字段或元素的字符串。该字符串将遵循以下四种格式之一:

      1. f:<name>,其中 <name> 是结构中字段的名称,或映射中的键
      2. v:<value>,其中 <value> 是列表项的精确 json 格式值
      3. i:<index>,其中 <index> 是列表中项目的位置
      4. k:<keys>,其中 <keys> 是列表项的关键字段到其唯一值的映射 如果一个键映射到一个空的 Fields 值,则该键表示的字段是集合的一部分。

      确切的格式在 sigs.k8s.io/structured-merge-diff 中定义。

    • managedFields.manager (string)

      manager 是管理这些字段的工作流的标识符。

    • managedFields.operation (string)

      operation 是导致创建此 managedFields 表项的操作类型。 此字段的仅有合法值是 “Apply” 和 “Update”。

    • managedFields.subresource (string)

      subresource 是用于更新该对象的子资源的名称,如果对象是通过主资源更新的,则为空字符串。 该字段的值用于区分管理者,即使他们共享相同的名称。例如,状态更新将不同于使用相同管理者名称的常规更新。 请注意,apiVersion 字段与 subresource 字段无关,它始终对应于主资源的版本。

    • managedFields.time (Time)

      time 是设置这些字段的时间戳。如果 operation 为 “Apply”,则它应始终为空

      time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。

  • ownerReferences ([]OwnerReference)

    补丁策略:在键 uid 上执行合并操作

    此对象所依赖的对象列表。如果列表中的所有对象都已被删除,则该对象将被垃圾回收。 如果此对象由控制器管理,则此列表中的条目将指向此控制器,controller 字段设置为 true。 管理控制器不能超过一个。

    OwnerReference 包含足够可以让你识别拥有对象的信息。 拥有对象必须与依赖对象位于同一命名空间中,或者是集群作用域的,因此没有命名空间字段。

    • ownerReferences.apiVersion (string),必选

      被引用资源的 API 版本。

    • ownerReferences.kind (string),必选

      被引用资源的类别。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

    • ownerReferences.name (string),必选

      被引用资源的名称。更多信息:http://kubernetes.io/docs/user-guide/identifiers#names

    • ownerReferences.uid (string),必选

      被引用资源的 uid。更多信息:http://kubernetes.io/docs/user-guide/identifiers#uids

    • ownerReferences.blockOwnerDeletion (boolean)

      如果为 true,并且如果所有者具有 “foregroundDeletion” 终结器, 则在删除此引用之前,无法从键值存储中删除所有者。 默认为 false。要设置此字段,用户需要所有者的 “delete” 权限, 否则将返回 422 (Unprocessable Entity)。

    • ownerReferences.controller (boolean)

      如果为 true,则此引用指向管理的控制器。

只读字段

  • creationTimestamp (Time)

    creationTimestamp 是一个时间戳,表示创建此对象时的服务器时间。 不能保证在单独的操作中按发生前的顺序设置。 客户端不得设置此值。它以 RFC3339 形式表示,并采用 UTC。

    由系统填充。只读。列表为空。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。

  • deletionGracePeriodSeconds (int64)

    此对象从系统中删除之前允许正常终止的秒数。 仅当设置了 deletionTimestamp 时才设置。 只能缩短。只读。

  • deletionTimestamp (Time)

    deletionTimestamp 是删除此资源的 RFC 3339 日期和时间。 该字段在用户请求优雅删除时由服务器设置,客户端不能直接设置。 一旦 finalizers 列表为空,该资源预计将在此字段中的时间之后被删除 (不再从资源列表中可见,并且无法通过名称访问)。 只要 finalizers 列表包含项目,就阻止删除。一旦设置了 deletionTimestamp, 该值可能不会被取消设置或在未来进一步设置,尽管它可能会缩短或在此时间之前可能会删除资源。 例如,用户可能要求在 30 秒内删除一个 Pod。 Kubelet 将通过向 Pod 中的容器发送优雅的终止信号来做出反应。 30 秒后,Kubelet 将向容器发送硬终止信号(SIGKILL), 并在清理后从 API 中删除 Pod。在网络存在分区的情况下, 此对象可能在此时间戳之后仍然存在,直到管理员或自动化进程可以确定资源已完全终止。 如果未设置,则未请求优雅删除该对象。

    请求优雅删除时由系统填充。只读。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    “Time 是 time.Time 的包装类,支持正确地序列化为 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装类。”

  • generation (int64)

    表示期望状态的特定生成的序列号。由系统填充。只读。

  • resourceVersion (string)

    一个不透明的值,表示此对象的内部版本,客户端可以使用该值来确定对象是否已被更改。 可用于乐观并发、变更检测以及对资源或资源集的监听操作。 客户端必须将这些值视为不透明的,且未更改地传回服务器。 它们可能仅对特定资源或一组资源有效。

    由系统填充。只读。客户端必须将值视为不透明。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

  • selfLink (string)

    selfLink 是表示此对象的 URL。由系统填充。只读。

    已弃用。Kubernetes 将在 1.20 版本中停止传播该字段,并计划在 1.21 版本中删除该字段。

  • uid (string)

    UID 是该对象在时间和空间上的唯一值。它通常由服务器在成功创建资源时生成,并且不允许使用 PUT 操作更改。

    由系统填充。只读。更多信息:http://kubernetes.io/docs/user-guide/identifiers#uids

忽略字段

  • clusterName (string)

    已弃用:clusterName 是一个总是被系统清除并且从未使用过的遗留字段;它将在 1.25 中完全删除。 go 结构体中的对应字段名称已更改,以帮助客户端检测意外使用。

9.8 - ObjectReference

ObjectReference 包含足够的信息,可以让你检查或修改引用的对象。

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

ObjectReference包含足够的信息,允许你检查或修改引用的对象。


  • apiVersion (string)

    被引用者的 API 版本。

  • fieldPath (string)

    如果引用的是对象的某个对象是整个对象,则该字符串而不是应包含的 JSON/Go 字段有效访问语句, 例如desiredState.manifest.containers[ 2 ]。例如,如果对象引用针对的是 Pod 中的一个容器, 此字段取值类似于:spec.containers{name}name指触发的容器的名称), 或者如果没有指定容器名称,spec.containers[ 2 ](此Pod中索引为2的容器)。 选择这种只是为了有一些定义好的语法来引用对象的部分。

  • kind (string)

    被引用者的类别(kind)。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md #types-kinds

  • name (string)

    被引用对象的名称。更多信息:https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

  • namespace (string)

    被引用对象的名字空间。更多信息:https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

  • resourceVersion (string)

    被引用对象的特定资源版本(如果有)。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

  • uid (string)

    被引用对象的UID。更多信息:https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

9.9 - Patch

提供 Patch 是为了给 Kubernetes PATCH 请求正文提供一个具体的名称和类型。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

提供 Patch 是为了给 Kubernetes PATCH 请求正文提供一个具体的名称和类型。


9.10 - Quantity

数量(Quantity)是数字的定点表示。

import "k8s.io/apimachinery/pkg/api/resource"

数量(Quantity)是数字的定点表示。 除了 String() 和 AsInt64() 的访问接口之外, 它以 JSON 和 YAML形式提供方便的打包和解包方法。

序列化格式如下:

<quantity>        ::= <signedNumber><suffix>
  (注意 <suffix> 可能为空, 例如 <decimalSI> 的 "" 情形。) </br>
<digit>           ::= 0 | 1 | ... | 9 </br>
<digits>          ::= <digit> | <digit><digits> </br>
<number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> </br>
<sign>            ::= "+" | "-" </br>
<signedNumber>    ::= <number> | <sign><number> </br>
<suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> </br>
<binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei 
  (国际单位制度;查阅:http://physics.nist.gov/cuu/Units/binary.html) </br>
<decimalSI>       ::= m | "" | k | M | G | T | P | E 
  (注意,1024 = 1ki 但 1000 = 1k;我没有选择大写。) </br>
<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber> </br>

无论使用三种指数形式中哪一种,没有数量可以表示大于 263-1 的数,也不可能超过 3 个小数位。 更大或更精确的数字将被截断或向上取整。(例如:0.1m 将向上取整为 1m。) 如果将来我们需要更大或更小的数量,可能会扩展。

当从字符串解析数量时,它将记住它具有的后缀类型,并且在序列化时将再次使用相同类型。

在序列化之前,数量将以“规范形式”放置。这意味着指数或者后缀将被向上或向下调整(尾数相应增加或减少),并确保:

  1. 没有精度丢失
  2. 不会输出小数数字
  3. 指数(或后缀)尽可能大。 除非数量是负数,否则将省略正负号。

例如:

  • 1.5 将会被序列化成 “1500m”
  • 1.5Gi 将会被序列化成 “1536Mi”

请注意,数量永远不会在内部以浮点数表示。这是本设计的重中之重。

只要它们格式正确,非规范值仍将解析,但将以其规范形式重新输出。(所以应该总是使用规范形式,否则不要执行 diff 比较。)

这种格式旨在使得很难在不撰写某种特殊处理代码的情况下使用这些数字,进而希望实现者也使用定点实现。


9.11 - ResourceFieldSelector

ResourceFieldSelector 表示容器资源(CPU,内存)及其输出格式。

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

ResourceFieldSelector 表示容器资源(CPU,内存)及其输出格式。


  • resource (string), 必选

    必选:选择的资源

  • containerName (string)

    容器名称:对卷必选,对环境变量可选

  • divisor (Quantity)

    指定所曝光资源的输出格式,默认值为“1”

9.12 - Status

状态(Status)是不返回其他对象的调用的返回值。

import "k8s.io/apimachinery/pkg/apis/meta/v1"

状态(Status)是不返回其他对象的调用的返回值。


  • apiVersion (string)

    APIVersion 定义对象表示的版本化模式。 服务器应将已识别的模式转换为最新的内部值,并可能拒绝无法识别的值。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • code (int32)

    此状态的建议 HTTP 返回代码,如果未设置,则为 0。

  • details (StatusDetails)

    与原因(Reason)相关的扩展数据。每个原因都可以定义自己的扩展细节。 此字段是可选的,并且不保证返回的数据符合任何模式,除非由原因类型定义。

    StatusDetails 是一组附加属性,可以由服务器设置以提供有关响应的附加信息。 状态对象的原因字段定义将设置哪些属性。 客户端必须忽略与每个属性的定义类型不匹配的字段,并且应该假定任何属性可能为空、无效或未定义。

    • details.causes ([]StatusCause)

      Causes 数组包含与 StatusReason 故障相关的更多详细信息。 并非所有 StatusReasons 都可以提供详细的原因。

      StatusCause 提供有关 api.Status 失败的更多信息,包括遇到多个错误的情况。

      • details.causes.field (string)

        导致此错误的资源字段,由其 JSON 序列化命名。 可能包括嵌套属性的点和后缀表示法。数组是从零开始索引的。 由于字段有多个错误,字段可能会在一系列原因中出现多次。可选。

        示例:

        • “name”:当前资源上的字段 “name”
        • “items[0].name”:“items” 中第一个数组条目上的字段 “name”
      • details.causes.message (string)

        对错误原因的可读描述。该字段可以按原样呈现给读者。

      • details.causes.reason (string)

        错误原因的机器可读描述。如果此值为空,则没有可用信息。

    • details.group (string)

      与状态 StatusReason 关联的资源的组属性。

    • details.kind (string)

      与状态 StatusReason 关联的资源的种类属性。 在某些操作上可能与请求的资源种类不同。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

    • details.name (string)

      与状态 StatusReason 关联的资源的名称属性(当有一个可以描述的名称时)。

    • details.retryAfterSeconds (int32)

      如果指定,则应重试操作前的时间(以秒为单位)。 一些错误可能表明客户端必须采取替代操作——对于这些错误,此字段可能指示在采取替代操作之前等待多长时间。

    • details.uid (string)

      资源的 UID(当有单个可以描述的资源时)。 更多信息:http://kubernetes.io/docs/user-guide/identifiers#uids

  • kind (string)

    Kind 是一个字符串值,表示此对象表示的 REST 资源。 服务器可以从客户端提交请求的端点推断出这一点。 无法更新。驼峰式规则。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • message (string)

    此操作状态的人类可读描述。

  • metadata (ListMeta)

    标准列表元数据。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • reason (string)

    机器可读的说明,说明此操作为何处于“失败”状态。 如果此值为空,则没有可用信息。 Reason 澄清了 HTTP 状态代码,但不会覆盖它。

  • status (string)

    操作状态。“Success”或“Failure” 之一。 更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

9.13 - TypedLocalObjectReference

TypedLocalObjectReference 包含足够的信息,可以让你在同一个名称空间中定位指定类型的引用对象。

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

TypedLocalObjectReference 包含足够的信息,可以让你在同一个名称空间中定位特定类型的引用对象。


  • kind (string), 必需

    Kind 是被引用的资源的类型

  • name (string), 必需

    Name 是被引用的资源的名称

  • apiGroup (string)

    APIGroup 是被引用资源的组。如果不指定 APIGroup,则指定的 Kind 必须在核心 API 组中。对于任何其它第三方类型,都需要 APIGroup。

10 - 常用参数

allowWatchBookmarks

allowWatchBookmarks 字段请求类型为 BOOKMARK 的监视事件。 没有实现书签的服务器可能会忽略这个标志,并根据服务器的判断发送书签。 客户端不应该假设书签会在任何特定的时间间隔返回,也不应该假设服务器会在会话期间发送任何书签事件。 如果当前请求不是 watch 请求,则忽略该字段。


continue

当需要从服务器检索更多结果时,应该设置 continue 选项。由于这个值是服务器定义的, 客户端只能使用先前查询结果中具有相同查询参数的 continue 值(continue值除外), 服务器可能拒绝它识别不到的 continue 值。 如果指定的 continue 值不再有效,无论是由于过期(通常是 5 到 15 分钟) 还是服务器上的配置更改,服务器将响应 "410 ResourceExpired" 错误和一个 continue 令牌。

如果客户端需要一个一致的列表,它必须在没有 continue 字段的情况下重新发起 list 请求。 否则,客户端可能会发送另一个带有 410 错误令牌的 list 请求,服务器将响应从下一个键开始的列表, 但列表数据来自最新的快照,这与之前 的列表结果不一致。第一个列表请求之后的对象创建,修改,或删除的对象将被包含在响应中, 只要他们的键是在“下一个键”之后。

当 watch 字段为 true 时,不支持此字段。客户端可以从服务器返回的最后一个 resourceVersion 值开始监视,就不会错过任何修改。


dryRun

表示不应该持久化所请求的修改。无效或无法识别的 dryRun 指令将导致错误响应, 并且服务器不再对请求进行进一步处理。有效值为:

  • All: 将处理所有的演练阶段

fieldManager

fieldManager 是与进行这些更改的参与者或实体相关联的名称。 长度小于或128个字符且仅包含可打印字符,如 https://golang.org/pkg/unicode/#IsPrint 所定义。


fieldSelector

根据返回对象的字段限制返回对象列表的选择器。默认为返回所有字段。


fieldValidation

fieldValidation 指示服务器如何处理请求(POST/PUT/PATCH)中包含未知或重复字段的对象, 前提是 ServerSideFieldValidation 特性门控也已启用。

有效值为:

  • Ignore:这将忽略从对象中默默删除的所有未知字段,并将忽略除解码器遇到的最后一个重复字段之外的所有字段。 这是在 v1.23 之前的默认行为,也是当 ServerSideFieldValidation 特性门控被禁用时的默认行为。
  • Warn:这将针对从对象中删除的各个未知字段以及所遇到的各个重复字段,分别通过标准警告响应头发出警告。 如果没有其他错误,请求仍然会成功,并且只会保留所有重复字段中的最后一个。 这是启用 ServerSideFieldValidation 特性门控时的默认值。
  • Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,将使请求失败并返回 BadRequest 错误。

force

Force 将“强制”应用请求。这意味着用户将重新获得他人拥有的冲突领域。 对于非应用补丁请求,Force 标志必须不设置。


gracePeriodSeconds

删除对象前的持续时间(秒数)。值必须为非负整数。取值为 0 表示立即删除。 如果该值为 nil,将使用指定类型的默认宽限期。如果没有指定,默认为每个对象的设置值。0 表示立即删除。


labelSelector

通过标签限制返回对象列表的选择器。默认为返回所有对象。


limit

limit 是一个列表调用返回的最大响应数。如果有更多的条目,服务器会将列表元数据上的 'continue' 字段设置为一个值,该值可以用于相同的初始查询来检索下一组结果。

设置 limit 可能会在所有请求的对象被过滤掉的情况下返回少于请求的条目数量(下限为零), 并且客户端应该只根据 continue 字段是否存在来确定是否有更多的结果可用。 服务器可能选择不支持 limit 参数,并将返回所有可用的结果。 如果指定了 limit 并且 continue 字段为空,客户端可能会认为没有更多的结果可用。 如果 watch 为 true,则不支持此字段。

服务器保证在使用 continue 时返回的对象将与不带 limit 的列表调用相同,—— 也就是说,在发出第一个请求后所创建、修改或删除的对象将不包含在任何后续的继续请求中。

这有时被称为一致性快照,确保使用 limit 的客户端在分块接收非常大的结果的客户端能够看到所有可能的对象。 如果对象在分块列表期间被更新,则返回计算第一个列表结果时存在的对象版本。


namespace

对象名称和身份验证范围,例如用于团队和项目。


pretty

如果设置为 'true' ,那么输出是规范的打印。


propagationPolicy

该字段决定是否以及如何执行垃圾收集。可以设置此字段或 OrphanDependents,但不能同时设置。 默认策略由 metadata.finalizers 和特定资源的默认策略设置决定。可接受的值是:

  • 'Orphan':孤立依赖项;
  • 'Background':允许垃圾回收器后台删除依赖;
  • 'Foreground':一个级联策略,前台删除所有依赖项。

resourceVersion

resourceVersion 对请求所针对的资源版本设置约束。 详情请参见 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions

默认不设置


resourceVersionMatch

resourceVersionMatch 字段决定如何将 resourceVersion 应用于列表调用。 强烈建议对设置了 resourceVersion 的列表调用设置 resourceVersion 匹配, 具体请参见 https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions

默认不设置


timeoutSeconds

list/watch 调用的超时秒数。这选项限制调用的持续时间,无论是否有活动。


watch

监视对所述资源的更改,并将其这类变更以添加、更新和删除通知流的形式返回。指定 resourceVersion。