Documentation
¶
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type AutoScalingConfig
- type CliqueStartupType
- type ErrorCode
- type HeadlessServiceConfig
- type LastError
- type LastOperation
- type LastOperationState
- type LastOperationType
- type NetworkPackGroupConfig
- type PodClique
- type PodCliqueList
- type PodCliqueRollingUpdateProgress
- type PodCliqueScalingGroup
- type PodCliqueScalingGroupConfig
- type PodCliqueScalingGroupList
- type PodCliqueScalingGroupReplicaRollingUpdateProgress
- type PodCliqueScalingGroupRollingUpdateProgress
- type PodCliqueScalingGroupSpec
- type PodCliqueScalingGroupStatus
- type PodCliqueSet
- type PodCliqueSetList
- type PodCliqueSetReplicaRollingUpdateProgress
- type PodCliqueSetRollingUpdateProgress
- type PodCliqueSetSpec
- type PodCliqueSetStatus
- type PodCliqueSetTemplateSpec
- type PodCliqueSpec
- type PodCliqueStatus
- type PodCliqueTemplateSpec
- type PodGangPhase
- type PodGangStatus
- type PodsSelectedToUpdate
- type SchedulingPolicyConfig
Constants ¶
const (
// GroupName is the name of the group for all resources defined in this package.
GroupName = "grove.io"
)
Variables ¶
var ( // SchemeGroupVersion is group version used to register these objects SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is a reference to the Scheme Builder's AddToScheme function. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type AutoScalingConfig ¶
type AutoScalingConfig struct {
// MinReplicas is the lower limit for the number of replicas for the target resource.
// It will be used by the horizontal pod autoscaler to determine the minimum number of replicas to scale-in to.
// +optional
MinReplicas *int32 `json:"minReplicas,omitempty"`
// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.
// It cannot be less that minReplicas.
MaxReplicas int32 `json:"maxReplicas"`
// Metrics contains the specifications for which to use to calculate the
// desired replica count (the maximum replica count across all metrics will
// be used). The desired replica count is calculated multiplying the
// ratio between the target value and the current value by the current
// number of pods. Ergo, metrics used must decrease as the pod count is
// increased, and vice versa. See the individual metric source types for
// more information about how each type of metric must respond.
// If not set, the default metric will be set to 80% average CPU utilization.
// +listType=atomic
// +optional
Metrics []autoscalingv2.MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"`
}
AutoScalingConfig defines the configuration for the horizontal pod autoscaler.
func (*AutoScalingConfig) DeepCopy ¶
func (in *AutoScalingConfig) DeepCopy() *AutoScalingConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoScalingConfig.
func (*AutoScalingConfig) DeepCopyInto ¶
func (in *AutoScalingConfig) DeepCopyInto(out *AutoScalingConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CliqueStartupType ¶
type CliqueStartupType string
CliqueStartupType defines the order in which each PodClique is started. +kubebuilder:validation:Enum={CliqueStartupTypeAnyOrder,CliqueStartupTypeInOrder,CliqueStartupTypeExplicit}
const ( // CliqueStartupTypeAnyOrder defines that the cliques can be started in any order. This allows for concurrent starts of cliques. // This is the default CliqueStartupType. CliqueStartupTypeAnyOrder CliqueStartupType = "CliqueStartupTypeAnyOrder" // CliqueStartupTypeInOrder defines that the cliques should be started in the order they are defined in the PodGang Cliques slice. CliqueStartupTypeInOrder CliqueStartupType = "CliqueStartupTypeInOrder" // CliqueStartupTypeExplicit defines that the cliques should be started after the cliques defined in PodClique.StartsAfter have started. CliqueStartupTypeExplicit CliqueStartupType = "CliqueStartupTypeExplicit" )
type ErrorCode ¶
type ErrorCode string
ErrorCode is a custom error code that uniquely identifies an error.
type HeadlessServiceConfig ¶
type HeadlessServiceConfig struct {
// PublishNotReadyAddresses if set to true will publish the DNS records of pods even if the pods are not ready.
// if not set, it defaults to true.
// +kubebuilder:default=true
PublishNotReadyAddresses bool `json:"publishNotReadyAddresses"`
}
HeadlessServiceConfig defines the config options for the headless service.
func (*HeadlessServiceConfig) DeepCopy ¶
func (in *HeadlessServiceConfig) DeepCopy() *HeadlessServiceConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadlessServiceConfig.
func (*HeadlessServiceConfig) DeepCopyInto ¶
func (in *HeadlessServiceConfig) DeepCopyInto(out *HeadlessServiceConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastError ¶
type LastError struct {
// Code is the error code that uniquely identifies the error.
Code ErrorCode `json:"code"`
// Description is a human-readable description of the error.
Description string `json:"description"`
// ObservedAt is the time at which the error was observed.
ObservedAt metav1.Time `json:"observedAt"`
}
LastError captures the last error observed by the controller when reconciling an object.
func (*LastError) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LastError.
func (*LastError) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastOperation ¶
type LastOperation struct {
// Type is the type of the last operation.
Type LastOperationType `json:"type"`
// State is the state of the last operation.
State LastOperationState `json:"state"`
// Description is a human-readable description of the last operation.
Description string `json:"description"`
// LastUpdateTime is the time at which the last operation was updated.
LastUpdateTime metav1.Time `json:"lastUpdateTime"`
}
LastOperation captures the last operation done by the respective reconciler on the PodCliqueSet.
func (*LastOperation) DeepCopy ¶
func (in *LastOperation) DeepCopy() *LastOperation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LastOperation.
func (*LastOperation) DeepCopyInto ¶
func (in *LastOperation) DeepCopyInto(out *LastOperation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastOperationState ¶
type LastOperationState string
LastOperationState is a string alias for the state of the last operation.
const ( // LastOperationStateProcessing indicates that the last operation is in progress. LastOperationStateProcessing LastOperationState = "Processing" // LastOperationStateSucceeded indicates that the last operation succeeded. LastOperationStateSucceeded LastOperationState = "Succeeded" // LastOperationStateError indicates that the last operation completed with errors and will be retried. LastOperationStateError LastOperationState = "Error" )
type LastOperationType ¶
type LastOperationType string
LastOperationType is a string alias for the type of the last operation.
const ( // LastOperationTypeReconcile indicates that the last operation was a reconcile operation. LastOperationTypeReconcile LastOperationType = "Reconcile" // LastOperationTypeDelete indicates that the last operation was a delete operation. LastOperationTypeDelete LastOperationType = "Delete" )
type NetworkPackGroupConfig ¶
type NetworkPackGroupConfig struct {
// CliqueNames is the list of PodClique names that are part of the network pack group.
CliqueNames []string `json:"cliqueNames"`
}
NetworkPackGroupConfig indicates that all the Pods belonging to the constituent PodCliques should be optimally placed w.r.t cluster's network topology. If a constituent PodClique belongs to a PodCliqueScalingGroup then ensure that all constituent PodCliques of that PodCliqueScalingGroup are also part of the NetworkPackGroupConfig.
func (*NetworkPackGroupConfig) DeepCopy ¶
func (in *NetworkPackGroupConfig) DeepCopy() *NetworkPackGroupConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPackGroupConfig.
func (*NetworkPackGroupConfig) DeepCopyInto ¶
func (in *NetworkPackGroupConfig) DeepCopyInto(out *NetworkPackGroupConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodClique ¶
type PodClique struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec defines the specification of a PodClique.
Spec PodCliqueSpec `json:"spec"`
// Status defines the status of a PodClique.
Status PodCliqueStatus `json:"status,omitempty"`
}
PodClique is a set of pods running the same image. TODO: @renormalize expand on this.
func (*PodClique) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodClique.
func (*PodClique) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodClique) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodClique) SetLastErrors ¶
SetLastErrors sets the last errors observed by the controller when reconciling the PodClique.
type PodCliqueList ¶
type PodCliqueList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
// Items is a slice of PodClique.
Items []PodClique `json:"items"`
}
PodCliqueList is a list of PodClique's.
func (*PodCliqueList) DeepCopy ¶
func (in *PodCliqueList) DeepCopy() *PodCliqueList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueList.
func (*PodCliqueList) DeepCopyInto ¶
func (in *PodCliqueList) DeepCopyInto(out *PodCliqueList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueList) DeepCopyObject ¶
func (in *PodCliqueList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueRollingUpdateProgress ¶
type PodCliqueRollingUpdateProgress struct {
// UpdateStartedAt is the time at which the rolling update started.
UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"`
// UpdateEndedAt is the time at which the rolling update ended.
// It will be set to nil if the rolling update is still in progress.
UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"`
// PodCliqueSetGenerationHash is the PodCliqueSet generation hash corresponding to the PodCliqueSet spec that is being rolled out.
// While the update is in progress PodCliqueStatus.CurrentPodCliqueSetGenerationHash will not match this hash. Once the update is complete the
// value of this field will be copied to PodCliqueStatus.CurrentPodCliqueSetGenerationHash.
PodCliqueSetGenerationHash string `json:"podCliqueSetGenerationHash"`
// PodTemplateHash is the PodClique template hash corresponding to the PodClique spec that is being rolled out.
// While the update is in progress PodCliqueStatus.CurrentPodTemplateHash will not match this hash. Once the update is complete the
// value of this field will be copied to PodCliqueStatus.CurrentPodTemplateHash.
PodTemplateHash string `json:"podTemplateHash"`
// ReadyPodsSelectedToUpdate captures the pod names of ready Pods that are either currently being updated or have been previously updated.
ReadyPodsSelectedToUpdate *PodsSelectedToUpdate `json:"readyPodsSelectedToUpdate,omitempty"`
}
PodCliqueRollingUpdateProgress provides details about the ongoing rolling update of the PodClique.
func (*PodCliqueRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueRollingUpdateProgress) DeepCopy() *PodCliqueRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueRollingUpdateProgress.
func (*PodCliqueRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueRollingUpdateProgress) DeepCopyInto(out *PodCliqueRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroup ¶
type PodCliqueScalingGroup struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec is the specification of the PodCliqueScalingGroup.
Spec PodCliqueScalingGroupSpec `json:"spec"`
// Status is the status of the PodCliqueScalingGroup.
Status PodCliqueScalingGroupStatus `json:"status,omitempty"`
}
PodCliqueScalingGroup is the schema to define scaling groups that is used to scale a group of PodClique's. An instance of this custom resource will be created for every pod clique scaling group defined as part of PodCliqueSet.
func (*PodCliqueScalingGroup) DeepCopy ¶
func (in *PodCliqueScalingGroup) DeepCopy() *PodCliqueScalingGroup
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroup.
func (*PodCliqueScalingGroup) DeepCopyInto ¶
func (in *PodCliqueScalingGroup) DeepCopyInto(out *PodCliqueScalingGroup)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueScalingGroup) DeepCopyObject ¶
func (in *PodCliqueScalingGroup) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodCliqueScalingGroup) SetLastErrors ¶
func (pcsg *PodCliqueScalingGroup) SetLastErrors(lastErrs ...LastError)
SetLastErrors sets the last errors observed by the controller when reconciling the PodCliqueScalingGroup.
type PodCliqueScalingGroupConfig ¶
type PodCliqueScalingGroupConfig struct {
// Name is the name of the PodCliqueScalingGroupConfig. This should be unique within the PodCliqueSet.
// It allows consumers to give a semantic name to a group of PodCliques that needs to be scaled together.
Name string `json:"name"`
// CliqueNames is the list of names of the PodClique's that are part of the scaling group.
CliqueNames []string `json:"cliqueNames"`
// Replicas is the desired number of replicas for the scaling group at template level.
// This allows one to control the replicas of the scaling group at startup.
// If not specified, it defaults to 1.
// +optional
// +kubebuilder:default=1
Replicas *int32 `json:"replicas,omitempty"`
// MinAvailable serves two purposes:
// Gang Scheduling:
// It defines the minimum number of replicas that are guaranteed to be gang scheduled.
// Gang Termination:
// It defines the minimum requirement of available replicas for a PodCliqueScalingGroup.
// Violation of this threshold for a duration beyond TerminationDelay will result in termination of the PodCliqueSet replica that it belongs to.
// Default: If not specified, it defaults to 1.
// Constraints:
// MinAvailable cannot be greater than Replicas.
// If ScaleConfig is defined then its MinAvailable should not be less than ScaleConfig.MinReplicas.
// +optional
// +kubebuilder:default=1
MinAvailable *int32 `json:"minAvailable,omitempty"`
// ScaleConfig is the horizontal pod autoscaler configuration for the pod clique scaling group.
// +optional
ScaleConfig *AutoScalingConfig `json:"scaleConfig,omitempty"`
}
PodCliqueScalingGroupConfig is a group of PodClique's that are scaled together. Each member PodClique.Replicas will be computed as a product of PodCliqueScalingGroupConfig.Replicas and PodCliqueTemplateSpec.Spec.Replicas. NOTE: If a PodCliqueScalingGroupConfig is defined, then for the member PodClique's, individual AutoScalingConfig cannot be defined.
func (*PodCliqueScalingGroupConfig) DeepCopy ¶
func (in *PodCliqueScalingGroupConfig) DeepCopy() *PodCliqueScalingGroupConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupConfig.
func (*PodCliqueScalingGroupConfig) DeepCopyInto ¶
func (in *PodCliqueScalingGroupConfig) DeepCopyInto(out *PodCliqueScalingGroupConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupList ¶
type PodCliqueScalingGroupList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
// Items is a slice of PodCliqueScalingGroup.
Items []PodCliqueScalingGroup `json:"items"`
}
PodCliqueScalingGroupList is a slice of PodCliqueScalingGroup's.
func (*PodCliqueScalingGroupList) DeepCopy ¶
func (in *PodCliqueScalingGroupList) DeepCopy() *PodCliqueScalingGroupList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupList.
func (*PodCliqueScalingGroupList) DeepCopyInto ¶
func (in *PodCliqueScalingGroupList) DeepCopyInto(out *PodCliqueScalingGroupList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueScalingGroupList) DeepCopyObject ¶
func (in *PodCliqueScalingGroupList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueScalingGroupReplicaRollingUpdateProgress ¶
type PodCliqueScalingGroupReplicaRollingUpdateProgress struct {
// Current is the index of the PodCliqueScalingGroup replica that is currently being updated.
Current int32 `json:"current"`
// Completed is the list of indices of PodCliqueScalingGroup replicas that have been updated to the latest PodCliqueSet spec.
Completed []int32 `json:"completed,omitempty"`
}
PodCliqueScalingGroupReplicaRollingUpdateProgress provides details about the rolling update progress of ready replicas of PodCliqueScalingGroup that have been selected for update.
func (*PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopy() *PodCliqueScalingGroupReplicaRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupReplicaRollingUpdateProgress.
func (*PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopyInto(out *PodCliqueScalingGroupReplicaRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupRollingUpdateProgress ¶
type PodCliqueScalingGroupRollingUpdateProgress struct {
//UpdateStartedAt is the time at which the rolling update started.
UpdateStartedAt metav1.Time `json:"updateStartedAt"`
// UpdateEndedAt is the time at which the rolling update ended.
UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"`
// PodCliqueSetGenerationHash is the PodCliqueSet generation hash corresponding to the PodCliqueSet spec that is being rolled out.
// While the update is in progress PodCliqueScalingGroupStatus.CurrentPodCliqueSetGenerationHash will not match this hash. Once the update is complete the
// value of this field will be copied to PodCliqueScalingGroupStatus.CurrentPodCliqueSetGenerationHash.
PodCliqueSetGenerationHash string `json:"podCliqueSetGenerationHash"`
// UpdatedPodCliques is the list of PodClique names that have been updated to the latest PodCliqueSet spec.
UpdatedPodCliques []string `json:"updatedPodCliques,omitempty"`
// ReadyReplicaIndicesSelectedToUpdate provides the rolling update progress of ready replicas of PodCliqueScalingGroup that have been selected for update.
// PodCliqueScalingGroup replicas that are either pending or unhealthy will be force updated and the update will not wait for these replicas to become ready.
// For all ready replicas, one replica is chosen at a time to update, once it is updated and becomes ready, the next ready replica is chosen for update.
ReadyReplicaIndicesSelectedToUpdate *PodCliqueScalingGroupReplicaRollingUpdateProgress `json:"readyReplicaIndicesSelectedToUpdate,omitempty"`
}
PodCliqueScalingGroupRollingUpdateProgress provides details about the ongoing rolling update of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueScalingGroupRollingUpdateProgress) DeepCopy() *PodCliqueScalingGroupRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupRollingUpdateProgress.
func (*PodCliqueScalingGroupRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueScalingGroupRollingUpdateProgress) DeepCopyInto(out *PodCliqueScalingGroupRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupSpec ¶
type PodCliqueScalingGroupSpec struct {
// Replicas is the desired number of replicas for the PodCliqueScalingGroup.
// If not specified, it defaults to 1.
// +kubebuilder:default=1
Replicas int32 `json:"replicas"`
// MinAvailable specifies the minimum number of ready replicas required for a PodCliqueScalingGroup to be considered operational.
// A PodCliqueScalingGroup replica is considered "ready" when its associated PodCliques have sufficient ready or starting pods.
// If MinAvailable is breached, it will be used to signal that the PodCliqueScalingGroup is no longer operating with the desired availability.
// MinAvailable cannot be greater than Replicas. If ScaleConfig is defined then its MinAvailable should not be less than ScaleConfig.MinReplicas.
//
// It serves two main purposes:
// 1. Gang Scheduling: MinAvailable defines the minimum number of replicas that are guaranteed to be gang scheduled.
// 2. Gang Termination: MinAvailable is used as a lower bound below which a PodGang becomes a candidate for Gang termination.
// If not specified, it defaults to 1.
// +optional
// +kubebuilder:default=1
MinAvailable *int32 `json:"minAvailable,omitempty"`
// CliqueNames is the list of PodClique names that are configured in the
// matching PodCliqueScalingGroup in PodCliqueSet.Spec.Template.PodCliqueScalingGroupConfigs.
CliqueNames []string `json:"cliqueNames"`
}
PodCliqueScalingGroupSpec is the specification of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupSpec) DeepCopy ¶
func (in *PodCliqueScalingGroupSpec) DeepCopy() *PodCliqueScalingGroupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupSpec.
func (*PodCliqueScalingGroupSpec) DeepCopyInto ¶
func (in *PodCliqueScalingGroupSpec) DeepCopyInto(out *PodCliqueScalingGroupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupStatus ¶
type PodCliqueScalingGroupStatus struct {
// Replicas is the observed number of replicas for the PodCliqueScalingGroup.
Replicas int32 `json:"replicas,omitempty"`
// ScheduledReplicas is the number of replicas that are scheduled for the PodCliqueScalingGroup.
// A replica of PodCliqueScalingGroup is considered "scheduled" when at least MinAvailable number
// of pods in each constituent PodClique has been scheduled.
// +kubebuilder:default=0
ScheduledReplicas int32 `json:"scheduledReplicas"`
// AvailableReplicas is the number of PodCliqueScalingGroup replicas that are available.
// A PodCliqueScalingGroup replica is considered available when all constituent PodClique's have
// PodClique.Status.ReadyReplicas greater than or equal to PodClique.Spec.MinAvailable
// +kubebuilder:default=0
AvailableReplicas int32 `json:"availableReplicas"`
// UpdatedReplicas is the number of PodCliqueScalingGroup replicas that correspond with the latest PodCliqueSetGenerationHash.
// +kubebuilder:default=0
UpdatedReplicas int32 `json:"updatedReplicas"`
// Selector is the selector used to identify the pods that belong to this scaling group.
Selector *string `json:"selector,omitempty"`
// ObservedGeneration is the most recent generation observed by the controller.
ObservedGeneration *int64 `json:"observedGeneration,omitempty"`
// LastErrors captures the last errors observed by the controller when reconciling the PodClique.
LastErrors []LastError `json:"lastErrors,omitempty"`
// Conditions represents the latest available observations of the PodCliqueScalingGroup by its controller.
Conditions []metav1.Condition `json:"conditions,omitempty"`
// CurrentPodCliqueSetGenerationHash establishes a correlation to PodCliqueSet generation hash indicating
// that the spec of the PodCliqueSet at this generation is fully realized in the PodCliqueScalingGroup.
CurrentPodCliqueSetGenerationHash *string `json:"currentPodCliqueSetGenerationHash,omitempty"`
// RollingUpdateProgress provides details about the ongoing rolling update of the PodCliqueScalingGroup.
RollingUpdateProgress *PodCliqueScalingGroupRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"`
}
PodCliqueScalingGroupStatus is the status of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupStatus) DeepCopy ¶
func (in *PodCliqueScalingGroupStatus) DeepCopy() *PodCliqueScalingGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupStatus.
func (*PodCliqueScalingGroupStatus) DeepCopyInto ¶
func (in *PodCliqueScalingGroupStatus) DeepCopyInto(out *PodCliqueScalingGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSet ¶
type PodCliqueSet struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec defines the specification of the PodCliqueSet.
Spec PodCliqueSetSpec `json:"spec"`
// Status defines the status of the PodCliqueSet.
Status PodCliqueSetStatus `json:"status,omitempty"`
}
PodCliqueSet is a set of PodGangs defining specification on how to spread and manage a gang of pods and monitoring their status.
func (*PodCliqueSet) DeepCopy ¶
func (in *PodCliqueSet) DeepCopy() *PodCliqueSet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSet.
func (*PodCliqueSet) DeepCopyInto ¶
func (in *PodCliqueSet) DeepCopyInto(out *PodCliqueSet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueSet) DeepCopyObject ¶
func (in *PodCliqueSet) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodCliqueSet) SetLastErrors ¶
func (pcs *PodCliqueSet) SetLastErrors(lastErrs ...LastError)
SetLastErrors sets the last errors observed by the controller when reconciling the PodCliqueSet.
type PodCliqueSetList ¶
type PodCliqueSetList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
// Items is a slice of PodCliqueSets.
Items []PodCliqueSet `json:"items"`
}
PodCliqueSetList is a list of PodCliqueSet's.
func (*PodCliqueSetList) DeepCopy ¶
func (in *PodCliqueSetList) DeepCopy() *PodCliqueSetList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetList.
func (*PodCliqueSetList) DeepCopyInto ¶
func (in *PodCliqueSetList) DeepCopyInto(out *PodCliqueSetList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueSetList) DeepCopyObject ¶
func (in *PodCliqueSetList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueSetReplicaRollingUpdateProgress ¶
type PodCliqueSetReplicaRollingUpdateProgress struct {
// ReplicaIndex is the replica index of the PodCliqueSet that is being updated.
ReplicaIndex int32 `json:"replicaIndex"`
// UpdateStartedAt is the time at which the rolling update started for this PodCliqueSet replica index.
UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"`
}
PodCliqueSetReplicaRollingUpdateProgress captures the progress of a rolling update for a specific PodCliqueSet replica.
func (*PodCliqueSetReplicaRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueSetReplicaRollingUpdateProgress) DeepCopy() *PodCliqueSetReplicaRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetReplicaRollingUpdateProgress.
func (*PodCliqueSetReplicaRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueSetReplicaRollingUpdateProgress) DeepCopyInto(out *PodCliqueSetReplicaRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetRollingUpdateProgress ¶
type PodCliqueSetRollingUpdateProgress struct {
// UpdateStartedAt is the time at which the rolling update started for the PodCliqueSet.
UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"`
// UpdateEndedAt is the time at which the rolling update ended for the PodCliqueSet.
// +optional
UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"`
// UpdatedPodCliqueScalingGroups is a list of PodCliqueScalingGroup names that have been updated to the desired PodCliqueSet generation hash.
UpdatedPodCliqueScalingGroups []string `json:"updatedPodCliqueScalingGroups,omitempty"`
// UpdatedPodCliques is a list of PodClique names that have been updated to the desired PodCliqueSet generation hash.
UpdatedPodCliques []string `json:"updatedPodCliques,omitempty"`
// CurrentlyUpdating captures the progress of the PodCliqueSet replica that is currently being updated.
// +optional
CurrentlyUpdating *PodCliqueSetReplicaRollingUpdateProgress `json:"currentlyUpdating,omitempty"`
}
PodCliqueSetRollingUpdateProgress captures the progress of a rolling update of the PodCliqueSet.
func (*PodCliqueSetRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueSetRollingUpdateProgress) DeepCopy() *PodCliqueSetRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetRollingUpdateProgress.
func (*PodCliqueSetRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueSetRollingUpdateProgress) DeepCopyInto(out *PodCliqueSetRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetSpec ¶
type PodCliqueSetSpec struct {
// Replicas is the number of desired replicas of the PodGang.
// +kubebuilder:default=0
Replicas int32 `json:"replicas,omitempty"`
// Template describes the template spec for PodGangs that will be created in the PodCliqueSet.
Template PodCliqueSetTemplateSpec `json:"template"`
// ReplicaSpreadConstraints defines the constraints for spreading each replica of PodCliqueSet across domains identified by a topology key.
// +optional
ReplicaSpreadConstraints []corev1.TopologySpreadConstraint `json:"replicaSpreadConstraints,omitempty"`
}
PodCliqueSetSpec defines the specification of a PodCliqueSet.
func (*PodCliqueSetSpec) DeepCopy ¶
func (in *PodCliqueSetSpec) DeepCopy() *PodCliqueSetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetSpec.
func (*PodCliqueSetSpec) DeepCopyInto ¶
func (in *PodCliqueSetSpec) DeepCopyInto(out *PodCliqueSetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetStatus ¶
type PodCliqueSetStatus struct {
// ObservedGeneration is the most recent generation observed by the controller.
ObservedGeneration *int64 `json:"observedGeneration,omitempty"`
// LastErrors captures the last errors observed by the controller when reconciling the PodCliqueSet.
LastErrors []LastError `json:"lastErrors,omitempty"`
// Replicas is the total number of PodCliqueSet replicas created.
Replicas int32 `json:"replicas,omitempty"`
// UpdatedReplicas is the number of replicas that have been updated to the desired revision of the PodCliqueSet.
// +kubebuilder:default=0
UpdatedReplicas int32 `json:"updatedReplicas"`
// AvailableReplicas is the number of PodCliqueSet replicas that are available.
// A PodCliqueSet replica is considered available when all standalone PodCliques within that replica
// have MinAvailableBreached condition = False AND all PodCliqueScalingGroups (PCSG) within that replica
// have MinAvailableBreached condition = False.
// +kubebuilder:default=0
AvailableReplicas int32 `json:"availableReplicas"`
// Selector is the label selector that determines which pods are part of the PodGang.
// PodGang is a unit of scale and this selector is used by HPA to scale the PodGang based on metrics captured for the pods that match this selector.
Selector *string `json:"hpaPodSelector,omitempty"`
// PodGangStatuses captures the status for all the PodGang's that are part of the PodCliqueSet.
PodGangStatutes []PodGangStatus `json:"podGangStatuses,omitempty"`
// CurrentGenerationHash is a hash value generated out of a collection of fields in a PodCliqueSet.
// Since only a subset of fields is taken into account when generating the hash, not every change in the PodCliqueSetSpec will
// be accounted for when generating this hash value. A field in PodCliqueSetSpec is included if a change to it triggers
// a rolling update of PodCliques and/or PodCliqueScalingGroups.
// Only if this value is not nil and the newly computed hash value is different from the persisted CurrentGenerationHash value
// then a rolling update needs to be triggerred.
CurrentGenerationHash *string `json:"currentGenerationHash,omitempty"`
// RollingUpdateProgress represents the progress of a rolling update.
RollingUpdateProgress *PodCliqueSetRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"`
}
PodCliqueSetStatus defines the status of a PodCliqueSet.
func (*PodCliqueSetStatus) DeepCopy ¶
func (in *PodCliqueSetStatus) DeepCopy() *PodCliqueSetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetStatus.
func (*PodCliqueSetStatus) DeepCopyInto ¶
func (in *PodCliqueSetStatus) DeepCopyInto(out *PodCliqueSetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetTemplateSpec ¶
type PodCliqueSetTemplateSpec struct {
// Cliques is a slice of cliques that make up the PodGang. There should be at least one PodClique.
Cliques []*PodCliqueTemplateSpec `json:"cliques"`
// StartupType defines the type of startup dependency amongst the cliques within a PodGang.
// If it is not defined then default of CliqueStartupTypeAnyOrder is used.
// +kubebuilder:default=CliqueStartupTypeAnyOrder
// +optional
StartupType *CliqueStartupType `json:"cliqueStartupType,omitempty"`
// PriorityClassName is the name of the PriorityClass to be used for the PodCliqueSet.
// If specified, indicates the priority of the PodCliqueSet. "system-node-critical" and
// "system-cluster-critical" are two special keywords which indicate the
// highest priorities with the former being the highest priority. Any other
// name must be defined by creating a PriorityClass object with that name.
// If not specified, the pod priority will be default or zero if there is no default.
// +optional
PriorityClassName string `json:"priorityClassName,omitempty"`
// HeadlessServiceConfig defines the config options for the headless service.
// If present, create headless service for each PodGang.
// +optional
HeadlessServiceConfig *HeadlessServiceConfig `json:"headlessServiceConfig,omitempty"`
// SchedulingPolicyConfig defines the scheduling policy configuration for the PodGang.
// Defaulting only works for optional fields.
// See https://github.com/kubernetes-sigs/controller-tools/issues/893#issuecomment-1991256368
// +optional
SchedulingPolicyConfig *SchedulingPolicyConfig `json:"schedulingPolicyConfig,omitempty"`
// TerminationDelay is the delay after which the gang termination will be triggered.
// A gang is a candidate for termination if number of running pods fall below a threshold for any PodClique.
// If a PodGang remains a candidate past TerminationDelay then it will be terminated. This allows additional time
// to the kube-scheduler to re-schedule sufficient pods in the PodGang that will result in having the total number of
// running pods go above the threshold.
// Defaults to 4 hours.
// +optional
TerminationDelay *metav1.Duration `json:"terminationDelay,omitempty"`
// PodCliqueScalingGroupConfigs is a list of scaling groups for the PodCliqueSet.
PodCliqueScalingGroupConfigs []PodCliqueScalingGroupConfig `json:"podCliqueScalingGroups,omitempty"`
}
PodCliqueSetTemplateSpec defines a template spec for a PodGang. A PodGang does not have a RestartPolicy field because the restart policy is predefined: If the number of pods in any of the cliques falls below the threshold, the entire PodGang will be restarted. The threshold is determined by either: - The value of "MinReplicas", if specified in the ScaleConfig of that clique, or - The "Replicas" value of that clique
func (*PodCliqueSetTemplateSpec) DeepCopy ¶
func (in *PodCliqueSetTemplateSpec) DeepCopy() *PodCliqueSetTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetTemplateSpec.
func (*PodCliqueSetTemplateSpec) DeepCopyInto ¶
func (in *PodCliqueSetTemplateSpec) DeepCopyInto(out *PodCliqueSetTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSpec ¶
type PodCliqueSpec struct {
// RoleName is the name of the role that this PodClique will assume.
RoleName string `json:"roleName"`
// Spec is the spec of the pods in the clique.
PodSpec corev1.PodSpec `json:"podSpec"`
// Replicas is the number of replicas of the pods in the clique. It cannot be less than 1.
Replicas int32 `json:"replicas"`
// MinAvailable serves two purposes:
// 1. It defines the minimum number of pods that are guaranteed to be gang scheduled.
// 2. It defines the minimum requirement of available pods in a PodClique. Violation of this threshold will result in termination of the PodGang that it belongs to.
// If MinAvailable is not set, then it will default to the template Replicas.
// +optional
MinAvailable *int32 `json:"minAvailable,omitempty"`
// StartsAfter provides you a way to explicitly define the startup dependencies amongst cliques.
// If CliqueStartupType in PodGang has been set to 'CliqueStartupTypeExplicit', then to create an ordered start amongst PodClique's StartsAfter can be used.
// A forest of DAG's can be defined to model any start order dependencies. If there are more than one PodClique's defined and StartsAfter is not set for any of them,
// then their startup order is random at best and must not be relied upon.
// Validations:
// 1. If a StartsAfter has been defined and one or more cycles are detected in DAG's then it will be flagged as validation error.
// 2. If StartsAfter is defined and does not identify any PodClique then it will be flagged as a validation error.
// +optional
StartsAfter []string `json:"startsAfter,omitempty"`
// ScaleConfig is the horizontal pod autoscaler configuration for a PodClique.
// +optional
ScaleConfig *AutoScalingConfig `json:"autoScalingConfig,omitempty"`
}
PodCliqueSpec defines the specification of a PodClique.
func (*PodCliqueSpec) DeepCopy ¶
func (in *PodCliqueSpec) DeepCopy() *PodCliqueSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSpec.
func (*PodCliqueSpec) DeepCopyInto ¶
func (in *PodCliqueSpec) DeepCopyInto(out *PodCliqueSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueStatus ¶
type PodCliqueStatus struct {
// ObservedGeneration is the most recent generation observed by the controller.
ObservedGeneration *int64 `json:"observedGeneration,omitempty"`
// LastErrors captures the last errors observed by the controller when reconciling the PodClique.
LastErrors []LastError `json:"lastErrors,omitempty"`
// Replicas is the total number of non-terminated Pods targeted by this PodClique.
Replicas int32 `json:"replicas,omitempty"`
// ReadyReplicas is the number of ready Pods targeted by this PodClique.
// +kubebuilder:default=0
ReadyReplicas int32 `json:"readyReplicas"`
// UpdatedReplicas is the number of Pods that have been updated and are at the desired revision of the PodClique.
// +kubebuilder:default=0
UpdatedReplicas int32 `json:"updatedReplicas"`
// ScheduleGatedReplicas is the number of Pods that have been created with one or more scheduling gate(s) set.
// Sum of ReadyReplicas and ScheduleGatedReplicas will always be <= Replicas.
// +kubebuilder:default=0
ScheduleGatedReplicas int32 `json:"scheduleGatedReplicas"`
// ScheduledReplicas is the number of Pods that have been scheduled by the kube-scheduler.
// +kubebuilder:default=0
ScheduledReplicas int32 `json:"scheduledReplicas"`
// Selector is the label selector that determines which pods are part of the PodClique.
// PodClique is a unit of scale and this selector is used by HPA to scale the PodClique based on metrics captured for the pods that match this selector.
Selector *string `json:"hpaPodSelector,omitempty"`
// Conditions represents the latest available observations of the clique by its controller.
Conditions []metav1.Condition `json:"conditions,omitempty"`
// CurrentPodCliqueSetGenerationHash establishes a correlation to PodCliqueSet generation hash indicating
// that the spec of the PodCliqueSet at this generation is fully realized in the PodClique.
CurrentPodCliqueSetGenerationHash *string `json:"currentPodCliqueSetGenerationHash,omitempty"`
// CurrentPodTemplateHash establishes a correlation to PodClique template hash indicating
// that the spec of the PodClique at this template hash is fully realized in the PodClique.
CurrentPodTemplateHash *string `json:"currentPodTemplateHash,omitempty"`
// RollingUpdateProgress provides details about the ongoing rolling update of the PodClique.
RollingUpdateProgress *PodCliqueRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"`
}
PodCliqueStatus defines the status of a PodClique.
func (*PodCliqueStatus) DeepCopy ¶
func (in *PodCliqueStatus) DeepCopy() *PodCliqueStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueStatus.
func (*PodCliqueStatus) DeepCopyInto ¶
func (in *PodCliqueStatus) DeepCopyInto(out *PodCliqueStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueTemplateSpec ¶
type PodCliqueTemplateSpec struct {
// Name must be unique within a PodCliqueSet and is used to denote a role.
// Once set it cannot be updated.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
Name string `json:"name"`
// Labels is a map of string keys and values that can be used to organize and categorize
// (scope and select) objects. May match selectors of replication controllers
// and services.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Annotations is an unstructured key value map stored with a resource that may be
// set by external tools to store and retrieve arbitrary metadata. They are not
// queryable and should be preserved when modifying objects.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
// +optional
Annotations map[string]string `json:"annotations,omitempty"`
// Specification of the desired behavior of a PodClique.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
Spec PodCliqueSpec `json:"spec"`
}
PodCliqueTemplateSpec defines a template spec for a PodClique.
func (*PodCliqueTemplateSpec) DeepCopy ¶
func (in *PodCliqueTemplateSpec) DeepCopy() *PodCliqueTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueTemplateSpec.
func (*PodCliqueTemplateSpec) DeepCopyInto ¶
func (in *PodCliqueTemplateSpec) DeepCopyInto(out *PodCliqueTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodGangPhase ¶
type PodGangPhase string
PodGangPhase represents the phase of a PodGang. +kubebuilder:validation:Enum={Pending,Starting,Running,Failed,Succeeded}
const ( // PodGangPending indicates that the pods in a PodGang have not yet been taken up for scheduling. PodGangPending PodGangPhase = "Pending" // PodGangStarting indicates that the pods are bound to nodes by the scheduler and are starting. PodGangStarting PodGangPhase = "Starting" // PodGangRunning indicates that the all the pods in a PodGang are running. PodGangRunning PodGangPhase = "Running" // PodGangFailed indicates that one or more pods in a PodGang have failed. // This is a terminal state and is typically used for batch jobs. PodGangFailed PodGangPhase = "Failed" // PodGangSucceeded indicates that all the pods in a PodGang have succeeded. // This is a terminal state and is typically used for batch jobs. PodGangSucceeded PodGangPhase = "Succeeded" )
type PodGangStatus ¶
type PodGangStatus struct {
// Name is the name of the PodGang.
Name string `json:"name"`
// Phase is the current phase of the PodGang.
Phase PodGangPhase `json:"phase"`
// Conditions represents the latest available observations of the PodGang by its controller.
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
PodGangStatus defines the status of a PodGang.
func (*PodGangStatus) DeepCopy ¶
func (in *PodGangStatus) DeepCopy() *PodGangStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodGangStatus.
func (*PodGangStatus) DeepCopyInto ¶
func (in *PodGangStatus) DeepCopyInto(out *PodGangStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodsSelectedToUpdate ¶
type PodsSelectedToUpdate struct {
// Current captures the current pod name that is a target for update.
Current string `json:"current"`
// Completed captures the pod names that have already been updated.
Completed []string `json:"completed,omitempty"`
}
PodsSelectedToUpdate captures the current and previous set of pod names that have been selected for update in a rolling update.
func (*PodsSelectedToUpdate) DeepCopy ¶
func (in *PodsSelectedToUpdate) DeepCopy() *PodsSelectedToUpdate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsSelectedToUpdate.
func (*PodsSelectedToUpdate) DeepCopyInto ¶
func (in *PodsSelectedToUpdate) DeepCopyInto(out *PodsSelectedToUpdate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulingPolicyConfig ¶
type SchedulingPolicyConfig struct {
// NetworkPackGroupConfigs is a list of NetworkPackGroupConfig's that define how the pods in the PodCliqueSet are optimally packaged w.r.t cluster's network topology.
// PodCliques that are not part of any NetworkPackGroupConfig are scheduled with best-effort network packing strategy.
// Exercise caution when defining NetworkPackGroupConfig. Some of the downsides include:
// 1. Scheduling may be delayed until optimal placement is available.
// 2. Pods created due to scale-out or rolling upgrades is not guaranteed optimal placement.
NetworkPackGroupConfigs []NetworkPackGroupConfig `json:"networkPackGroupConfigs,omitempty"`
}
SchedulingPolicyConfig defines the scheduling policy configuration for the PodGang.
func (*SchedulingPolicyConfig) DeepCopy ¶
func (in *SchedulingPolicyConfig) DeepCopy() *SchedulingPolicyConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingPolicyConfig.
func (*SchedulingPolicyConfig) DeepCopyInto ¶
func (in *SchedulingPolicyConfig) DeepCopyInto(out *SchedulingPolicyConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.