@@ -42,7 +42,6 @@ import (
42
42
"k8s.io/client-go/pkg/version"
43
43
"k8s.io/client-go/tools/cache"
44
44
"k8s.io/client-go/tools/record"
45
- "k8s.io/client-go/util/flowcontrol"
46
45
cloudprovider "k8s.io/cloud-provider"
47
46
"k8s.io/klog"
48
47
"k8s.io/legacy-cloud-providers/azure/auth"
@@ -101,6 +100,7 @@ var (
101
100
// for more details.
102
101
type Config struct {
103
102
auth.AzureAuthConfig
103
+ CloudProviderRateLimitConfig
104
104
105
105
// The name of the resource group that the cluster is deployed in
106
106
ResourceGroup string `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`
@@ -149,17 +149,6 @@ type Config struct {
149
149
// CloudProviderBackoffJitter are omitted.
150
150
// "default" will be used if not specified.
151
151
CloudProviderBackoffMode string `json:"cloudProviderBackoffMode,omitempty" yaml:"cloudProviderBackoffMode,omitempty"`
152
- // Enable rate limiting
153
- CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty" yaml:"cloudProviderRateLimit,omitempty"`
154
- // Rate limit QPS (Read)
155
- CloudProviderRateLimitQPS float32 `json:"cloudProviderRateLimitQPS,omitempty" yaml:"cloudProviderRateLimitQPS,omitempty"`
156
- // Rate limit Bucket Size
157
- CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty" yaml:"cloudProviderRateLimitBucket,omitempty"`
158
- // Rate limit QPS (Write)
159
- CloudProviderRateLimitQPSWrite float32 `json:"cloudProviderRateLimitQPSWrite,omitempty" yaml:"cloudProviderRateLimitQPSWrite,omitempty"`
160
- // Rate limit Bucket Size
161
- CloudProviderRateLimitBucketWrite int `json:"cloudProviderRateLimitBucketWrite,omitempty" yaml:"cloudProviderRateLimitBucketWrite,omitempty"`
162
-
163
152
// Use instance metadata service where possible
164
153
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty" yaml:"useInstanceMetadata,omitempty"`
165
154
@@ -220,22 +209,27 @@ var _ cloudprovider.PVLabeler = (*Cloud)(nil)
220
209
// Cloud holds the config and clients
221
210
type Cloud struct {
222
211
Config
223
- Environment azure.Environment
224
- RoutesClient RoutesClient
225
- SubnetsClient SubnetsClient
226
- InterfacesClient InterfacesClient
227
- RouteTablesClient RouteTablesClient
228
- LoadBalancerClient LoadBalancersClient
229
- PublicIPAddressesClient PublicIPAddressesClient
230
- SecurityGroupsClient SecurityGroupsClient
231
- VirtualMachinesClient VirtualMachinesClient
232
- StorageAccountClient StorageAccountClient
233
- DisksClient DisksClient
234
- SnapshotsClient * compute.SnapshotsClient
235
- FileClient FileClient
236
- ResourceRequestBackoff wait.Backoff
237
- metadata * InstanceMetadataService
238
- vmSet VMSet
212
+ Environment azure.Environment
213
+
214
+ RoutesClient RoutesClient
215
+ SubnetsClient SubnetsClient
216
+ InterfacesClient InterfacesClient
217
+ RouteTablesClient RouteTablesClient
218
+ LoadBalancerClient LoadBalancersClient
219
+ PublicIPAddressesClient PublicIPAddressesClient
220
+ SecurityGroupsClient SecurityGroupsClient
221
+ VirtualMachinesClient VirtualMachinesClient
222
+ StorageAccountClient StorageAccountClient
223
+ DisksClient DisksClient
224
+ SnapshotsClient * compute.SnapshotsClient
225
+ FileClient FileClient
226
+ VirtualMachineScaleSetsClient VirtualMachineScaleSetsClient
227
+ VirtualMachineScaleSetVMsClient VirtualMachineScaleSetVMsClient
228
+ VirtualMachineSizesClient VirtualMachineSizesClient
229
+
230
+ ResourceRequestBackoff wait.Backoff
231
+ metadata * InstanceMetadataService
232
+ vmSet VMSet
239
233
240
234
// ipv6DualStack allows overriding for unit testing. It's normally initialized from featuregates
241
235
ipv6DualStackEnabled bool
@@ -256,13 +250,6 @@ type Cloud struct {
256
250
// routeCIDRs holds cache for route CIDRs.
257
251
routeCIDRs map [string ]string
258
252
259
- // Clients for vmss.
260
- VirtualMachineScaleSetsClient VirtualMachineScaleSetsClient
261
- VirtualMachineScaleSetVMsClient VirtualMachineScaleSetVMsClient
262
-
263
- // client for vm sizes list
264
- VirtualMachineSizesClient VirtualMachineSizesClient
265
-
266
253
kubeClient clientset.Interface
267
254
eventBroadcaster record.EventBroadcaster
268
255
eventRecorder record.EventRecorder
@@ -385,43 +372,8 @@ func (az *Cloud) InitializeCloudFromConfig(config *Config, fromSecret bool) erro
385
372
return err
386
373
}
387
374
388
- // operationPollRateLimiter.Accept() is a no-op if rate limits are configured off.
389
- operationPollRateLimiter := flowcontrol .NewFakeAlwaysRateLimiter ()
390
- operationPollRateLimiterWrite := flowcontrol .NewFakeAlwaysRateLimiter ()
391
-
392
- // If reader is provided (and no writer) we will
393
- // use the same value for both.
394
- if config .CloudProviderRateLimit {
395
- // Assign rate limit defaults if no configuration was passed in
396
- if config .CloudProviderRateLimitQPS == 0 {
397
- config .CloudProviderRateLimitQPS = rateLimitQPSDefault
398
- }
399
- if config .CloudProviderRateLimitBucket == 0 {
400
- config .CloudProviderRateLimitBucket = rateLimitBucketDefault
401
- }
402
- if config .CloudProviderRateLimitQPSWrite == 0 {
403
- config .CloudProviderRateLimitQPSWrite = rateLimitQPSDefault
404
- }
405
- if config .CloudProviderRateLimitBucketWrite == 0 {
406
- config .CloudProviderRateLimitBucketWrite = rateLimitBucketDefault
407
- }
408
-
409
- operationPollRateLimiter = flowcontrol .NewTokenBucketRateLimiter (
410
- config .CloudProviderRateLimitQPS ,
411
- config .CloudProviderRateLimitBucket )
412
-
413
- operationPollRateLimiterWrite = flowcontrol .NewTokenBucketRateLimiter (
414
- config .CloudProviderRateLimitQPSWrite ,
415
- config .CloudProviderRateLimitBucketWrite )
416
-
417
- klog .V (2 ).Infof ("Azure cloudprovider (read ops) using rate limit config: QPS=%g, bucket=%d" ,
418
- config .CloudProviderRateLimitQPS ,
419
- config .CloudProviderRateLimitBucket )
420
-
421
- klog .V (2 ).Infof ("Azure cloudprovider (write ops) using rate limit config: QPS=%g, bucket=%d" ,
422
- config .CloudProviderRateLimitQPSWrite ,
423
- config .CloudProviderRateLimitBucketWrite )
424
- }
375
+ // Initialize rate limiting config options.
376
+ InitializeCloudProviderRateLimitConfig (& config .CloudProviderRateLimitConfig )
425
377
426
378
// Conditionally configure resource request backoff
427
379
resourceRequestBackoff := wait.Backoff {
@@ -500,26 +452,25 @@ func (az *Cloud) InitializeCloudFromConfig(config *Config, fromSecret bool) erro
500
452
subscriptionID : config .SubscriptionID ,
501
453
resourceManagerEndpoint : env .ResourceManagerEndpoint ,
502
454
servicePrincipalToken : servicePrincipalToken ,
503
- rateLimiterReader : operationPollRateLimiter ,
504
- rateLimiterWriter : operationPollRateLimiterWrite ,
505
455
CloudProviderBackoffRetries : config .CloudProviderBackoffRetries ,
506
456
CloudProviderBackoffDuration : config .CloudProviderBackoffDuration ,
507
457
ShouldOmitCloudProviderBackoff : config .shouldOmitCloudProviderBackoff (),
508
458
}
509
- az .DisksClient = newAzDisksClient (azClientConfig )
510
- az .SnapshotsClient = newSnapshotsClient (azClientConfig )
511
- az .RoutesClient = newAzRoutesClient (azClientConfig )
512
- az .SubnetsClient = newAzSubnetsClient (azClientConfig )
513
- az .InterfacesClient = newAzInterfacesClient (azClientConfig )
514
- az .RouteTablesClient = newAzRouteTablesClient (azClientConfig )
515
- az .LoadBalancerClient = newAzLoadBalancersClient (azClientConfig )
516
- az .SecurityGroupsClient = newAzSecurityGroupsClient (azClientConfig )
517
- az .StorageAccountClient = newAzStorageAccountClient (azClientConfig )
518
- az .VirtualMachinesClient = newAzVirtualMachinesClient (azClientConfig )
519
- az .PublicIPAddressesClient = newAzPublicIPAddressesClient (azClientConfig )
520
- az .VirtualMachineSizesClient = newAzVirtualMachineSizesClient (azClientConfig )
521
- az .VirtualMachineScaleSetsClient = newAzVirtualMachineScaleSetsClient (azClientConfig )
522
- az .VirtualMachineScaleSetVMsClient = newAzVirtualMachineScaleSetVMsClient (azClientConfig )
459
+ az .DisksClient = newAzDisksClient (azClientConfig .WithRateLimiter (config .DiskRateLimit ))
460
+ az .SnapshotsClient = newSnapshotsClient (azClientConfig .WithRateLimiter (config .SnapshotRateLimit ))
461
+ az .RoutesClient = newAzRoutesClient (azClientConfig .WithRateLimiter (config .RouteRateLimit ))
462
+ az .SubnetsClient = newAzSubnetsClient (azClientConfig .WithRateLimiter (config .SubnetsRateLimit ))
463
+ az .InterfacesClient = newAzInterfacesClient (azClientConfig .WithRateLimiter (config .InterfaceRateLimit ))
464
+ az .RouteTablesClient = newAzRouteTablesClient (azClientConfig .WithRateLimiter (config .RouteTableRateLimit ))
465
+ az .LoadBalancerClient = newAzLoadBalancersClient (azClientConfig .WithRateLimiter (config .LoadBalancerRateLimit ))
466
+ az .SecurityGroupsClient = newAzSecurityGroupsClient (azClientConfig .WithRateLimiter (config .SecurityGroupRateLimit ))
467
+ az .StorageAccountClient = newAzStorageAccountClient (azClientConfig .WithRateLimiter (config .StorageAccountRateLimit ))
468
+ az .VirtualMachinesClient = newAzVirtualMachinesClient (azClientConfig .WithRateLimiter (config .VirtualMachineRateLimit ))
469
+ az .PublicIPAddressesClient = newAzPublicIPAddressesClient (azClientConfig .WithRateLimiter (config .PublicIPAddressRateLimit ))
470
+ az .VirtualMachineSizesClient = newAzVirtualMachineSizesClient (azClientConfig .WithRateLimiter (config .VirtualMachineSizeRateLimit ))
471
+ az .VirtualMachineScaleSetsClient = newAzVirtualMachineScaleSetsClient (azClientConfig .WithRateLimiter (config .VirtualMachineScaleSetRateLimit ))
472
+ az .VirtualMachineScaleSetVMsClient = newAzVirtualMachineScaleSetVMsClient (azClientConfig .WithRateLimiter (config .VirtualMachineScaleSetRateLimit ))
473
+ // TODO(feiskyer): refactor azureFileClient to Interface.
523
474
az .FileClient = & azureFileClient {env : * env }
524
475
525
476
if az .MaximumLoadBalancerRuleCount == 0 {
0 commit comments