diff --git a/cmd/aws-k8s-agent/main.go b/cmd/aws-k8s-agent/main.go index b69f7fab16..1d3b7dde59 100644 --- a/cmd/aws-k8s-agent/main.go +++ b/cmd/aws-k8s-agent/main.go @@ -44,13 +44,19 @@ func _main() int { return 1 } - rawK8SClient, err := k8sapi.CreateKubeClient() + mapper, err := k8sapi.InitializeRestMapper() + if err != nil { + log.Errorf("Failed to initialize kube client mapper: %s", err) + return 1 + } + + rawK8SClient, err := k8sapi.CreateKubeClient(mapper) if err != nil { log.Errorf("Failed to create kube client: %s", err) return 1 } - cacheK8SClient, err := k8sapi.CreateCachedKubeClient(rawK8SClient) + cacheK8SClient, err := k8sapi.CreateCachedKubeClient(rawK8SClient, mapper) if err != nil { log.Errorf("Failed to create cached kube client: %s", err) return 1 diff --git a/cmd/cni-metrics-helper/main.go b/cmd/cni-metrics-helper/main.go index a3c13bc93f..7bf67d1b7f 100644 --- a/cmd/cni-metrics-helper/main.go +++ b/cmd/cni-metrics-helper/main.go @@ -96,12 +96,18 @@ func main() { os.Exit(1) } - rawK8SClient, err := k8sapi.CreateKubeClient() + mapper, err := k8sapi.InitializeRestMapper() + if err != nil { + log.Errorf("Failed to initialize kube client mapper: %s", err) + os.Exit(1) + } + + rawK8SClient, err := k8sapi.CreateKubeClient(mapper) if err != nil { log.Fatalf("Error creating Kubernetes Client: %s", err) os.Exit(1) } - k8sClient, err := k8sapi.CreateCachedKubeClient(rawK8SClient) + k8sClient, err := k8sapi.CreateCachedKubeClient(rawK8SClient, mapper) if err != nil { log.Fatalf("Error creating Cached Kubernetes Client: %s", err) os.Exit(1) diff --git a/pkg/k8sapi/k8sutils.go b/pkg/k8sapi/k8sutils.go index fd970a697b..ef69912fa0 100644 --- a/pkg/k8sapi/k8sutils.go +++ b/pkg/k8sapi/k8sutils.go @@ -5,12 +5,15 @@ import ( "os" "time" + "k8s.io/apimachinery/pkg/api/meta" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" + "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + eniconfigscheme "github.com/aws/amazon-vpc-cni-k8s/pkg/apis/crd/v1alpha1" "github.com/aws/amazon-vpc-cni-k8s/pkg/utils/logger" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/kubernetes" - clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" @@ -19,8 +22,21 @@ import ( var log = logger.Get() +func InitializeRestMapper() (meta.RESTMapper, error) { + restCfg, err := ctrl.GetConfig() + restCfg.Burst = 200 + if err != nil { + return nil, err + } + mapper, err := apiutil.NewDynamicRESTMapper(restCfg) + if err != nil { + return nil, err + } + return mapper, nil +} + // CreateKubeClient creates a k8s client -func CreateKubeClient() (client.Client, error) { +func CreateKubeClient(mapper meta.RESTMapper) (client.Client, error) { restCfg, err := ctrl.GetConfig() if err != nil { return nil, err @@ -29,7 +45,8 @@ func CreateKubeClient() (client.Client, error) { clientgoscheme.AddToScheme(vpcCniScheme) eniconfigscheme.AddToScheme(vpcCniScheme) - rawK8SClient, err := client.New(restCfg, client.Options{Scheme: vpcCniScheme}) + rawK8SClient, err := client.New(restCfg, client.Options{Scheme: vpcCniScheme, Mapper: mapper}) + if err != nil { return nil, err } @@ -38,8 +55,10 @@ func CreateKubeClient() (client.Client, error) { } // CreateKubeClient creates a k8s client -func CreateCachedKubeClient(rawK8SClient client.Client) (client.Client, error) { +func CreateCachedKubeClient(rawK8SClient client.Client, mapper meta.RESTMapper) (client.Client, error) { restCfg, err := ctrl.GetConfig() + restCfg.Burst = 100 + if err != nil { return nil, err } @@ -48,7 +67,7 @@ func CreateCachedKubeClient(rawK8SClient client.Client) (client.Client, error) { eniconfigscheme.AddToScheme(vpcCniScheme) stopChan := ctrl.SetupSignalHandler() - cache, err := cache.New(restCfg, cache.Options{Scheme: vpcCniScheme}) + cache, err := cache.New(restCfg, cache.Options{Scheme: vpcCniScheme, Mapper: mapper}) if err != nil { return nil, err }