Public ProvisioningClass interface
This commit is contained in:
parent
b3a501cbe1
commit
4ed5df201b
|
|
@ -32,6 +32,7 @@ import (
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/core/scaleup/orchestrator"
|
"k8s.io/autoscaler/cluster-autoscaler/core/scaleup/orchestrator"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/debuggingsnapshot"
|
"k8s.io/autoscaler/cluster-autoscaler/debuggingsnapshot"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/loop"
|
"k8s.io/autoscaler/cluster-autoscaler/loop"
|
||||||
|
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/besteffortatomic"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/checkcapacity"
|
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/checkcapacity"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
|
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/simulator/predicatechecker"
|
"k8s.io/autoscaler/cluster-autoscaler/simulator/predicatechecker"
|
||||||
|
|
@ -496,17 +497,17 @@ func buildAutoscaler(debuggingSnapshotter debuggingsnapshot.DebuggingSnapshotter
|
||||||
podListProcessor.AddProcessor(provreq.NewProvisioningRequestPodsFilter(provreq.NewDefautlEventManager()))
|
podListProcessor.AddProcessor(provreq.NewProvisioningRequestPodsFilter(provreq.NewDefautlEventManager()))
|
||||||
|
|
||||||
restConfig := kube_util.GetKubeConfig(autoscalingOptions.KubeClientOpts)
|
restConfig := kube_util.GetKubeConfig(autoscalingOptions.KubeClientOpts)
|
||||||
provreqOrchestrator, err := provreqorchestrator.New(restConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
scaleUpOrchestrator := provreqorchestrator.NewWrapperOrchestrator(provreqOrchestrator)
|
|
||||||
|
|
||||||
opts.ScaleUpOrchestrator = scaleUpOrchestrator
|
|
||||||
client, err := provreqclient.NewProvisioningRequestClient(restConfig)
|
client, err := provreqclient.NewProvisioningRequestClient(restConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
provreqOrchestrator := provreqorchestrator.New(client, []provreqorchestrator.ProvisioningClass{
|
||||||
|
checkcapacity.New(client),
|
||||||
|
besteffortatomic.New(client),
|
||||||
|
})
|
||||||
|
scaleUpOrchestrator := provreqorchestrator.NewWrapperOrchestrator(provreqOrchestrator)
|
||||||
|
|
||||||
|
opts.ScaleUpOrchestrator = scaleUpOrchestrator
|
||||||
provreqProcesor := provreq.NewCombinedProvReqProcessor(client, []provreq.ProvisioningRequestProcessor{checkcapacity.NewCheckCapacityProcessor(client)})
|
provreqProcesor := provreq.NewCombinedProvReqProcessor(client, []provreq.ProvisioningRequestProcessor{checkcapacity.NewCheckCapacityProcessor(client)})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -27,22 +27,20 @@ import (
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/estimator"
|
"k8s.io/autoscaler/cluster-autoscaler/estimator"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/processors/status"
|
"k8s.io/autoscaler/cluster-autoscaler/processors/status"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/besteffortatomic"
|
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/checkcapacity"
|
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/conditions"
|
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/conditions"
|
||||||
provreq_pods "k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/pods"
|
provreq_pods "k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/pods"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
|
"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/simulator/scheduling"
|
"k8s.io/autoscaler/cluster-autoscaler/simulator/scheduling"
|
||||||
ca_errors "k8s.io/autoscaler/cluster-autoscaler/utils/errors"
|
ca_errors "k8s.io/autoscaler/cluster-autoscaler/utils/errors"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/utils/taints"
|
"k8s.io/autoscaler/cluster-autoscaler/utils/taints"
|
||||||
"k8s.io/client-go/rest"
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
|
||||||
ca_processors "k8s.io/autoscaler/cluster-autoscaler/processors"
|
ca_processors "k8s.io/autoscaler/cluster-autoscaler/processors"
|
||||||
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework"
|
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
type provisioningClass interface {
|
// ProvisioningClass is an interface for ProvisioningRequests.
|
||||||
|
type ProvisioningClass interface {
|
||||||
Provision([]*apiv1.Pod, []*apiv1.Node, []*appsv1.DaemonSet,
|
Provision([]*apiv1.Pod, []*apiv1.Node, []*appsv1.DaemonSet,
|
||||||
map[string]*schedulerframework.NodeInfo) (*status.ScaleUpStatus, ca_errors.AutoscalerError)
|
map[string]*schedulerframework.NodeInfo) (*status.ScaleUpStatus, ca_errors.AutoscalerError)
|
||||||
Initialize(*context.AutoscalingContext, *ca_processors.AutoscalingProcessors, *clusterstate.ClusterStateRegistry,
|
Initialize(*context.AutoscalingContext, *ca_processors.AutoscalingProcessors, *clusterstate.ClusterStateRegistry,
|
||||||
|
|
@ -55,23 +53,15 @@ type provReqOrchestrator struct {
|
||||||
context *context.AutoscalingContext
|
context *context.AutoscalingContext
|
||||||
client *provreqclient.ProvisioningRequestClient
|
client *provreqclient.ProvisioningRequestClient
|
||||||
injector *scheduling.HintingSimulator
|
injector *scheduling.HintingSimulator
|
||||||
provisioningClasses []provisioningClass
|
provisioningClasses []ProvisioningClass
|
||||||
}
|
}
|
||||||
|
|
||||||
// New return new orchestrator.
|
// New return new orchestrator.
|
||||||
func New(kubeConfig *rest.Config) (*provReqOrchestrator, error) {
|
func New(client *provreqclient.ProvisioningRequestClient, classes []ProvisioningClass) *provReqOrchestrator {
|
||||||
client, err := provreqclient.NewProvisioningRequestClient(kubeConfig)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &provReqOrchestrator{
|
return &provReqOrchestrator{
|
||||||
client: client,
|
client: client,
|
||||||
provisioningClasses: []provisioningClass{
|
provisioningClasses: classes,
|
||||||
checkcapacity.New(client),
|
}
|
||||||
besteffortatomic.New(client),
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize initialize orchestrator.
|
// Initialize initialize orchestrator.
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ func setupTest(t *testing.T, nodes []*apiv1.Node, prs []*provreqwrapper.Provisio
|
||||||
|
|
||||||
orchestrator := &provReqOrchestrator{
|
orchestrator := &provReqOrchestrator{
|
||||||
client: client,
|
client: client,
|
||||||
provisioningClasses: []provisioningClass{checkcapacity.New(client), besteffortatomic.New(client)},
|
provisioningClasses: []ProvisioningClass{checkcapacity.New(client), besteffortatomic.New(client)},
|
||||||
}
|
}
|
||||||
orchestrator.Initialize(&autoscalingContext, processors, clusterState, estimatorBuilder, taints.TaintConfig{})
|
orchestrator.Initialize(&autoscalingContext, processors, clusterState, estimatorBuilder, taints.TaintConfig{})
|
||||||
return orchestrator, nodeInfos
|
return orchestrator, nodeInfos
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue