Cluster v1alpha1
apiVersion: cluster.karmada.io/v1alpha1
import "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
Cluster
Cluster 表示成员集群的预期状态和当前状态。
-
apiVersion: cluster.karmada.io/v1alpha1
-
kind: Cluster
-
metadata (ObjectMeta)
-
spec (ClusterSpec),必选
Spec 表示成员集群的规范。
-
status (ClusterStatus)
Status 表示成员集群的状态。
ClusterSpec
ClusterSpec 定义成员集群的预期状态。
-
syncMode(string),必选
SyncMode 描述集群从 Karmada 控制面同步资源的方式。
-
apiEndpoint (string)
成员集群的 API 端点。取值包括 hostname、hostname:port、IP 和 IP:port。
-
id (string)
ID 是集群的唯一标识符。它不同于 uid(.metadata.uid),通常会在注册过程中自动从成员集群收集。
收集顺序如下:
-
如果注册集群启用了 ClusterProperty API 并通过创建名为 cluster.clusterset.k8s.io 的 ClusterProperty 对象来定义集群 ID,则 Karmada 将在 ClusterProperty 对象中获取定义的值。有关 ClusterProperty API 的更多详情,请浏览:https://github.com/kubernetes-sigs/about-api
-
在注册集群上获取命名空间 kube-system 的 UID。
此 UID 有以下用途:
- 是识别 Karmada 系统中的集群的唯一标识;
- 组成多集群服务的 DNS 名称。 一般情况下,不更新此 UID ,请谨慎操作。
-
-
impersonatorSecretRef (LocalSecretReference)
ImpersonatorSecretRef 表示包含用于伪装的令牌的密钥。密钥应包含以下凭据:- secret.data.token
LocalSecretReference 是指封闭命名空间内的密钥引用。
-
impersonatorSecretRef.name (string),必选
Name 指被引用资源的名称。
-
impersonatorSecretRef.namespace (string),必选
Namespace 指所引用资源的命名空间。
-
-
insecureSkipTLSVerification (boolean)
InsecureSkipTLSVerification 表示 Karmada 控制平面不应确认其所连接的集群的服务证书的有效性,这样会导致 Karmada 控制面与成员集群之间的 HTTPS 连接不安全。默认值为 false。
-
provider (string)
Provider 表示成员集群的云提供商名称。
-
proxyHeader (map[string]string)
ProxyHeader 是代理服务器所需的 HTTP 头。其中,键为 HTTP 头键,值为HTTP 头的负载。如果 HTTP 头有多个值,所有的值使用逗号分隔(例如,k1: v1,v2,v3)。
-
proxyURL (string)
ProxyURL 是集群的代理URL。如果不为空,则 Karmada 控制面会使用此代理与集群通信。更多详情,请参考:https://github.com/kubernetes/client-go/issues/351
-
region (string)
Region 表示成员集群所在的区域。
-
resourceModels ([]ResourceModel)
ResourceModels 是集群中资源建模的列表。每个建模配额都可以由用户自定义。建模名称必须是 cpu、memory、storage 或 ephemeral-storage。如果用户未定义建模名称和建模配额,将使用默认模型。默认模型的等级为 0 到 8。当 grade 设置为 0 或 1 时,默认模型的 CPU 配额和内存配额为固定值。当 grade 大于或等于 2 时,每个默认模型的 CPU 配额为:[2^(grade-1), 2^grade), 2 <= grade <= 7。每个默认模型的内存配额为:[2^(grade + 2), 2^(grade + 3)), 2 <= grade <= 7。例如:
-
grade: 0 ranges:
- name: "cpu" min: 0 C max: 1 C
- name: "memory" min: 0 GB max: 4 GB
-
grade: 1 ranges:
- name: "cpu" min: 1 C max: 2 C
- name: "memory" min: 4 GB max: 16 GB
-
grade: 2 ranges:
- name: "cpu" min: 2 C max: 4 C
- name: "memory" min: 16 GB max: 32 GB
-
grade: 7 range:
- name: "cpu" min: 64 C max: 128 C
- name: "memory" min: 512 GB max: 1024 GB
如果 grade 为 8,无论设置的 Max 值为多少,该等级中 Max 值的含义都表示无限。因此,可以设置任何大于 Min 值的数字。
-
-
grade: 8 range:
- name: "cpu" min: 128 C max: MAXINT
- name: "memory" min: 1024 GB max: MAXINT
ResourceModel 描述要统计的建模。
-
resourceModels.grade (int32),必选
Grade 是资源建模的索引。
-
resourceModels.ranges ([]ResourceModelRange),必选
Ranges 描述资源配额范围。
ResourceModelRange 描述每个建模配额从 min 到 max 的详细信息。注意:默认情况下,包含 min 值,但不包含 max 值。例如,设置 min = 2,max =10,则间隔为 [2, 10)。此规则能确保所有间隔具有相同的含义。如果最后一个间隔是无限的,肯定无法实现。因此,我们将正确的间隔定义为开放间隔。对于有效的间隔,右侧的值大于左侧的值,即 max 值 必须大于 min 值。建议所有 ResourceModelRanges 的 [Min, Max) 都可以是连续的间隔。
-
resourceModels.ranges.max (Quantity),必选
Max 指定资源的最大数量,由资源名称表示。特别说明,对于最后一个 ResourceModelRange ,无论传递的 Max 值是什么,都表示无限。因为对于最后一项,任何大于 Min 值的 ResourceModelRange 配额都将归为最后一项。任何情况下,Max 的值都大于 Min 的值。
-
resourceModels.ranges.min (Quantity),必选
Min 指定资源的最小数量,由资源名称表示。注意:等级 1 的 Min 值(通常为0)始终为零,例如,[1,2)等同于[0, 2)。
-
resourceModels.ranges.name (string),必选
Name 是要分类的资源的名称。
-
-
secretRef (LocalSecretReference)
SecretRef 表示密钥包含访问成员集群的强制性凭据。取值包括:- secret.data.token - secret.data.caBundle
LocalSecretReference 指封闭命名空间内的密钥引用。
-
secretRef.name (string),必选
Name 指所引用资源的名称。
-
secretRef.namespace (string),必选
Namespace 指所引用资源的命名空间。
-
-
taints ([]Taint)
附加到成员集群的污点。集群的污点对任何不容忍该污点的资源都有“影响”。
此污点所在的节点对任何不容忍污点的 Pod 都有“影响”。
-
taints.effect (string),必选
必选。污点对不容忍该污点的 Pod 的影响。有效取值包括 NoSchedule、PreferNoSchedule 和 NoExecute。
枚举值包括:
"NoExecute":任何不能容忍该污点的 Pod 都会被驱逐。当前由 NodeController 强制执行。"NoSchedule":如果新 pod 无法容忍该污点,不允许新 pod 调度到节点上,但允许由 Kubelet 调度但不需要调度器启动的所有 pod ,并允许节点上已存在的 Pod 继续运行。由调度器强制执行。"PreferNoSchedule":和 TaintEffectNoSchedule 相似,不同的是调度器尽量避免将新 Pod 调度到具有该污点的节点上,除非没有其他节点可调度。由调度器强制执行。
-
taints.key (string),必选
必选。应用到节点上的污点的键。
-
taints.timeAdded (Time)
TimeAdded 表示添加污点的时间。仅适用于 NoExecute 的污点。
Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。
-
taints.value (string)
与污点键对应的污点值。
-
-
zone (string)
Zone 表示成员集群所在的区域。Deprecated 表示 Karmada 从未使用过该字段。为了向后兼容,不会从 v1alpha1 中删除该字段,请改用 Zones。
-
zones ([]string)
Zones 表示成员集群的故障区域(也称为可用区域)。这些区域以切片的形式显示,这样集群便可跨多个故障区域运行。欲了解在多个区域运行 Kubernetes的更多细节,请浏览:https://kubernetes.io/docs/setup/best-practices/multiple-zones/
ClusterStatus
ClusterStatus 包含有关集群当前状态的信息,由集群控制器定期更新。
-
apiEnablements ([]APIEnablement)
APIEnablements 表示成员集群的 API 列表。
APIEnablement 表示 API 列表,用于公开特定群组和版本中支持的资源的名称。
-
apiEnablements.groupVersion (string),必选
GroupVersion 是此 APIEnablement 的群组和版本。
-
apiEnablements.resources ([]APIResource)
Resources 是 APIResource 的列表。
APIResource 指定资源的名称和类别。
-
apiEnablements.resources.kind (string),必选
Kind 是资源的类别(例如,资源 deployments 的类别是 Deployment)
-
apiEnablements.resources.name (string),必选
Name 表示资源的复数名称。
-
-
-
conditions ([]Condition)
Conditions 表示当前集群的状况(数组结构)。
Condition 包含此 API 资源当前状态某个方面的详细信息。
-
conditions.lastTransitionTime (Time),必选
lastTransitionTime 是状况最近一次从一种状态转换到另一种状态的时间。这种变化通常出现在下层状况发生变化的时候。如果无法了解下层状况变化,使用 API 字段更改的时间也是可以接受的。
Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。time 包的许多工厂方法提供了包装器。
-
conditions.message(string),必选
message 是有关转换的详细信息(人类可读消息)。可以是空字符串。
-
conditions.reason(string),必选
reason 是一个程序标识符,表明状况最后一次转换的原因。特定状况类型的生产者可以定义该字段的预期值和含义,以及这些值是否可被视为有保证的 API。取值应该是一个 CamelCase 字符串。此字段不能为空。
-
conditions.status(string),必选
status 表示状况的状态。取值为True、False或Unknown。
-
conditions.type(string),必选
type 表示状况的类型,采用 CamelCase 或 foo.example.com/CamelCase 形式。
-
conditions.observedGeneration (int64)
observedGeneration 表示设置状况时所基于的 .metadata.generation。例如,如果 .metadata.generation 为 12,但 .status.conditions[x].observedGeneration 为 9,则状况相对于实例的当前状态已过期。
-
-
kubernetesVersion (string)
KubernetesVersion 表示成员集群的版本。
-
nodeSummary (NodeSummary)
NodeSummary 表示成员集群中节点状态的汇总。
NodeSummary 表示特定集群中节点状态的汇总。
-
nodeSummary.readyNum (int32)
ReadyNum 指集群中就绪节点的数量。
-
nodeSummary.totalNum (int32)
TotalNum 指集群中的节点总数。
-
-
resourceSummary (ResourceSummary)
ResourceSummary 表示成员集群中资源的汇总。
ResourceSummary 表示成员集群中资源的汇总。
-
resourceSummary.allocatable (map[string]Quantity)
Allocatable 表示集群中可用于调度的资源,是所有节点上可分配资源的总量。
-
resourceSummary.allocatableModelings ([]AllocatableModeling)
AllocatableModelings 表示统计资源建模。
AllocatableModeling 表示特定资源模型等级中可分配资源的节点数。例如,AllocatableModeling[Grade: 2, Count: 10] 表示有 10 个节点属于等级为 2 的资源模型。
-
resourceSummary.allocatableModelings.count (int32),必选
Count 统计能使用此建模所划定的资源的节点数。
-
resourceSummary.allocatableModelings.grade (int32),必选
Grade 是 ResourceModel 的索引。
-
-
resourceSummary.allocated (map[string]Quantity)
Allocated 表示集群中已调度的资源,是已调度到节点的所有 Pod 所需资源的总和。
-
resourceSummary.allocating (map[string]Quantity)
Allocating 表示集群中待调度的资源,是所有等待调度的 Pod 所需资源的总和。
-
ClusterList
ClusterList 罗列成员集群。
-
apiVersion: cluster.karmada.io/v1alpha1
-
kind: ClusterList
-
metadata (ListMeta)
-
items ([]Cluster),必选
Items 中包含 Cluster 列表。
操作
get:查询指定的集群
HTTP 请求
GET /apis/cluster.karmada.io/v1alpha1/clusters/{name}
参数
-
name(路径参数):string,必选
Cluster 名称
-
pretty(查询参数):string
响应
200 (Cluster): OK