mirror of https://github.com/k3s-io/k3s
Merge pull request #57644 from feiskyer/vmss-master
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Reduce VirtualMachineScaleSetsClient#List calls for Azure cloud provider **What this PR does / why we need it**: For master nodes not managed by VMSS, current cloud provider would updateCaches each time when finding master nodes info. This could result in call limits of `VirtualMachineScaleSetsClient#List`. This PR adds a caches to those nodes which reduces the cache updating significantly. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Continue of #43287. **Special notes for your reviewer**: **Release note**: ```release-note NONE ```pull/6/head
commit
746464bc16
|
@ -132,7 +132,7 @@ type Config struct {
|
|||
MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount"`
|
||||
}
|
||||
|
||||
// VirtualMachinesClient defines needed functions for azure network.VirtualMachinesClient
|
||||
// VirtualMachinesClient defines needed functions for azure compute.VirtualMachinesClient
|
||||
type VirtualMachinesClient interface {
|
||||
CreateOrUpdate(resourceGroupName string, VMName string, parameters compute.VirtualMachine, cancel <-chan struct{}) (<-chan compute.VirtualMachine, <-chan error)
|
||||
Get(resourceGroupName string, VMName string, expand compute.InstanceViewTypes) (result compute.VirtualMachine, err error)
|
||||
|
|
|
@ -76,15 +76,17 @@ type scaleSet struct {
|
|||
cacheMutex sync.Mutex
|
||||
// A local cache of scale sets. The key is scale set name and the value is a
|
||||
// list of virtual machines belonging to the scale set.
|
||||
cache map[string][]scaleSetVMInfo
|
||||
cache map[string][]scaleSetVMInfo
|
||||
availabilitySetNodesCache sets.String
|
||||
}
|
||||
|
||||
// newScaleSet creates a new scaleSet.
|
||||
func newScaleSet(az *Cloud) VMSet {
|
||||
ss := &scaleSet{
|
||||
Cloud: az,
|
||||
availabilitySet: newAvailabilitySet(az),
|
||||
cache: make(map[string][]scaleSetVMInfo),
|
||||
Cloud: az,
|
||||
availabilitySet: newAvailabilitySet(az),
|
||||
availabilitySetNodesCache: sets.NewString(),
|
||||
cache: make(map[string][]scaleSetVMInfo),
|
||||
}
|
||||
|
||||
go wait.Until(func() {
|
||||
|
@ -179,6 +181,11 @@ func (ss *scaleSet) getCachedVirtualMachine(nodeName string) (scaleSetVMInfo, er
|
|||
return vm, nil
|
||||
}
|
||||
|
||||
// Known node not managed by scale sets.
|
||||
if ss.availabilitySetNodesCache.Has(nodeName) {
|
||||
return scaleSetVMInfo{}, cloudprovider.InstanceNotFound
|
||||
}
|
||||
|
||||
// Update cache and try again.
|
||||
if err = ss.updateCache(); err != nil {
|
||||
return scaleSetVMInfo{}, err
|
||||
|
@ -188,6 +195,8 @@ func (ss *scaleSet) getCachedVirtualMachine(nodeName string) (scaleSetVMInfo, er
|
|||
return vm, nil
|
||||
}
|
||||
|
||||
// Node still not found, assuming it is not managed by scale sets.
|
||||
ss.availabilitySetNodesCache.Insert(nodeName)
|
||||
return scaleSetVMInfo{}, cloudprovider.InstanceNotFound
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue