节点

Node 是 Kubernetes 中的工作节点。

apiVersion: v1

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

节点

Node 是 Kubernetes 中的工作节点。每个节点在缓存中(即 etcd 中)都有一个唯一的标识符。


NodeSpec (节点规范)

NodeSpec 描述了创建节点时使用的属性。


  • configSource (配置源) (NodeConfigSource)

    已弃用:以前用于指定 DynamicKubeletConfig 特性的节点配置源。此特性已移除。

    NodeConfigSource 指定节点配置源。恰好一个子字段(元数据除外)必须为非 nil。此 API 自 1.22 版本起已弃用

    • configSource.configMap (配置源.ConfigMap) (ConfigMapNodeConfigSource)

      ConfigMap 是对节点 ConfigMap 的引用

      ConfigMapNodeConfigSource 包含将 ConfigMap 引用为节点配置源的信息。此 API 自 1.22 版本起已弃用:https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration

      • configSource.configMap.kubeletConfigKey (字符串), 必需

        KubeletConfigKey 声明了引用的 ConfigMap 中的哪个键对应于 KubeletConfiguration 结构体。在所有情况下此字段都是必需的。

      • configSource.configMap.name (字符串), 必需

        Name 是引用的 ConfigMap 的 metadata.name。在所有情况下此字段都是必需的。

      • configSource.configMap.namespace (字符串), 必需

        Namespace 是引用的 ConfigMap 的 metadata.namespace。在所有情况下此字段都是必需的。

      • configSource.configMap.resourceVersion (字符串)

        ResourceVersion 是引用的 ConfigMap 的 metadata.ResourceVersion。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

      • configSource.configMap.uid (字符串)

        UID 是引用的 ConfigMap 的 metadata.UID。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

  • externalID (字符串)

    已弃用。并非所有 kubelet 都会设置此字段。在 1.13 版本后移除此字段。参阅:https://issues.k8s.io/61966

  • podCIDR (字符串)

    PodCIDR 表示分配给节点的 Pod IP 范围。

  • podCIDRs ([]字符串)

    集合:合并时将保留唯一值

    podCIDRs 表示分配给节点供该节点上的 Pod 使用的 IP 范围。如果指定此字段,则第 0 个条目必须与 podCIDR 字段匹配。它最多可以包含 IPv4 和 IPv6 各一个值。

  • providerID (字符串)

    云提供商分配给节点的 ID,格式为:<ProviderName>://<ProviderSpecificNodeID>

  • taints (污点) ([]Taint)

    原子操作:合并时将被替换

    如果指定,则为节点的污点。

    附加了此 Taint 的节点对任何无法容忍此 Taint 的 Pod 具有“效果”。

    • taints.effect (字符串), 必需

      必需。污点对无法容忍污点的 Pod 的影响。有效影响为 NoSchedule、PreferNoSchedule 和 NoExecute。

    • taints.key (字符串), 必需

      必需。要应用于节点的污点键。

    • taints.timeAdded (时间) (Time)

      TimeAdded 表示添加污点的时间。仅为 NoExecute 污点写入此字段。

      Time 是 time.Time 的一个包装器,支持正确地编组到 YAML 和 JSON。time 包提供的许多工厂方法都有相应的包装器。

    • taints.value (字符串)

      与污点键对应的污点值。

  • unschedulable (布尔值)

    Unschedulable 控制新 Pod 的节点调度能力。默认情况下,节点是可调度的。更多信息:https://kubernetes.ac.cn/docs/concepts/nodes/node/#manual-node-administration

NodeStatus (节点状态)

