Documentation ¶
Overview ¶
Package cluster is the internal version of the API. +k8s:deepcopy-gen=package +groupName=cluster.karmada.io
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type APIEnablement
- type APIResource
- type AllocatableModeling
- type Cluster
- type ClusterList
- type ClusterProxyOptions
- type ClusterSpec
- type ClusterStatus
- type ClusterSyncMode
- type LocalSecretReference
- type NodeSummary
- type ResourceModel
- type ResourceModelRange
- type ResourceName
- type ResourceSummary
Constants ¶
const ( // SecretTokenKey is the name of secret token key. SecretTokenKey = "token" // SecretCADataKey is the name of secret caBundle key. SecretCADataKey = "caBundle" )
const (
// ClusterConditionReady means the cluster is healthy and ready to accept workloads.
ClusterConditionReady = "Ready"
)
Define valid conditions of a member cluster.
const GroupName = "cluster.karmada.io"
GroupName specifies the group name used to register the objects.
Variables ¶
var ( // SchemeBuilder is the scheme builder with scheme init functions to run for this API package SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is a common registration function for mapping packaged scoped group & version keys to a scheme AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type APIEnablement ¶
type APIEnablement struct { // GroupVersion is the group and version this APIEnablement is for. GroupVersion string // Resources is a list of APIResource. // +optional Resources []APIResource }
APIEnablement is a list of API resource, it is used to expose the name of the resources supported in a specific group and version.
func (*APIEnablement) DeepCopy ¶
func (in *APIEnablement) DeepCopy() *APIEnablement
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIEnablement.
func (*APIEnablement) DeepCopyInto ¶
func (in *APIEnablement) DeepCopyInto(out *APIEnablement)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type APIResource ¶
type APIResource struct { // Name is the plural name of the resource. // +required Name string // Kind is the kind for the resource (e.g. 'Deployment' is the kind for resource 'deployments') // +required Kind string }
APIResource specifies the name and kind names for the resource.
func (*APIResource) DeepCopy ¶
func (in *APIResource) DeepCopy() *APIResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIResource.
func (*APIResource) DeepCopyInto ¶
func (in *APIResource) DeepCopyInto(out *APIResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AllocatableModeling ¶ added in v1.3.0
type AllocatableModeling struct { // Grade is the index of ResourceModel. // +required Grade uint // Count is the number of nodes that own the resources delineated by this modeling. // +required Count int }
AllocatableModeling represents the number of nodes in which allocatable resources in a specific resource model grade. E.g. AllocatableModeling{Grade: 2, Count: 10} means 10 nodes belong to resource model in grade 2.
func (*AllocatableModeling) DeepCopy ¶ added in v1.3.0
func (in *AllocatableModeling) DeepCopy() *AllocatableModeling
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllocatableModeling.
func (*AllocatableModeling) DeepCopyInto ¶ added in v1.3.0
func (in *AllocatableModeling) DeepCopyInto(out *AllocatableModeling)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Cluster ¶
type Cluster struct { metav1.TypeMeta metav1.ObjectMeta // Spec represents the specification of the desired behavior of member cluster. Spec ClusterSpec // Status represents the status of member cluster. // +optional Status ClusterStatus }
Cluster represents the desire state and status of a member cluster.
func (*Cluster) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
func (*Cluster) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Cluster) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterList ¶
type ClusterList struct { metav1.TypeMeta metav1.ListMeta // Items holds a list of Cluster. Items []Cluster }
ClusterList contains a list of member cluster
func (*ClusterList) DeepCopy ¶
func (in *ClusterList) DeepCopy() *ClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
func (*ClusterList) DeepCopyInto ¶
func (in *ClusterList) DeepCopyInto(out *ClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterList) DeepCopyObject ¶
func (in *ClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterProxyOptions ¶
type ClusterProxyOptions struct { metav1.TypeMeta // Path is the URL path to use for the current proxy request Path string }
ClusterProxyOptions is the query options to a Cluster's proxy call.
func (*ClusterProxyOptions) DeepCopy ¶
func (in *ClusterProxyOptions) DeepCopy() *ClusterProxyOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProxyOptions.
func (*ClusterProxyOptions) DeepCopyInto ¶
func (in *ClusterProxyOptions) DeepCopyInto(out *ClusterProxyOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterProxyOptions) DeepCopyObject ¶
func (in *ClusterProxyOptions) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterSpec ¶
type ClusterSpec struct { // ID is the unique identifier for the cluster. // It is different from the object uid(.metadata.uid) and typically collected automatically // from member cluster during the progress of registration. // // The value is collected in order: // 1. If the registering cluster enabled ClusterProperty API and defined the cluster ID by // creating a ClusterProperty object with name 'cluster.clusterset.k8s.io', Karmada would // take the defined value in the ClusterProperty object. // See https://github.com/kubernetes-sigs/about-api for more details about ClusterProperty API. // 2. Take the uid of 'kube-system' namespace on the registering cluster. // // Please don't update this value unless you know what you are doing, because // it will/may be used to : // - uniquely identify the clusters within the Karmada system. // - compose the DNS name of multi-cluster services. // // +optional // +kubebuilder:validation:Maxlength=128000 ID string `json:"id,omitempty"` // SyncMode describes how a cluster sync resources from karmada control plane. // +required SyncMode ClusterSyncMode // The API endpoint of the member cluster. This can be a hostname, // hostname:port, IP or IP:port. // +optional APIEndpoint string // SecretRef represents the secret contains mandatory credentials to access the member cluster. // The secret should hold credentials as follows: // - secret.data.token // - secret.data.caBundle // +optional SecretRef *LocalSecretReference // ImpersonatorSecretRef represents the secret contains the token of impersonator. // The secret should hold credentials as follows: // - secret.data.token // +optional ImpersonatorSecretRef *LocalSecretReference // InsecureSkipTLSVerification indicates that the karmada control plane should not confirm the validity of the serving // certificate of the cluster it is connecting to. This will make the HTTPS connection between the karmada control // plane and the member cluster insecure. // Defaults to false. // +optional InsecureSkipTLSVerification bool // ProxyURL is the proxy URL for the cluster. // If not empty, the karmada control plane will use this proxy to talk to the cluster. // More details please refer to: https://github.com/kubernetes/client-go/issues/351 // +optional ProxyURL string // ProxyHeader is the HTTP header required by proxy server. // The key in the key-value pair is HTTP header key and value is the associated header payloads. // For the header with multiple values, the values should be separated by comma(e.g. 'k1': 'v1,v2,v3'). // +optional ProxyHeader map[string]string // Provider represents the cloud provider name of the member cluster. // +optional Provider string // Region represents the region of the member cluster locate in. // +optional Region string // Zone represents the zone of the member cluster locate in. // +optional Zone string // Taints attached to the member cluster. // Taints on the cluster have the "effect" on // any resource that does not tolerate the Taint. // +optional Taints []corev1.Taint // ResourceModels is the list of resource modeling in this cluster. Each modeling quota can be customized by the user. // Modeling name must be one of the following: cpu, memory, storage, ephemeral-storage. // If the user does not define the modeling name and modeling quota, it will be the default model. // The default model grade from 0 to 8. // When grade = 0 or grade = 1, the default model's cpu quota and memory quota is a fix value. // When grade greater than or equal to 2, each default model's cpu quota is [2^(grade-1), 2^grade), 2 <= grade <= 7 // Each default model's memory quota is [2^(grade + 2), 2^(grade + 3)), 2 <= grade <= 7 // E.g. grade 0 likes this: // - 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, the last one likes below. No matter what Max value you pass, // the meaning of Max value in this grade is infinite. You can pass any number greater than Min value. // - grade: 8 // range: // - name: "cpu" // min: 128 C // max: MAXINT // - name: "memory" // min: 1024 GB // max: MAXINT // // +optional ResourceModels []ResourceModel }
ClusterSpec defines the desired state of a member cluster.
func (*ClusterSpec) DeepCopy ¶
func (in *ClusterSpec) DeepCopy() *ClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
func (*ClusterSpec) DeepCopyInto ¶
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterStatus ¶
type ClusterStatus struct { // KubernetesVersion represents version of the member cluster. // +optional KubernetesVersion string // APIEnablements represents the list of APIs installed in the member cluster. // +optional APIEnablements []APIEnablement // Conditions is an array of current cluster conditions. // +optional Conditions []metav1.Condition // NodeSummary represents the summary of nodes status in the member cluster. // +optional NodeSummary *NodeSummary // ResourceSummary represents the summary of resources in the member cluster. // +optional ResourceSummary *ResourceSummary }
ClusterStatus contains information about the current status of a cluster updated periodically by cluster controller.
func (*ClusterStatus) DeepCopy ¶
func (in *ClusterStatus) DeepCopy() *ClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
func (*ClusterStatus) DeepCopyInto ¶
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterSyncMode ¶
type ClusterSyncMode string
ClusterSyncMode describes the mode of synchronization between member cluster and karmada control plane.
const ( // Push means that the controller on the karmada control plane will in charge of synchronization. // The controller watches resources change on karmada control plane then pushes them to member cluster. Push ClusterSyncMode = "Push" // Pull means that the controller running on the member cluster will in charge of synchronization. // The controller, as well known as 'agent', watches resources change on karmada control plane then fetches them // and applies locally on the member cluster. Pull ClusterSyncMode = "Pull" )
type LocalSecretReference ¶
type LocalSecretReference struct { // Namespace is the namespace for the resource being referenced. Namespace string // Name is the name of resource being referenced. Name string }
LocalSecretReference is a reference to a secret within the enclosing namespace.
func (*LocalSecretReference) DeepCopy ¶
func (in *LocalSecretReference) DeepCopy() *LocalSecretReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalSecretReference.
func (*LocalSecretReference) DeepCopyInto ¶
func (in *LocalSecretReference) DeepCopyInto(out *LocalSecretReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeSummary ¶
type NodeSummary struct { // TotalNum is the total number of nodes in the cluster. // +optional TotalNum int32 // ReadyNum is the number of ready nodes in the cluster. // +optional ReadyNum int32 }
NodeSummary represents the summary of nodes status in a specific cluster.
func (*NodeSummary) DeepCopy ¶
func (in *NodeSummary) DeepCopy() *NodeSummary
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeSummary.
func (*NodeSummary) DeepCopyInto ¶
func (in *NodeSummary) DeepCopyInto(out *NodeSummary)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceModel ¶ added in v1.3.0
type ResourceModel struct { // Grade is the index for the resource modeling. // +required Grade uint // Ranges describes the resource quota ranges. // +required Ranges []ResourceModelRange }
ResourceModel describes the modeling that you want to statistics.
func (*ResourceModel) DeepCopy ¶ added in v1.3.0
func (in *ResourceModel) DeepCopy() *ResourceModel
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceModel.
func (*ResourceModel) DeepCopyInto ¶ added in v1.3.0
func (in *ResourceModel) DeepCopyInto(out *ResourceModel)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceModelRange ¶ added in v1.3.0
type ResourceModelRange struct { // Name is the name for the resource that you want to categorize. // +required Name ResourceName // Min is the minimum amount of this resource represented by resource name. // Note: The Min value of first grade(usually 0) always acts as zero. // E.g. [1,2) equal to [0,2). // +required Min resource.Quantity // Max is the maximum amount of this resource represented by resource name. // Special Instructions, for the last ResourceModelRange, which no matter what Max value you pass, // the meaning is infinite. Because for the last item, // any ResourceModelRange's quota larger than Min will be classified to the last one. // Of course, the value of the Max field is always greater than the value of the Min field. // It should be true in any case. // +required Max resource.Quantity }
ResourceModelRange describes the detail of each modeling quota that ranges from min to max. Please pay attention, by default, the value of min can be inclusive, and the value of max cannot be inclusive. E.g. in an interval, min = 2, max =10 is set, which means the interval [2,10). This rule ensure that all intervals have the same meaning. If the last interval is +∞, it is definitely unreachable. Therefore, we define the right interval as the open interval. For a valid interval, the value on the right is greater than the value on the left, in other words, max must be greater than min. It is strongly recommended that the [Min, Max) of all ResourceModelRanges can make a continuous interval.
func (*ResourceModelRange) DeepCopy ¶ added in v1.3.0
func (in *ResourceModelRange) DeepCopy() *ResourceModelRange
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceModelRange.
func (*ResourceModelRange) DeepCopyInto ¶ added in v1.3.0
func (in *ResourceModelRange) DeepCopyInto(out *ResourceModelRange)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceName ¶ added in v1.3.0
type ResourceName string
ResourceName is the name identifying various resources in a ResourceList.
const ( // ResourceCPU in cores. (e,g. 500m = .5 cores) ResourceCPU ResourceName = "cpu" // ResourceMemory in bytes. (e,g. 500Gi = 500GiB = 500 * 1024 * 1024 * 1024) ResourceMemory ResourceName = "memory" // ResourceStorage is volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) ResourceStorage ResourceName = "storage" // ResourceEphemeralStorage is local ephemeral storage, in bytes. (e,g. 500Gi = 500GiB = 500 * 1024 * 1024 * 1024) // The resource name for ResourceEphemeralStorage is alpha and it can change across releases. ResourceEphemeralStorage ResourceName = "ephemeral-storage" )
Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters, with the -, _, and . characters allowed anywhere, except the first or last character. The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than camel case, separating compound words. Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name.
type ResourceSummary ¶
type ResourceSummary struct { // Allocatable represents the resources of a cluster that are available for scheduling. // Total amount of allocatable resources on all nodes. // +optional Allocatable corev1.ResourceList // Allocating represents the resources of a cluster that are pending for scheduling. // Total amount of required resources of all Pods that are waiting for scheduling. // +optional Allocating corev1.ResourceList // Allocated represents the resources of a cluster that have been scheduled. // Total amount of required resources of all Pods that have been scheduled to nodes. // +optional Allocated corev1.ResourceList // AllocatableModelings represents the statistical resource modeling. // +optional AllocatableModelings []AllocatableModeling }
ResourceSummary represents the summary of resources in the member cluster.
func (*ResourceSummary) DeepCopy ¶
func (in *ResourceSummary) DeepCopy() *ResourceSummary
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSummary.
func (*ResourceSummary) DeepCopyInto ¶
func (in *ResourceSummary) DeepCopyInto(out *ResourceSummary)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.