Documentation
¶
Overview ¶
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.sh
Index ¶
- Constants
- Variables
- func IsRestrictedLabelDomain(key string) bool
- type Constraints
- func (in *Constraints) DeepCopy() *Constraints
- func (in *Constraints) DeepCopyInto(out *Constraints)
- func (c *Constraints) Default(ctx context.Context)
- func (c *Constraints) Tighten(pod *v1.Pod) *Constraints
- func (c *Constraints) Validate(ctx context.Context) (errs *apis.FieldError)
- func (c *Constraints) ValidatePod(pod *v1.Pod) error
- type KubeletConfiguration
- type Limits
- type Provider
- type Provisioner
- func (in *Provisioner) DeepCopy() *Provisioner
- func (in *Provisioner) DeepCopyInto(out *Provisioner)
- func (in *Provisioner) DeepCopyObject() runtime.Object
- func (p *Provisioner) GetConditions() apis.Conditions
- func (p *Provisioner) SetConditions(conditions apis.Conditions)
- func (p *Provisioner) SetDefaults(ctx context.Context)
- func (p *Provisioner) StatusConditions() apis.ConditionManager
- func (p *Provisioner) Validate(ctx context.Context) (errs *apis.FieldError)
- type ProvisionerList
- type ProvisionerSpec
- type ProvisionerStatus
- type Requirements
- func (r Requirements) Add(requirements ...v1.NodeSelectorRequirement) Requirements
- func (r Requirements) Architectures() stringsets.String
- func (r Requirements) CapacityTypes() stringsets.String
- func (r Requirements) Compatible(requirements Requirements) (errs error)
- func (in *Requirements) DeepCopy() *Requirements
- func (in *Requirements) DeepCopyInto(out *Requirements)
- func (r Requirements) Get(key string) sets.Set
- func (r Requirements) InstanceTypes() stringsets.String
- func (r Requirements) Keys() stringsets.String
- func (r *Requirements) MarshalJSON() ([]byte, error)
- func (r Requirements) OperatingSystems() stringsets.String
- func (r *Requirements) UnmarshalJSON(b []byte) error
- func (r Requirements) Validate() (errs error)
- func (r Requirements) WellKnown() Requirements
- func (r Requirements) Zones() stringsets.String
- type Taints
Constants ¶
const ( // Active is a condition implemented by all resources. It indicates that the // controller is able to take actions: it's correctly configured, can make // necessary API calls, and isn't disabled. Active apis.ConditionType = "Active" )
Variables ¶
var ( SupportedNodeSelectorOps sets.String = sets.NewString(string(v1.NodeSelectorOpIn), string(v1.NodeSelectorOpNotIn), string(v1.NodeSelectorOpExists), string(v1.NodeSelectorOpDoesNotExist)) SupportedProvisionerOps sets.String = sets.NewString(string(v1.NodeSelectorOpIn), string(v1.NodeSelectorOpNotIn), string(v1.NodeSelectorOpExists)) )
var ( DefaultHook = func(ctx context.Context, constraints *Constraints) {} ValidateHook = func(ctx context.Context, constraints *Constraints) *apis.FieldError { return nil } )
var ( Group = "karpenter.sh" ExtensionsGroup = "extensions." + Group SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: "v1alpha5"} SchemeBuilder = runtime.NewSchemeBuilder(func(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, &Provisioner{}, &ProvisionerList{}, ) metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil }) ProvisionerNameLabelKey = Group + "/provisioner-name" NotReadyTaintKey = Group + "/not-ready" DoNotEvictPodAnnotationKey = Group + "/do-not-evict" EmptinessTimestampAnnotationKey = Group + "/emptiness-timestamp" TerminationFinalizer = Group + "/termination" )
var ( ArchitectureAmd64 = "amd64" ArchitectureArm64 = "arm64" OperatingSystemLinux = "linux" // RestrictedLabels are injected by Cloud Providers RestrictedLabels = stringsets.NewString( EmptinessTimestampAnnotationKey, v1.LabelHostname, ) // AllowedLabelDomains are domains that may be restricted, but that is allowed because // they are not used in a context where they may be passed as argument to kubelet. // AllowedLabelDomains are evaluated before RestrictedLabelDomains AllowedLabelDomains = stringsets.NewString( "kops.k8s.io", ) // These are either prohibited by the kubelet or reserved by karpenter // They are evaluated after AllowedLabelDomains KarpenterLabelDomain = "karpenter.sh" RestrictedLabelDomains = stringsets.NewString( "kubernetes.io", "k8s.io", KarpenterLabelDomain, ) LabelCapacityType = KarpenterLabelDomain + "/capacity-type" // WellKnownLabels supported by karpenter WellKnownLabels = stringsets.NewString( v1.LabelTopologyZone, v1.LabelInstanceTypeStable, v1.LabelArchStable, v1.LabelOSStable, LabelCapacityType, v1.LabelHostname, ) // NormalizedLabels translate aliased concepts into the controller's // WellKnownLabels. Pod requirements are translated for compatibility, // however, Provisioner labels are still restricted to WellKnownLabels. // Additional labels may be injected by cloud providers. NormalizedLabels = map[string]string{ v1.LabelFailureDomainBetaZone: v1.LabelTopologyZone, "beta.kubernetes.io/arch": v1.LabelArchStable, "beta.kubernetes.io/os": v1.LabelOSStable, v1.LabelInstanceType: v1.LabelInstanceTypeStable, v1.LabelFailureDomainBetaRegion: v1.LabelTopologyRegion, } // IgnoredLables are not considered in scheduling decisions // and prevent validation errors when specified IgnoredLabels = stringsets.NewString( v1.LabelTopologyRegion, ) )
Functions ¶
func IsRestrictedLabelDomain ¶
Types ¶
type Constraints ¶
type Constraints struct { // Labels are layered with Requirements and applied to every node. //+optional Labels map[string]string `json:"labels,omitempty"` // Taints will be applied to every node launched by the Provisioner. If // specified, the provisioner will not provision nodes for pods that do not // have matching tolerations. Additional taints will be created that match // pod tolerations on a per-node basis. // +optional Taints Taints `json:"taints,omitempty"` // Requirements are layered with Labels and applied to every node. Requirements Requirements `json:"requirements,inline,omitempty"` // KubeletConfiguration are options passed to the kubelet when provisioning nodes //+optional KubeletConfiguration KubeletConfiguration `json:"kubeletConfiguration,omitempty"` // Provider contains fields specific to your cloudprovider. // +kubebuilder:pruning:PreserveUnknownFields Provider *Provider `json:"provider,omitempty"` }
Constraints are applied to all nodes created by the provisioner.
func (*Constraints) DeepCopy ¶
func (in *Constraints) DeepCopy() *Constraints
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Constraints.
func (*Constraints) DeepCopyInto ¶
func (in *Constraints) DeepCopyInto(out *Constraints)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Constraints) Default ¶
func (c *Constraints) Default(ctx context.Context)
Default the constraints
func (*Constraints) Tighten ¶
func (c *Constraints) Tighten(pod *v1.Pod) *Constraints
func (*Constraints) Validate ¶
func (c *Constraints) Validate(ctx context.Context) (errs *apis.FieldError)
Validate the constraints
func (*Constraints) ValidatePod ¶
func (c *Constraints) ValidatePod(pod *v1.Pod) error
ValidatePod returns an error if the pod's requirements are not met by the constraints
type KubeletConfiguration ¶ added in v0.5.3
type KubeletConfiguration struct { // clusterDNS is a list of IP addresses for the cluster DNS server. // Note that not all providers may use all addresses. //+optional ClusterDNS []string `json:"clusterDNS,omitempty"` }
KubeletConfiguration defines args to be used when configuring kubelet on provisioned nodes. They are a subset of the upstream types, recognizing not all options may be supported. Wherever possible, the types and names should reflect the upstream kubelet types.
func (*KubeletConfiguration) DeepCopy ¶ added in v0.5.3
func (in *KubeletConfiguration) DeepCopy() *KubeletConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfiguration.
func (*KubeletConfiguration) DeepCopyInto ¶ added in v0.5.3
func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Limits ¶
type Limits struct { // Resources contains all the allocatable resources that Karpenter supports for limiting. Resources v1.ResourceList `json:"resources,omitempty"` }
Limits define bounds on the resources being provisioned by Karpenter
func (*Limits) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limits.
func (*Limits) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Limits) ExceededBy ¶
func (l *Limits) ExceededBy(resources v1.ResourceList) error
type Provider ¶ added in v0.6.0
type Provider = runtime.RawExtension
+kubebuilder:object:generate=false
type Provisioner ¶
type Provisioner struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ProvisionerSpec `json:"spec,omitempty"` Status ProvisionerStatus `json:"status,omitempty"` }
Provisioner is the Schema for the Provisioners API +kubebuilder:object:root=true +kubebuilder:resource:path=provisioners,scope=Cluster +kubebuilder:subresource:status
func (*Provisioner) DeepCopy ¶
func (in *Provisioner) DeepCopy() *Provisioner
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Provisioner.
func (*Provisioner) DeepCopyInto ¶
func (in *Provisioner) DeepCopyInto(out *Provisioner)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Provisioner) DeepCopyObject ¶
func (in *Provisioner) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Provisioner) GetConditions ¶
func (p *Provisioner) GetConditions() apis.Conditions
func (*Provisioner) SetConditions ¶
func (p *Provisioner) SetConditions(conditions apis.Conditions)
func (*Provisioner) SetDefaults ¶
func (p *Provisioner) SetDefaults(ctx context.Context)
SetDefaults for the provisioner
func (*Provisioner) StatusConditions ¶
func (p *Provisioner) StatusConditions() apis.ConditionManager
func (*Provisioner) Validate ¶
func (p *Provisioner) Validate(ctx context.Context) (errs *apis.FieldError)
type ProvisionerList ¶
type ProvisionerList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []Provisioner `json:"items"` }
ProvisionerList contains a list of Provisioner +kubebuilder:object:root=true
func (*ProvisionerList) DeepCopy ¶
func (in *ProvisionerList) DeepCopy() *ProvisionerList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerList.
func (*ProvisionerList) DeepCopyInto ¶
func (in *ProvisionerList) DeepCopyInto(out *ProvisionerList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ProvisionerList) DeepCopyObject ¶
func (in *ProvisionerList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ProvisionerSpec ¶
type ProvisionerSpec struct { // Constraints are applied to all nodes launched by this provisioner. Constraints `json:",inline"` // TTLSecondsAfterEmpty is the number of seconds the controller will wait // before attempting to delete a node, measured from when the node is // detected to be empty. A Node is considered to be empty when it does not // have pods scheduled to it, excluding daemonsets. // // Termination due to underutilization is disabled if this field is not set. // +optional TTLSecondsAfterEmpty *int64 `json:"ttlSecondsAfterEmpty,omitempty"` // TTLSecondsUntilExpired is the number of seconds the controller will wait // before terminating a node, measured from when the node is created. This // is useful to implement features like eventually consistent node upgrade, // memory leak protection, and disruption testing. // // Termination due to expiration is disabled if this field is not set. // +optional TTLSecondsUntilExpired *int64 `json:"ttlSecondsUntilExpired,omitempty"` // Limits define a set of bounds for provisioning capacity. Limits Limits `json:"limits,omitempty"` }
ProvisionerSpec is the top level provisioner specification. Provisioners launch nodes in response to pods that are unschedulable. A single provisioner is capable of managing a diverse set of nodes. Node properties are determined from a combination of provisioner and pod scheduling constraints.
func (*ProvisionerSpec) DeepCopy ¶
func (in *ProvisionerSpec) DeepCopy() *ProvisionerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerSpec.
func (*ProvisionerSpec) DeepCopyInto ¶
func (in *ProvisionerSpec) DeepCopyInto(out *ProvisionerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ProvisionerStatus ¶
type ProvisionerStatus struct { // LastScaleTime is the last time the Provisioner scaled the number // of nodes // +optional // +kubebuilder:validation:Format="date-time" LastScaleTime *apis.VolatileTime `json:"lastScaleTime,omitempty"` // Conditions is the set of conditions required for this provisioner to scale // its target, and indicates whether or not those conditions are met. // +optional Conditions apis.Conditions `json:"conditions,omitempty"` // Resources is the list of resources that have been provisioned. Resources v1.ResourceList `json:"resources,omitempty"` }
ProvisionerStatus defines the observed state of Provisioner
func (*ProvisionerStatus) DeepCopy ¶
func (in *ProvisionerStatus) DeepCopy() *ProvisionerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProvisionerStatus.
func (*ProvisionerStatus) DeepCopyInto ¶
func (in *ProvisionerStatus) DeepCopyInto(out *ProvisionerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Requirements ¶
type Requirements struct { // Requirements are layered with Labels and applied to every node. Requirements []v1.NodeSelectorRequirement `json:"requirements,omitempty"` // contains filtered or unexported fields }
Requirements are an alias type that wrap []v1.NodeSelectorRequirement and include an efficient set representation under the hood. Since its underlying types are slices and maps, this type should not be used as a pointer.
func NewLabelRequirements ¶ added in v0.6.1
func NewLabelRequirements(labels map[string]string) Requirements
NewLabelRequirements constructs requriements from labels
func NewPodRequirements ¶ added in v0.6.1
func NewPodRequirements(pod *v1.Pod) Requirements
NewPodRequirements constructs requirements from a pod
func NewRequirements ¶ added in v0.6.1
func NewRequirements(requirements ...v1.NodeSelectorRequirement) Requirements
NewRequirements constructs requiremnets from NodeSelectorRequirements
func (Requirements) Add ¶ added in v0.5.4
func (r Requirements) Add(requirements ...v1.NodeSelectorRequirement) Requirements
Add function returns a new Requirements object with new requirements inserted.
func (Requirements) Architectures ¶
func (r Requirements) Architectures() stringsets.String
func (Requirements) CapacityTypes ¶
func (r Requirements) CapacityTypes() stringsets.String
func (Requirements) Compatible ¶ added in v0.6.1
func (r Requirements) Compatible(requirements Requirements) (errs error)
Compatible ensures the provided requirements can be met. It is non-commutative (i.e., A.Compatible(B) != B.Compatible(A))
func (*Requirements) DeepCopy ¶
func (in *Requirements) DeepCopy() *Requirements
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Requirements.
func (*Requirements) DeepCopyInto ¶
func (in *Requirements) DeepCopyInto(out *Requirements)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (Requirements) Get ¶ added in v0.6.1
func (r Requirements) Get(key string) sets.Set
Get returns the sets of values allowed by all included requirements following a denylist method. Values are allowed except specified
func (Requirements) InstanceTypes ¶
func (r Requirements) InstanceTypes() stringsets.String
func (Requirements) Keys ¶
func (r Requirements) Keys() stringsets.String
Keys returns unique set of the label keys from the requirements
func (*Requirements) MarshalJSON ¶ added in v0.6.1
func (r *Requirements) MarshalJSON() ([]byte, error)
func (Requirements) OperatingSystems ¶ added in v0.5.2
func (r Requirements) OperatingSystems() stringsets.String
func (*Requirements) UnmarshalJSON ¶ added in v0.6.1
func (r *Requirements) UnmarshalJSON(b []byte) error
func (Requirements) Validate ¶ added in v0.6.1
func (r Requirements) Validate() (errs error)
Validate validates the feasibility of the requirements.
func (Requirements) WellKnown ¶
func (r Requirements) WellKnown() Requirements
func (Requirements) Zones ¶
func (r Requirements) Zones() stringsets.String
type Taints ¶
Taints is a decorated alias type for []v1.Taint
func (Taints) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Taints.
func (Taints) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.