Documentation ¶
Index ¶
- Constants
- Variables
- func BuildAzure(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, ...) cloudprovider.CloudProvider
- func BuildAzureCloudProvider(azureManager *AzureManager, resourceLimiter *cloudprovider.ResourceLimiter) (cloudprovider.CloudProvider, error)
- func GetVMNameIndex(osType compute.OperatingSystemTypes, vmName string) (int, error)
- func ParseLabelAutoDiscoverySpecs(o cloudprovider.NodeGroupDiscoveryOptions) ([]labelAutoDiscoveryConfig, error)
- type AgentPool
- func (as *AgentPool) AtomicIncreaseSize(delta int) error
- func (as *AgentPool) Autoprovisioned() bool
- func (as *AgentPool) Belongs(node *apiv1.Node) (bool, error)
- func (as *AgentPool) Create() (cloudprovider.NodeGroup, error)
- func (as *AgentPool) Debug() string
- func (as *AgentPool) DecreaseTargetSize(delta int) error
- func (as *AgentPool) Delete() error
- func (as *AgentPool) DeleteInstances(instances []*azureRef) error
- func (as *AgentPool) DeleteNodes(nodes []*apiv1.Node) error
- func (as *AgentPool) Exist() bool
- func (as *AgentPool) ForceDeleteNodes(nodes []*apiv1.Node) error
- func (m *AgentPool) GetKey() string
- func (as *AgentPool) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
- func (as *AgentPool) GetVMIndexes() ([]int, map[int]string, error)
- func (as *AgentPool) Id() string
- func (as *AgentPool) IncreaseSize(delta int) error
- func (as *AgentPool) MaxSize() int
- func (as *AgentPool) MinSize() int
- func (as *AgentPool) Nodes() ([]cloudprovider.Instance, error)
- func (m *AgentPool) String() string
- func (as *AgentPool) TargetSize() (int, error)
- func (as *AgentPool) TemplateNodeInfo() (*framework.NodeInfo, error)
- type AgentPoolsClient
- type AzUtil
- type AzureCloudProvider
- func (azure *AzureCloudProvider) Cleanup() error
- func (azure *AzureCloudProvider) GPULabel() string
- func (azure *AzureCloudProvider) GetAvailableGPUTypes() map[string]struct{}
- func (azure *AzureCloudProvider) GetAvailableMachineTypes() ([]string, error)
- func (azure *AzureCloudProvider) GetNodeGpuConfig(node *apiv1.Node) *cloudprovider.GpuConfig
- func (azure *AzureCloudProvider) GetResourceLimiter() (*cloudprovider.ResourceLimiter, error)
- func (azure *AzureCloudProvider) HasInstance(node *apiv1.Node) (bool, error)
- func (azure *AzureCloudProvider) Name() string
- func (azure *AzureCloudProvider) NewNodeGroup(machineType string, labels map[string]string, systemLabels map[string]string, ...) (cloudprovider.NodeGroup, error)
- func (azure *AzureCloudProvider) NodeGroupForNode(node *apiv1.Node) (cloudprovider.NodeGroup, error)
- func (azure *AzureCloudProvider) NodeGroups() []cloudprovider.NodeGroup
- func (azure *AzureCloudProvider) Pricing() (cloudprovider.PricingModel, errors.AutoscalerError)
- func (azure *AzureCloudProvider) Refresh() error
- type AzureManager
- func (m *AzureManager) Cleanup()
- func (m *AzureManager) GetNodeGroupForInstance(instance *azureRef) (cloudprovider.NodeGroup, error)
- func (m *AzureManager) GetScaleSetOptions(scaleSetName string, defaults config.NodeGroupAutoscalingOptions) *config.NodeGroupAutoscalingOptions
- func (m *AzureManager) Refresh() error
- func (m *AzureManager) RegisterNodeGroup(nodeGroup cloudprovider.NodeGroup) bool
- func (m *AzureManager) UnregisterNodeGroup(nodeGroup cloudprovider.NodeGroup) bool
- type Config
- type DeploymentClientMock
- func (m *DeploymentClientMock) CreateOrUpdate(ctx context.Context, resourceGroupName string, deploymentName string, ...) (err *retry.Error)
- func (m *DeploymentClientMock) Delete(ctx context.Context, resourceGroupName, deploymentName string) (err *retry.Error)
- func (m *DeploymentClientMock) ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExportResult, err *retry.Error)
- func (m *DeploymentClientMock) Get(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExtended, err *retry.Error)
- func (m *DeploymentClientMock) List(ctx context.Context, resourceGroupName string) (result []resources.DeploymentExtended, err *retry.Error)
- type InstanceCache
- type InstanceType
- type MockAgentPoolsClient
- func (m *MockAgentPoolsClient) BeginCreateOrUpdate(arg0 context.Context, arg1, arg2, arg3 string, ...) (*runtime.Poller[armcontainerservice.AgentPoolsClientCreateOrUpdateResponse], ...)
- func (m *MockAgentPoolsClient) BeginDeleteMachines(arg0 context.Context, arg1, arg2, arg3 string, ...) (*runtime.Poller[armcontainerservice.AgentPoolsClientDeleteMachinesResponse], ...)
- func (m *MockAgentPoolsClient) EXPECT() *MockAgentPoolsClientMockRecorder
- func (m *MockAgentPoolsClient) Get(arg0 context.Context, arg1, arg2, arg3 string, ...) (armcontainerservice.AgentPoolsClientGetResponse, error)
- type MockAgentPoolsClientMockRecorder
- func (mr *MockAgentPoolsClientMockRecorder) BeginCreateOrUpdate(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call
- func (mr *MockAgentPoolsClientMockRecorder) BeginDeleteMachines(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call
- func (mr *MockAgentPoolsClientMockRecorder) Get(arg0, arg1, arg2, arg3, arg4 any) *gomock.Call
- type ScaleSet
- func (scaleSet *ScaleSet) AtomicIncreaseSize(delta int) error
- func (scaleSet *ScaleSet) Autoprovisioned() bool
- func (scaleSet *ScaleSet) Belongs(node *apiv1.Node) (bool, error)
- func (scaleSet *ScaleSet) Create() (cloudprovider.NodeGroup, error)
- func (scaleSet *ScaleSet) Debug() string
- func (scaleSet *ScaleSet) DecreaseTargetSize(delta int) error
- func (scaleSet *ScaleSet) Delete() error
- func (scaleSet *ScaleSet) DeleteInstances(instances []*azureRef, hasUnregisteredNodes bool) error
- func (scaleSet *ScaleSet) DeleteNodes(nodes []*apiv1.Node) error
- func (scaleSet *ScaleSet) Exist() bool
- func (scaleSet *ScaleSet) ForceDeleteNodes(nodes []*apiv1.Node) error
- func (scaleSet *ScaleSet) GetFlexibleScaleSetVms() ([]compute.VirtualMachine, *retry.Error)
- func (m *ScaleSet) GetKey() string
- func (scaleSet *ScaleSet) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
- func (scaleSet *ScaleSet) GetScaleSetVms() ([]compute.VirtualMachineScaleSetVM, *retry.Error)
- func (scaleSet *ScaleSet) Id() string
- func (scaleSet *ScaleSet) IncreaseSize(delta int) error
- func (scaleSet *ScaleSet) MaxSize() int
- func (scaleSet *ScaleSet) MinSize() int
- func (scaleSet *ScaleSet) Nodes() ([]cloudprovider.Instance, error)
- func (m *ScaleSet) String() string
- func (scaleSet *ScaleSet) TargetSize() (int, error)
- func (scaleSet *ScaleSet) TemplateNodeInfo() (*framework.NodeInfo, error)
- type VMsPool
- func (agentPool *VMsPool) AtomicIncreaseSize(delta int) error
- func (agentPool *VMsPool) Autoprovisioned() bool
- func (agentPool *VMsPool) Create() (cloudprovider.NodeGroup, error)
- func (agentPool *VMsPool) Debug() string
- func (agentPool *VMsPool) DecreaseTargetSize(delta int) error
- func (agentPool *VMsPool) Delete() error
- func (agentPool *VMsPool) DeleteNodes(nodes []*apiv1.Node) error
- func (agentPool *VMsPool) Exist() bool
- func (agentPool *VMsPool) ForceDeleteNodes(nodes []*apiv1.Node) error
- func (m *VMsPool) GetKey() string
- func (agentPool *VMsPool) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
- func (agentPool *VMsPool) Id() string
- func (agentPool *VMsPool) IncreaseSize(delta int) error
- func (agentPool *VMsPool) MaxSize() int
- func (agentPool *VMsPool) MinSize() int
- func (agentPool *VMsPool) Nodes() ([]cloudprovider.Instance, error)
- func (m *VMsPool) String() string
- func (agentPool *VMsPool) TargetSize() (int, error)
- func (agentPool *VMsPool) TemplateNodeInfo() (*framework.NodeInfo, error)
Constants ¶
const ( // AKSLabelPrefixValue represents the constant prefix for AKSLabelKeyPrefixValue AKSLabelPrefixValue = "kubernetes.azure.com" // AKSLabelKeyPrefixValue represents prefix for AKS Labels AKSLabelKeyPrefixValue = AKSLabelPrefixValue + "/" )
const ( // GPULabel is the label added to nodes with GPU resource. GPULabel = AKSLabelKeyPrefixValue + "accelerator" )
Variables ¶
var GetVMSSTypeDynamically = func(template compute.VirtualMachineScaleSet, azCache *azureCache) (InstanceType, error) { ctx := context.Background() var vmssType InstanceType sku, err := azCache.GetSKU(ctx, *template.Sku.Name, *template.Location) if err != nil { promoRe := regexp.MustCompile(`(?i)_promo`) skuName := promoRe.ReplaceAllString(*template.Sku.Name, "") if skuName != *template.Sku.Name { klog.V(1).Infof("No exact match found for %q, checking standard type %q. Error %v", *template.Sku.Name, skuName, err) sku, err = azCache.GetSKU(ctx, skuName, *template.Location) } if err != nil { return vmssType, fmt.Errorf("instance type %q not supported. Error %v", *template.Sku.Name, err) } } vmssType.VCPU, err = sku.VCPU() if err != nil { klog.V(1).Infof("Failed to parse vcpu from sku %q %v", *template.Sku.Name, err) return vmssType, err } gpu, err := getGpuFromSku(sku) if err != nil { klog.V(1).Infof("Failed to parse gpu from sku %q %v", *template.Sku.Name, err) return vmssType, err } vmssType.GPU = gpu memoryGb, err := sku.Memory() if err != nil { klog.V(1).Infof("Failed to parse memoryMb from sku %q %v", *template.Sku.Name, err) return vmssType, err } vmssType.MemoryMb = int64(memoryGb) * 1024 return vmssType, nil }
GetVMSSTypeDynamically fetched vmss instance information using sku api calls. It is declared as a variable for testing purpose.
var GetVMSSTypeStatically = func(template compute.VirtualMachineScaleSet) (*InstanceType, error) { var vmssType *InstanceType for k := range InstanceTypes { if strings.EqualFold(k, *template.Sku.Name) { vmssType = InstanceTypes[k] break } } promoRe := regexp.MustCompile(`(?i)_promo`) if promoRe.MatchString(*template.Sku.Name) { if vmssType == nil { klog.V(4).Infof("No exact match found for %s, checking standard types", *template.Sku.Name) skuName := promoRe.ReplaceAllString(*template.Sku.Name, "") for k := range InstanceTypes { if strings.EqualFold(k, skuName) { vmssType = InstanceTypes[k] break } } } } if vmssType == nil { return vmssType, fmt.Errorf("instance type %q not supported", *template.Sku.Name) } return vmssType, nil }
GetVMSSTypeStatically uses static list of vmss generated at azure_instance_types.go to fetch vmss instance information. It is declared as a variable for testing purpose.
var InstanceTypes = map[string]*InstanceType{}/* 804 elements not displayed */
InstanceTypes is a map of azure resources
var ( // NvidiaEnabledSKUs represents a list of NVIDIA gpus. // If a new GPU sku becomes available, add a key to this map, but only if you have a confirmation // that we have an agreement with NVIDIA for this specific gpu. NvidiaEnabledSKUs = map[string]bool{ "standard_nc6": true, "standard_nc12": true, "standard_nc24": true, "standard_nc24r": true, "standard_nv6": true, "standard_nv12": true, "standard_nv12s_v3": true, "standard_nv24": true, "standard_nv24s_v3": true, "standard_nv24r": true, "standard_nv48s_v3": true, "standard_nd6s": true, "standard_nd12s": true, "standard_nd24s": true, "standard_nd24rs": true, "standard_nc6s_v2": true, "standard_nc12s_v2": true, "standard_nc24s_v2": true, "standard_nc24rs_v2": true, "standard_nc6s_v3": true, "standard_nc12s_v3": true, "standard_nc24s_v3": true, "standard_nc24rs_v3": true, "standard_nd40s_v3": true, "standard_nd40rs_v2": true, "standard_nc4as_t4_v3": true, "standard_nc8as_t4_v3": true, "standard_nc16as_t4_v3": true, "standard_nc64as_t4_v3": true, "standard_nd96asr_v4": true, "standard_nd112asr_a100_v4": true, "standard_nd120asr_a100_v4": true, "standard_nd96amsr_a100_v4": true, "standard_nd112amsr_a100_v4": true, "standard_nd120amsr_a100_v4": true, "standard_nc24ads_a100_v4": true, "standard_nc48ads_a100_v4": true, "standard_nc96ads_a100_v4": true, } )
Functions ¶
func BuildAzure ¶
func BuildAzure(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider
BuildAzure builds Azure cloud provider, manager etc.
func BuildAzureCloudProvider ¶
func BuildAzureCloudProvider(azureManager *AzureManager, resourceLimiter *cloudprovider.ResourceLimiter) (cloudprovider.CloudProvider, error)
BuildAzureCloudProvider creates new AzureCloudProvider
func GetVMNameIndex ¶
func GetVMNameIndex(osType compute.OperatingSystemTypes, vmName string) (int, error)
GetVMNameIndex return the index of VM in the node pools.
func ParseLabelAutoDiscoverySpecs ¶
func ParseLabelAutoDiscoverySpecs(o cloudprovider.NodeGroupDiscoveryOptions) ([]labelAutoDiscoveryConfig, error)
ParseLabelAutoDiscoverySpecs returns any provided NodeGroupAutoDiscoverySpecs parsed into configuration appropriate for node group autodiscovery.
Types ¶
type AgentPool ¶
type AgentPool struct {
// contains filtered or unexported fields
}
AgentPool implements NodeGroup interface for agent pools deployed by aks-engine.
func NewAgentPool ¶
func NewAgentPool(spec *dynamic.NodeGroupSpec, az *AzureManager) (*AgentPool, error)
NewAgentPool creates a new AgentPool.
func (*AgentPool) AtomicIncreaseSize ¶
AtomicIncreaseSize is not implemented.
func (*AgentPool) Autoprovisioned ¶
Autoprovisioned returns true if the node group is autoprovisioned.
func (*AgentPool) Create ¶
func (as *AgentPool) Create() (cloudprovider.NodeGroup, error)
Create creates the node group on the cloud provider side.
func (*AgentPool) DecreaseTargetSize ¶
DecreaseTargetSize decreases the target size of the node group. This function doesn't permit to delete any existing node and can be used only to reduce the request for new nodes that have not been yet fulfilled. Delta should be negative. It is assumed that cloud provider will not delete the existing nodes if the size when there is an option to just decrease the target.
func (*AgentPool) Delete ¶
Delete deletes the node group on the cloud provider side. This will be executed only for autoprovisioned node groups, once their size drops to 0.
func (*AgentPool) DeleteInstances ¶
DeleteInstances deletes the given instances. All instances must be controlled by the same ASG.
func (*AgentPool) DeleteNodes ¶
DeleteNodes deletes the nodes from the group.
func (*AgentPool) Exist ¶
Exist checks if the node group really exists on the cloud provider side. Allows to tell the theoretical node group from the real one.
func (*AgentPool) ForceDeleteNodes ¶
ForceDeleteNodes deletes nodes from the group regardless of constraints.
func (*AgentPool) GetKey ¶
func (m *AgentPool) GetKey() string
GetKey returns key of the given azure reference.
func (*AgentPool) GetOptions ¶
func (as *AgentPool) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
GetOptions returns NodeGroupAutoscalingOptions that should be used for this particular NodeGroup. Returning a nil will result in using default options.
func (*AgentPool) GetVMIndexes ¶
GetVMIndexes gets indexes of all virtual machines belonging to the agent pool.
func (*AgentPool) IncreaseSize ¶
IncreaseSize increases agent pool size
func (*AgentPool) Nodes ¶
func (as *AgentPool) Nodes() ([]cloudprovider.Instance, error)
Nodes returns a list of all nodes that belong to this node group.
func (*AgentPool) String ¶
func (m *AgentPool) String() string
String is represented by calling GetKey()
func (*AgentPool) TargetSize ¶
TargetSize returns the current TARGET size of the node group. It is possible that the number is different from the number of nodes registered in Kubernetes.
type AgentPoolsClient ¶
type AgentPoolsClient interface { Get(ctx context.Context, resourceGroupName, resourceName, agentPoolName string, options *armcontainerservice.AgentPoolsClientGetOptions) ( armcontainerservice.AgentPoolsClientGetResponse, error) BeginCreateOrUpdate( ctx context.Context, resourceGroupName, resourceName, agentPoolName string, parameters armcontainerservice.AgentPool, options *armcontainerservice.AgentPoolsClientBeginCreateOrUpdateOptions) ( *runtime.Poller[armcontainerservice.AgentPoolsClientCreateOrUpdateResponse], error) BeginDeleteMachines( ctx context.Context, resourceGroupName, resourceName, agentPoolName string, machines armcontainerservice.AgentPoolDeleteMachinesParameter, options *armcontainerservice.AgentPoolsClientBeginDeleteMachinesOptions) ( *runtime.Poller[armcontainerservice.AgentPoolsClientDeleteMachinesResponse], error) }
AgentPoolsClient interface defines the methods needed for scaling vms pool. it is implemented by track2 sdk armcontainerservice.AgentPoolsClient
type AzUtil ¶
type AzUtil struct {
// contains filtered or unexported fields
}
AzUtil consists of utility functions which utilizes clients to different services. Since they span across various clients they cannot be fitted into individual client structs so adding them here.
func (*AzUtil) DeleteBlob ¶
DeleteBlob deletes the blob using the storage client.
type AzureCloudProvider ¶
type AzureCloudProvider struct {
// contains filtered or unexported fields
}
AzureCloudProvider provides implementation of CloudProvider interface for Azure.
func (*AzureCloudProvider) Cleanup ¶
func (azure *AzureCloudProvider) Cleanup() error
Cleanup stops the go routine that is handling the current view of the ASGs in the form of a cache
func (*AzureCloudProvider) GPULabel ¶
func (azure *AzureCloudProvider) GPULabel() string
GPULabel returns the label added to nodes with GPU resource.
func (*AzureCloudProvider) GetAvailableGPUTypes ¶
func (azure *AzureCloudProvider) GetAvailableGPUTypes() map[string]struct{}
GetAvailableGPUTypes return all available GPU types cloud provider supports
func (*AzureCloudProvider) GetAvailableMachineTypes ¶
func (azure *AzureCloudProvider) GetAvailableMachineTypes() ([]string, error)
GetAvailableMachineTypes get all machine types that can be requested from the cloud provider.
func (*AzureCloudProvider) GetNodeGpuConfig ¶
func (azure *AzureCloudProvider) GetNodeGpuConfig(node *apiv1.Node) *cloudprovider.GpuConfig
GetNodeGpuConfig returns the label, type and resource name for the GPU added to node. If node doesn't have any GPUs, it returns nil.
func (*AzureCloudProvider) GetResourceLimiter ¶
func (azure *AzureCloudProvider) GetResourceLimiter() (*cloudprovider.ResourceLimiter, error)
GetResourceLimiter returns struct containing limits (max, min) for resources (cores, memory etc.).
func (*AzureCloudProvider) HasInstance ¶
func (azure *AzureCloudProvider) HasInstance(node *apiv1.Node) (bool, error)
HasInstance returns whether a given node has a corresponding instance in this cloud provider.
Used to prevent undercount of existing VMs (taint-based overcount of deleted VMs), and so should not return false, nil (no instance) if uncertain; return error instead. (Think "has instance for sure, else error".) Returning an error causes fallback to taint-based determination; use ErrNotImplemented for silent fallback, any other error will be logged.
Expected behavior (should work for VMSS Uniform/Flex, and VMs): - exists : return true, nil - !exists : return *, ErrNotImplemented (could use custom error for autoscaled nodes) - unimplemented case : return *, ErrNotImplemented - any other error : return *, error
func (*AzureCloudProvider) Name ¶
func (azure *AzureCloudProvider) Name() string
Name returns name of the cloud provider.
func (*AzureCloudProvider) NewNodeGroup ¶
func (azure *AzureCloudProvider) NewNodeGroup(machineType string, labels map[string]string, systemLabels map[string]string, taints []apiv1.Taint, extraResources map[string]resource.Quantity) (cloudprovider.NodeGroup, error)
NewNodeGroup builds a theoretical node group based on the node definition provided. The node group is not automatically created on the cloud provider side. The node group is not returned by NodeGroups() until it is created.
func (*AzureCloudProvider) NodeGroupForNode ¶
func (azure *AzureCloudProvider) NodeGroupForNode(node *apiv1.Node) (cloudprovider.NodeGroup, error)
NodeGroupForNode returns the node group for the given node.
func (*AzureCloudProvider) NodeGroups ¶
func (azure *AzureCloudProvider) NodeGroups() []cloudprovider.NodeGroup
NodeGroups returns all node groups configured for this cloud provider.
func (*AzureCloudProvider) Pricing ¶
func (azure *AzureCloudProvider) Pricing() (cloudprovider.PricingModel, errors.AutoscalerError)
Pricing returns pricing model for this cloud provider or error if not available.
func (*AzureCloudProvider) Refresh ¶
func (azure *AzureCloudProvider) Refresh() error
Refresh is called before every main loop and can be used to dynamically update cloud provider state. In particular the list of node groups returned by NodeGroups can change as a result of CloudProvider.Refresh().
type AzureManager ¶
type AzureManager struct {
// contains filtered or unexported fields
}
AzureManager handles Azure communication and data caching.
func CreateAzureManager ¶
func CreateAzureManager(configReader io.Reader, discoveryOpts cloudprovider.NodeGroupDiscoveryOptions) (*AzureManager, error)
CreateAzureManager creates Azure Manager object to work with Azure.
func (*AzureManager) GetNodeGroupForInstance ¶
func (m *AzureManager) GetNodeGroupForInstance(instance *azureRef) (cloudprovider.NodeGroup, error)
GetNodeGroupForInstance returns the NodeGroup of the given Instance
func (*AzureManager) GetScaleSetOptions ¶
func (m *AzureManager) GetScaleSetOptions(scaleSetName string, defaults config.NodeGroupAutoscalingOptions) *config.NodeGroupAutoscalingOptions
GetScaleSetOptions parse options extracted from VMSS tags and merges them with provided defaults
func (*AzureManager) Refresh ¶
func (m *AzureManager) Refresh() error
Refresh is called before every main loop and can be used to dynamically update cloud provider state. In particular the list of node groups returned by NodeGroups can change as a result of CloudProvider.Refresh().
func (*AzureManager) RegisterNodeGroup ¶
func (m *AzureManager) RegisterNodeGroup(nodeGroup cloudprovider.NodeGroup) bool
RegisterNodeGroup registers an a NodeGroup.
func (*AzureManager) UnregisterNodeGroup ¶
func (m *AzureManager) UnregisterNodeGroup(nodeGroup cloudprovider.NodeGroup) bool
UnregisterNodeGroup unregisters a NodeGroup.
type Config ¶
type Config struct { // Azure cloud provider configuration, which is generally shared with other Azure components. providerazure.Config `json:",inline" yaml:",inline"` ClusterName string `json:"clusterName" yaml:"clusterName"` // ClusterResourceGroup is the resource group where the cluster is located. ClusterResourceGroup string `json:"clusterResourceGroup" yaml:"clusterResourceGroup"` // ARMBaseURLForAPClient is the URL to use for operations for the VMs pool. // It can override the default public ARM endpoint for VMs pool scale operations. ARMBaseURLForAPClient string `json:"armBaseURLForAPClient" yaml:"armBaseURLForAPClient"` // AuthMethod determines how to authorize requests for the Azure // cloud. Valid options are "principal" (= the traditional // service principle approach) and "cli" (= load az command line // config file). The default is "principal". // 08/16/2024: This field is awkward, given the existence of UseManagedIdentityExtension and UseFederatedWorkloadIdentityExtension. // Ideally, either it should be deprecated, or reworked to be on the same "dimension" as the two above, if not reworking those two. AuthMethod string `json:"authMethod" yaml:"authMethod"` // Configs only for standard vmType (agent pools). Deployment string `json:"deployment" yaml:"deployment"` DeploymentParameters map[string]interface{} `json:"deploymentParameters" yaml:"deploymentParameters"` // Jitter in seconds subtracted from the VMSS cache TTL before the first refresh VmssVmsCacheJitter int `json:"vmssVmsCacheJitter" yaml:"vmssVmsCacheJitter"` // number of latest deployments that will not be deleted MaxDeploymentsCount int64 `json:"maxDeploymentsCount" yaml:"maxDeploymentsCount"` // EnableForceDelete defines whether to enable force deletion on the APIs EnableForceDelete bool `json:"enableForceDelete,omitempty" yaml:"enableForceDelete,omitempty"` // (DEPRECATED, DO NOT USE) EnableDynamicInstanceList defines whether to enable dynamic instance workflow for instance information check EnableDynamicInstanceList bool `json:"enableDynamicInstanceList,omitempty" yaml:"enableDynamicInstanceList,omitempty"` // (DEPRECATED, DO NOT USE) EnableDetailedCSEMessage defines whether to emit error messages in the CSE error body info EnableDetailedCSEMessage bool `json:"enableDetailedCSEMessage,omitempty" yaml:"enableDetailedCSEMessage,omitempty"` // (DEPRECATED, DO NOT USE) GetVmssSizeRefreshPeriod (seconds) defines how frequently to call GET VMSS API to fetch VMSS info per nodegroup instance GetVmssSizeRefreshPeriod int `json:"getVmssSizeRefreshPeriod,omitempty" yaml:"getVmssSizeRefreshPeriod,omitempty"` // StrictCacheUpdates updates cache values only after positive validation from Azure APIs StrictCacheUpdates bool `json:"strictCacheUpdates,omitempty" yaml:"strictCacheUpdates,omitempty"` // EnableFastDeleteOnFailedProvisioning defines whether to delete the experimental faster VMSS instance deletion on failed provisioning EnableFastDeleteOnFailedProvisioning bool `json:"enableFastDeleteOnFailedProvisioning,omitempty" yaml:"enableFastDeleteOnFailedProvisioning,omitempty"` // contains filtered or unexported fields }
Config holds the configuration parsed from the --cloud-config flag or the environment variables. Contains both general Azure cloud provider configuration (i.e., in azure.json) and CAS configurations/options specifically for Azure provider.
type DeploymentClientMock ¶
type DeploymentClientMock struct { mock.Mock FakeStore map[string]resources.DeploymentExtended // contains filtered or unexported fields }
DeploymentClientMock mocks for DeploymentsClient.
func (*DeploymentClientMock) CreateOrUpdate ¶
func (m *DeploymentClientMock) CreateOrUpdate(ctx context.Context, resourceGroupName string, deploymentName string, parameters resources.Deployment, etag string) (err *retry.Error)
CreateOrUpdate creates or updates the Deployment.
func (*DeploymentClientMock) Delete ¶
func (m *DeploymentClientMock) Delete(ctx context.Context, resourceGroupName, deploymentName string) (err *retry.Error)
Delete deletes the given deployment
func (*DeploymentClientMock) ExportTemplate ¶
func (m *DeploymentClientMock) ExportTemplate(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExportResult, err *retry.Error)
ExportTemplate exports the deployment's template.
func (*DeploymentClientMock) Get ¶
func (m *DeploymentClientMock) Get(ctx context.Context, resourceGroupName string, deploymentName string) (result resources.DeploymentExtended, err *retry.Error)
Get gets the DeploymentExtended by deploymentName.
func (*DeploymentClientMock) List ¶
func (m *DeploymentClientMock) List(ctx context.Context, resourceGroupName string) (result []resources.DeploymentExtended, err *retry.Error)
List gets all the deployments for a resource group.
type InstanceCache ¶
type InstanceCache struct {
// contains filtered or unexported fields
}
InstanceCache tracks the VMs in the ScaleSet, in the form of corresponding cloudprovider.Instances. This struct also contains related locks and cache interval variables.
type InstanceType ¶
type InstanceType struct { InstanceType string SkuFamily string VCPU int64 MemoryMb int64 GPU int64 }
InstanceType is the sepc of Azure instance
type MockAgentPoolsClient ¶
type MockAgentPoolsClient struct {
// contains filtered or unexported fields
}
MockAgentPoolsClient is a mock of AgentPoolsClient interface.
func NewMockAgentPoolsClient ¶
func NewMockAgentPoolsClient(ctrl *gomock.Controller) *MockAgentPoolsClient
NewMockAgentPoolsClient creates a new mock instance.
func (*MockAgentPoolsClient) BeginCreateOrUpdate ¶
func (m *MockAgentPoolsClient) BeginCreateOrUpdate(arg0 context.Context, arg1, arg2, arg3 string, arg4 armcontainerservice.AgentPool, arg5 *armcontainerservice.AgentPoolsClientBeginCreateOrUpdateOptions) (*runtime.Poller[armcontainerservice.AgentPoolsClientCreateOrUpdateResponse], error)
BeginCreateOrUpdate mocks base method.
func (*MockAgentPoolsClient) BeginDeleteMachines ¶
func (m *MockAgentPoolsClient) BeginDeleteMachines(arg0 context.Context, arg1, arg2, arg3 string, arg4 armcontainerservice.AgentPoolDeleteMachinesParameter, arg5 *armcontainerservice.AgentPoolsClientBeginDeleteMachinesOptions) (*runtime.Poller[armcontainerservice.AgentPoolsClientDeleteMachinesResponse], error)
BeginDeleteMachines mocks base method.
func (*MockAgentPoolsClient) EXPECT ¶
func (m *MockAgentPoolsClient) EXPECT() *MockAgentPoolsClientMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockAgentPoolsClient) Get ¶
func (m *MockAgentPoolsClient) Get(arg0 context.Context, arg1, arg2, arg3 string, arg4 *armcontainerservice.AgentPoolsClientGetOptions) (armcontainerservice.AgentPoolsClientGetResponse, error)
Get mocks base method.
type MockAgentPoolsClientMockRecorder ¶
type MockAgentPoolsClientMockRecorder struct {
// contains filtered or unexported fields
}
MockAgentPoolsClientMockRecorder is the mock recorder for MockAgentPoolsClient.
func (*MockAgentPoolsClientMockRecorder) BeginCreateOrUpdate ¶
func (mr *MockAgentPoolsClientMockRecorder) BeginCreateOrUpdate(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call
BeginCreateOrUpdate indicates an expected call of BeginCreateOrUpdate.
func (*MockAgentPoolsClientMockRecorder) BeginDeleteMachines ¶
func (mr *MockAgentPoolsClientMockRecorder) BeginDeleteMachines(arg0, arg1, arg2, arg3, arg4, arg5 any) *gomock.Call
BeginDeleteMachines indicates an expected call of BeginDeleteMachines.
type ScaleSet ¶
type ScaleSet struct { InstanceCache // contains filtered or unexported fields }
ScaleSet implements NodeGroup interface.
func NewScaleSet ¶
func NewScaleSet(spec *dynamic.NodeGroupSpec, az *AzureManager, curSize int64, dedicatedHost bool) (*ScaleSet, error)
NewScaleSet creates a new NewScaleSet.
func (*ScaleSet) AtomicIncreaseSize ¶
AtomicIncreaseSize is not implemented.
func (*ScaleSet) Autoprovisioned ¶
Autoprovisioned returns true if the node group is autoprovisioned.
func (*ScaleSet) Create ¶
func (scaleSet *ScaleSet) Create() (cloudprovider.NodeGroup, error)
Create creates the node group on the cloud provider side.
func (*ScaleSet) DecreaseTargetSize ¶
DecreaseTargetSize decreases the target size of the node group. This function doesn't permit to delete any existing node and can be used only to reduce the request for new nodes that have not been yet fulfilled. Delta should be negative. It is assumed that cloud provider will not delete the existing nodes if the size when there is an option to just decrease the target.
func (*ScaleSet) Delete ¶
Delete deletes the node group on the cloud provider side. This will be executed only for autoprovisioned node groups, once their size drops to 0.
func (*ScaleSet) DeleteInstances ¶
DeleteInstances deletes the given instances. All instances must be controlled by the same nodegroup.
func (*ScaleSet) DeleteNodes ¶
DeleteNodes deletes the nodes from the group.
func (*ScaleSet) Exist ¶
Exist checks if the node group really exists on the cloud provider side. Allows to tell the theoretical node group from the real one.
func (*ScaleSet) ForceDeleteNodes ¶
ForceDeleteNodes deletes nodes from the group regardless of constraints.
func (*ScaleSet) GetFlexibleScaleSetVms ¶
func (scaleSet *ScaleSet) GetFlexibleScaleSetVms() ([]compute.VirtualMachine, *retry.Error)
GetFlexibleScaleSetVms returns list of nodes for flexible scale set.
func (*ScaleSet) GetKey ¶
func (m *ScaleSet) GetKey() string
GetKey returns key of the given azure reference.
func (*ScaleSet) GetOptions ¶
func (scaleSet *ScaleSet) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
GetOptions returns NodeGroupAutoscalingOptions that should be used for this particular NodeGroup. Returning a nil will result in using default options.
func (*ScaleSet) GetScaleSetVms ¶
func (scaleSet *ScaleSet) GetScaleSetVms() ([]compute.VirtualMachineScaleSetVM, *retry.Error)
GetScaleSetVms returns list of nodes for the given scale set.
func (*ScaleSet) IncreaseSize ¶
IncreaseSize increases Scale Set size
func (*ScaleSet) Nodes ¶
func (scaleSet *ScaleSet) Nodes() ([]cloudprovider.Instance, error)
Nodes returns a list of all nodes that belong to this node group.
func (*ScaleSet) String ¶
func (m *ScaleSet) String() string
String is represented by calling GetKey()
func (*ScaleSet) TargetSize ¶
TargetSize returns the current TARGET size of the node group. It is possible that the number is different from the number of nodes registered in Kubernetes.
type VMsPool ¶
type VMsPool struct {
// contains filtered or unexported fields
}
VMsPool is single instance VM pool this is a placeholder for now, no real implementation
func NewVMsPool ¶
func NewVMsPool(spec *dynamic.NodeGroupSpec, am *AzureManager) *VMsPool
NewVMsPool creates a new VMsPool
func (*VMsPool) AtomicIncreaseSize ¶
AtomicIncreaseSize is not implemented.
func (*VMsPool) Autoprovisioned ¶
Autoprovisioned is always false since we are initialized with an existing agentpool
func (*VMsPool) Create ¶
func (agentPool *VMsPool) Create() (cloudprovider.NodeGroup, error)
Create creates the node group on the cloud provider side.
func (*VMsPool) DecreaseTargetSize ¶
DecreaseTargetSize decreases the target size of the node group.
func (*VMsPool) DeleteNodes ¶
DeleteNodes extracts the providerIDs from the node spec and delete or deallocate the nodes from the agent pool based on the scale down policy.
func (*VMsPool) ForceDeleteNodes ¶
ForceDeleteNodes deletes nodes from the group regardless of constraints.
func (*VMsPool) GetKey ¶
func (m *VMsPool) GetKey() string
GetKey returns key of the given azure reference.
func (*VMsPool) GetOptions ¶
func (agentPool *VMsPool) GetOptions(defaults config.NodeGroupAutoscalingOptions) (*config.NodeGroupAutoscalingOptions, error)
GetOptions returns NodeGroupAutoscalingOptions that should be used for this particular NodeGroup. Returning a nil will result in using default options.
func (*VMsPool) IncreaseSize ¶
IncreaseSize increase the size through a PUT AP call. It calculates the expected size based on a delta provided as parameter
func (*VMsPool) MaxSize ¶
MaxSize returns the maximum size scale limit provided by --node parameter to the autoscaler main
func (*VMsPool) MinSize ¶
MinSize returns the minimum size the cluster is allowed to scaled down to as provided by the node spec in --node parameter.
func (*VMsPool) Nodes ¶
func (agentPool *VMsPool) Nodes() ([]cloudprovider.Instance, error)
Nodes returns the list of nodes in the vms agentPool.
func (*VMsPool) String ¶
func (m *VMsPool) String() string
String is represented by calling GetKey()
func (*VMsPool) TargetSize ¶
TargetSize returns the current TARGET size of the node group. It is possible that the number is different from the number of nodes registered in Kubernetes.
Source Files ¶
- azure_agent_pool.go
- azure_autodiscovery.go
- azure_cache.go
- azure_client.go
- azure_cloud_provider.go
- azure_config.go
- azure_fakes.go
- azure_force_delete_scale_set.go
- azure_instance.go
- azure_instance_gpu_sku.go
- azure_instance_types.go
- azure_manager.go
- azure_mock_agentpool_client.go
- azure_scale_set.go
- azure_scale_set_instance_cache.go
- azure_template.go
- azure_util.go
- azure_vms_pool.go