Skip to content

Commit e365448

Browse files
committed
Configurable QPS and Burst for k8s clients
1 parent 9b4fc92 commit e365448

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

cmd/csi-resizer/main.go

+21-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import (
2020
"context"
2121
"flag"
2222
"fmt"
23+
"k8s.io/client-go/kubernetes"
24+
"k8s.io/client-go/rest"
25+
"k8s.io/client-go/tools/clientcmd"
2326
"os"
2427
"time"
2528

@@ -54,6 +57,9 @@ var (
5457
metricsAddress = flag.String("metrics-address", "", "The TCP network address where the prometheus metrics endpoint will listen (example: `:8080`). The default is empty string, which means metrics endpoint is disabled.")
5558
metricsPath = flag.String("metrics-path", "/metrics", "The HTTP path where prometheus metrics will be exposed. Default is `/metrics`.")
5659

60+
kubeAPIQPS = flag.Float64("kube-api-qps", 5, "QPS to use while communicating with the kubernetes apiserver. Defaults to 5.0.")
61+
kubeAPIBurst = flag.Int("kube-api-burst", 10, "Burst to use while communicating with the kubernetes apiserver. Defaults to 10.")
62+
5763
handleVolumeInUseError = flag.Bool("handle-volume-inuse-error", true, "Flag to turn on/off capability to handle volume in use error in resizer controller. Defaults to true if not set.")
5864

5965
version = "unknown"
@@ -70,7 +76,21 @@ func main() {
7076
}
7177
klog.Infof("Version : %s", version)
7278

73-
kubeClient, err := util.NewK8sClient(*master, *kubeConfig)
79+
var config *rest.Config
80+
var err error
81+
if *master != "" || *kubeConfig != "" {
82+
config, err = clientcmd.BuildConfigFromFlags(*master, *kubeConfig)
83+
} else {
84+
config, err = rest.InClusterConfig()
85+
}
86+
if err != nil {
87+
klog.Fatal(err.Error())
88+
}
89+
90+
config.QPS = float32(*kubeAPIQPS)
91+
config.Burst = *kubeAPIBurst
92+
93+
kubeClient, err := kubernetes.NewForConfig(config)
7494
if err != nil {
7595
klog.Fatal(err.Error())
7696
}

pkg/util/util.go

+1-22
Original file line numberDiff line numberDiff line change
@@ -22,42 +22,21 @@ import (
2222
"fmt"
2323
"regexp"
2424

25-
v1 "k8s.io/api/core/v1"
25+
"k8s.io/api/core/v1"
2626
"k8s.io/apimachinery/pkg/api/meta"
2727
"k8s.io/apimachinery/pkg/api/resource"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3030
"k8s.io/apimachinery/pkg/types"
3131
"k8s.io/apimachinery/pkg/util/strategicpatch"
3232
"k8s.io/client-go/kubernetes"
33-
"k8s.io/client-go/rest"
34-
"k8s.io/client-go/tools/clientcmd"
3533
)
3634

3735
var knownResizeConditions = map[v1.PersistentVolumeClaimConditionType]bool{
3836
v1.PersistentVolumeClaimResizing: true,
3937
v1.PersistentVolumeClaimFileSystemResizePending: true,
4038
}
4139

42-
// NewK8sClient is an utility function used to create a kubernetes sdk client.
43-
func NewK8sClient(master, kubeConfig string) (kubernetes.Interface, error) {
44-
var config *rest.Config
45-
var err error
46-
if master != "" || kubeConfig != "" {
47-
config, err = clientcmd.BuildConfigFromFlags(master, kubeConfig)
48-
} else {
49-
config, err = rest.InClusterConfig()
50-
}
51-
if err != nil {
52-
return nil, fmt.Errorf("failed to create config: %v", err)
53-
}
54-
kubeClient, err := kubernetes.NewForConfig(config)
55-
if err != nil {
56-
return nil, fmt.Errorf("failed to create client: %v", err)
57-
}
58-
return kubeClient, nil
59-
}
60-
6140
// PVCKey returns an unique key of a PVC object,
6241
func PVCKey(pvc *v1.PersistentVolumeClaim) string {
6342
return fmt.Sprintf("%s/%s", pvc.Namespace, pvc.Name)

0 commit comments

Comments
 (0)