NodeStatus 包含关于节点当前状态的信息。


  • addresses (地址) ([]NodeAddress)

    Patch 策略:按键 type 合并

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

    节点可访问的地址列表。如果可用,从云提供商查询。更多信息:https://kubernetes.ac.cn/docs/reference/node/node-status/#addresses 注意:此字段被声明为可合并,但合并键不够唯一,合并时可能导致数据损坏。调用者应改用完全替换补丁。有关示例,请参见 https://pr.k8s.io/79391。消费者应假定节点的地址在其生命周期内可能会更改。但是,在某些情况下可能并非如此,例如 Pod 在其自身状态中继承了节点的地址,或者 downward API 的使用者 (status.hostIP)。

    NodeAddress 包含节点的地址信息。

    • addresses.address (字符串), 必需

      节点地址。

    • addresses.type (字符串), 必需

      节点地址类型,Hostname、ExternalIP 或 InternalIP 之一。

  • allocatable (可分配) (map[字符串]Quantity)

    Allocatable 表示节点上可用于调度的资源。默认为 Capacity。

  • capacity (容量) (map[字符串]Quantity)

    Capacity 表示节点的总资源。更多信息:https://kubernetes.ac.cn/docs/reference/node/node-status/#capacity

  • conditions (条件) ([]NodeCondition)

    Patch 策略:按键 type 合并

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

    Conditions 是当前观察到的节点条件数组。更多信息:https://kubernetes.ac.cn/docs/reference/node/node-status/#condition

    NodeCondition 包含节点的条件信息。

    • conditions.status (字符串), 必需

      条件状态,True、False 或 Unknown 之一。

    • conditions.type (字符串), 必需

      节点条件类型。

    • conditions.lastHeartbeatTime (时间) (Time)

      上次收到给定条件更新的时间。

      Time 是 time.Time 的一个包装器,支持正确地编组到 YAML 和 JSON。time 包提供的许多工厂方法都有相应的包装器。

    • conditions.lastTransitionTime (时间) (Time)

      条件上次从一个状态转换为另一个状态的时间。

      Time 是 time.Time 的一个包装器,支持正确地编组到 YAML 和 JSON。time 包提供的许多工厂方法都有相应的包装器。

    • conditions.message (字符串)

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

    • conditions.reason (字符串)

      条件上次转换的(简要)原因。

  • config (配置) (NodeConfigStatus)

    通过动态 Kubelet 配置特性分配给节点的配置状态。

    NodeConfigStatus 描述由 Node.Spec.ConfigSource 分配的配置状态。

    • config.active (配置.活动配置) (NodeConfigSource)

      Active 报告节点当前正在使用的已检查点配置。Active 将表示 Assigned 配置的当前版本,或当前的 LastKnownGood 配置,具体取决于尝试使用 Assigned 配置是否导致错误。

      NodeConfigSource 指定节点配置源。恰好一个子字段(元数据除外)必须为非 nil。此 API 自 1.22 版本起已弃用

      • config.active.configMap (配置.活动配置.ConfigMap) (ConfigMapNodeConfigSource)

        ConfigMap 是对节点 ConfigMap 的引用

        ConfigMapNodeConfigSource 包含将 ConfigMap 引用为节点配置源的信息。此 API 自 1.22 版本起已弃用:https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration

        • config.active.configMap.kubeletConfigKey (字符串), 必需

          KubeletConfigKey 声明了引用的 ConfigMap 中的哪个键对应于 KubeletConfiguration 结构体。在所有情况下此字段都是必需的。

        • config.active.configMap.name (字符串), 必需

          Name 是引用的 ConfigMap 的 metadata.name。在所有情况下此字段都是必需的。

        • config.active.configMap.namespace (字符串), 必需

          Namespace 是引用的 ConfigMap 的 metadata.namespace。在所有情况下此字段都是必需的。

        • config.active.configMap.resourceVersion (字符串)

          ResourceVersion 是引用的 ConfigMap 的 metadata.ResourceVersion。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

        • config.active.configMap.uid (字符串)

          UID 是引用的 ConfigMap 的 metadata.UID。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

    • config.assigned (配置.已分配配置) (NodeConfigSource)

      Assigned 报告节点将尝试使用的已检查点配置。当 Node.Spec.ConfigSource 更新时,节点会将相关的配置负载检查点到本地磁盘,并附带指示预期配置的记录。节点参考此记录选择其配置检查点,并在 Assigned 中报告此记录。Assigned 仅在记录被检查点到磁盘后才在状态中更新。当 Kubelet 重启时,它会尝试通过加载和验证由 Assigned 标识的已检查点负载,将 Assigned 配置设为 Active 配置。

      NodeConfigSource 指定节点配置源。恰好一个子字段(元数据除外)必须为非 nil。此 API 自 1.22 版本起已弃用

      • config.assigned.configMap (配置.已分配配置.ConfigMap) (ConfigMapNodeConfigSource)

        ConfigMap 是对节点 ConfigMap 的引用

        ConfigMapNodeConfigSource 包含将 ConfigMap 引用为节点配置源的信息。此 API 自 1.22 版本起已弃用:https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration

        • config.assigned.configMap.kubeletConfigKey (字符串), 必需

          KubeletConfigKey 声明了引用的 ConfigMap 中的哪个键对应于 KubeletConfiguration 结构体。在所有情况下此字段都是必需的。

        • config.assigned.configMap.name (字符串), 必需

          Name 是引用的 ConfigMap 的 metadata.name。在所有情况下此字段都是必需的。

        • config.assigned.configMap.namespace (字符串), 必需

          Namespace 是引用的 ConfigMap 的 metadata.namespace。在所有情况下此字段都是必需的。

        • config.assigned.configMap.resourceVersion (字符串)

          ResourceVersion 是引用的 ConfigMap 的 metadata.ResourceVersion。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

        • config.assigned.configMap.uid (字符串)

          UID 是引用的 ConfigMap 的 metadata.UID。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

    • config.error (字符串)

      Error 描述了将 Spec.ConfigSource 与 Active 配置协调时遇到的任何问题。例如,在尝试将 Spec.ConfigSource 检查点到本地 Assigned 记录时,在尝试将与 Spec.ConfigSource 关联的负载检查点时,在尝试加载或验证 Assigned 配置时等都可能发生错误。错误可能在同步配置的不同阶段发生。较早的错误(例如下载或检查点错误)不会导致回滚到 LastKnownGood,并且可能会在 Kubelet 重试时解决。稍后的错误(例如加载或验证已检查点配置)将导致回滚到 LastKnownGood。在后一种情况下,通常可以通过修正 Spec.ConfigSource 中分配的配置来解决错误。您可以通过在 Kubelet 日志中搜索错误消息来查找额外的调试信息。Error 是对错误状态的人类可读描述;机器可以检查 Error 是否为空,但不应依赖于不同 Kubelet 版本之间 Error 文本的稳定性。

    • config.lastKnownGood (配置.上次已知良好配置) (NodeConfigSource)

      LastKnownGood 报告节点在尝试使用 Assigned 配置时遇到错误时将回退到的已检查点配置。当节点确定 Assigned 配置稳定且正确时,Assigned 配置会成为 LastKnownGood 配置。目前,这是通过从本地 Assigned 配置记录更新开始的 10 分钟浸泡期来实现的。如果在此周期结束时 Assigned 配置处于 Active 状态,它就会成为 LastKnownGood。请注意,如果 Spec.ConfigSource 被重置为 nil(使用本地默认值),LastKnownGood 也会立即重置为 nil,因为本地默认配置总是被认为是好的。您不应假设节点确定配置稳定性和正确性的方法,因为这将来可能会改变或变为可配置。

      NodeConfigSource 指定节点配置源。恰好一个子字段(元数据除外)必须为非 nil。此 API 自 1.22 版本起已弃用

      • config.lastKnownGood.configMap (配置.上次已知良好配置.ConfigMap) (ConfigMapNodeConfigSource)

        ConfigMap 是对节点 ConfigMap 的引用

        ConfigMapNodeConfigSource 包含将 ConfigMap 引用为节点配置源的信息。此 API 自 1.22 版本起已弃用:https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration

        • config.lastKnownGood.configMap.kubeletConfigKey (字符串), 必需

          KubeletConfigKey 声明了引用的 ConfigMap 中的哪个键对应于 KubeletConfiguration 结构体。在所有情况下此字段都是必需的。

        • config.lastKnownGood.configMap.name (字符串), 必需

          Name 是引用的 ConfigMap 的 metadata.name。在所有情况下此字段都是必需的。

        • config.lastKnownGood.configMap.namespace (字符串), 必需

          Namespace 是引用的 ConfigMap 的 metadata.namespace。在所有情况下此字段都是必需的。

        • config.lastKnownGood.configMap.resourceVersion (字符串)

          ResourceVersion 是引用的 ConfigMap 的 metadata.ResourceVersion。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

        • config.lastKnownGood.configMap.uid (字符串)

          UID 是引用的 ConfigMap 的 metadata.UID。此字段在 Node.Spec 中被禁用,在 Node.Status 中是必需的。

  • daemonEndpoints (守护进程端点) (NodeDaemonEndpoints)

    运行在节点上的守护进程的端点。

    NodeDaemonEndpoints 列出了运行在节点上的守护进程打开的端口。

    • daemonEndpoints.kubeletEndpoint (守护进程端点.kubeletEndpoint) (DaemonEndpoint)

      Kubelet 监听的端点。

      DaemonEndpoint 包含单个守护进程端点的信息。

      • daemonEndpoints.kubeletEndpoint.Port (int32), 必需

        给定端点的端口号。

  • features (特性) (NodeFeatures)

    Features 描述了 CRI 实现所实现的一组特性。

    NodeFeatures 描述了 CRI 实现所实现的一组特性。NodeFeatures 中包含的特性应该只依赖于 CRI 实现,而与运行时处理程序无关。

    • features.supplementalGroupsPolicy (布尔值)

      如果运行时支持 SupplementalGroupsPolicy 和 ContainerUser,则 SupplementalGroupsPolicy 设置为 true。

  • images (镜像) ([]ContainerImage)

    原子操作:合并时将被替换

    此节点上的容器镜像列表

    描述容器镜像

    • images.names ([]字符串)

      原子操作:合并时将被替换

      此镜像已知的名称。例如 ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]

    • images.sizeBytes (int64)

      镜像的大小,以字节为单位。

  • nodeInfo (节点信息) (NodeSystemInfo)

    用于唯一标识节点的一组 ID/UUID。更多信息:https://kubernetes.ac.cn/docs/reference/node/node-status/#info

    NodeSystemInfo 是用于唯一标识节点的一组 ID/UUID。

    • nodeInfo.architecture (字符串), 必需

      节点报告的架构

    • nodeInfo.bootID (字符串), 必需

      节点报告的 Boot ID。

    • nodeInfo.containerRuntimeVersion (字符串), 必需

      节点通过运行时远程 API 报告的 ContainerRuntime 版本(例如 containerd://1.4.2)。

    • nodeInfo.kernelVersion (字符串), 必需

      节点从 'uname -r' 报告的内核版本(例如 3.16.0-0.bpo.4-amd64)。

    • nodeInfo.kubeProxyVersion (字符串), 必需

      已弃用:节点报告的 KubeProxy 版本。

    • nodeInfo.kubeletVersion (字符串), 必需

      节点报告的 Kubelet 版本。

    • nodeInfo.machineID (字符串), 必需

      节点报告的 MachineID。对于集群中的唯一机器标识,此字段是首选。从 man(5) machine-id 了解更多信息:http://man7.org/linux/man-pages/man5/machine-id.5.html

    • nodeInfo.operatingSystem (字符串), 必需

      节点报告的操作系统

    • nodeInfo.osImage (字符串), 必需

      节点从 /etc/os-release 报告的 OS 镜像(例如 Debian GNU/Linux 7 (wheezy))。

    • nodeInfo.systemUUID (字符串), 必需

      节点报告的 SystemUUID。对于唯一机器标识,MachineID 是首选。此字段特定于 Red Hat 主机 https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid

    • nodeInfo.swap (节点信息.Swap) (NodeSwapStatus)

      节点报告的 Swap 信息。

      NodeSwapStatus 表示交换内存信息。

      • nodeInfo.swap.capacity (int64)

        交换内存总量,以字节为单位。

  • phase (阶段) (字符串)

    NodePhase 是最近观察到的节点的生命周期阶段。更多信息:https://kubernetes.ac.cn/docs/concepts/nodes/node/#phase 此字段从未被填充,并且现在已弃用。

  • runtimeHandlers (运行时处理程序) ([]NodeRuntimeHandler)

    原子操作:合并时将被替换

    可用的运行时处理程序。

    NodeRuntimeHandler 是一组运行时处理程序信息。

    • runtimeHandlers.features (运行时处理程序.特性) (NodeRuntimeHandlerFeatures)

      支持的特性。

      NodeRuntimeHandlerFeatures 是运行时处理程序所实现的一组特性。

      • runtimeHandlers.features.recursiveReadOnlyMounts (布尔值)

        如果运行时处理程序支持 RecursiveReadOnlyMounts,则 RecursiveReadOnlyMounts 设置为 true。

      • runtimeHandlers.features.userNamespaces (布尔值)

        如果运行时处理程序支持 UserNamespaces(包括卷),则 UserNamespaces 设置为 true。

    • runtimeHandlers.name (字符串)

      运行时处理程序名称。默认运行时处理程序为空。

  • volumesAttached (已连接卷) ([]AttachedVolume)

    原子操作:合并时将被替换

    连接到节点的卷列表。

    AttachedVolume 描述连接到节点的卷

    • volumesAttached.devicePath (字符串), 必需

      DevicePath 表示卷应可用的设备路径

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

      已连接卷的名称

  • volumesInUse (使用中的卷) ([]字符串)

    原子操作:合并时将被替换

    节点正在使用(已挂载)的可连接卷列表。

NodeList (节点列表)

NodeList 是已注册到主节点的所有 Node 的完整列表。


操作


get 读取指定的 Node

HTTP 请求

GET /api/v1/nodes/{name}

参数

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

    Node 的名称

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

    pretty

响应

200 (Node): 成功

401: 未授权

get 读取指定 Node 的状态

HTTP 请求

GET /api/v1/nodes/{name}/status

参数

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

    Node 的名称

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

    pretty

响应

200 (Node): 成功

401: 未授权

list 列出或监听 kind 为 Node 的对象

HTTP 请求

GET /api/v1/nodes

参数

响应

200 (NodeList): 成功

401: 未授权

create 创建一个 Node

HTTP 请求

POST /api/v1/nodes

参数

响应

200 (Node): 成功

201 (Node): 已创建

202 (Node): 已接受

401: 未授权

update 替换指定的 Node

HTTP 请求

PUT /api/v1/nodes/{name}

参数

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

    Node 的名称

  • body: Node, 必需

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    pretty

响应

200 (Node): 成功

201 (Node): 已创建

401: 未授权

update 替换指定 Node 的状态

HTTP 请求

PUT /api/v1/nodes/{name}/status

参数

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

    Node 的名称

  • body: Node, 必需

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    pretty

响应

200 (Node): 成功

201 (Node): 已创建

401: 未授权

patch 部分更新指定的 Node

HTTP 请求

PATCH /api/v1/nodes/{name}

参数

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

    Node 的名称

  • body: Patch, 必需

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    force

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

    pretty

响应

200 (Node): 成功

201 (Node): 已创建

401: 未授权

patch 部分更新指定 Node 的状态

HTTP 请求

PATCH /api/v1/nodes/{name}/status

参数

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

    Node 的名称

  • body: Patch, 必需

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    force

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

    pretty

响应

200 (Node): 成功

201 (Node): 已创建

401: 未授权

delete 删除一个 Node

HTTP 请求

DELETE /api/v1/nodes/{name}

参数

响应

200 (Status): 成功

202 (Status): 已接受

401: 未授权

deletecollection 删除 Node 集合

HTTP 请求

DELETE /api/v1/nodes

参数

响应

200 (Status): 成功

401: 未授权

此页面是自动生成的。

如果你打算报告此页面问题,请在你的问题描述中说明此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:太平洋标准时间 2025 年 4 月 24 日上午 9:14:v1.33 的 Markdown API 参考文档 (b84ec30bbb)