From 9f9858b6caa422aa0f52572cd077a2eb9e0a093e Mon Sep 17 00:00:00 2001 From: Eric Lin Date: Thu, 22 Feb 2024 11:12:50 +0000 Subject: [PATCH] Hit APIServer cache when testing healthiness --- pkg/volume/csi/csi_plugin.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/volume/csi/csi_plugin.go b/pkg/volume/csi/csi_plugin.go index 6f3678f8dc7..aec7fa1dec8 100644 --- a/pkg/volume/csi/csi_plugin.go +++ b/pkg/volume/csi/csi_plugin.go @@ -41,6 +41,7 @@ import ( storagelisters "k8s.io/client-go/listers/storage/v1" csitranslationplugins "k8s.io/csi-translation-lib/plugins" "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/util" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/csi/nodeinfomanager" volumetypes "k8s.io/kubernetes/pkg/volume/util/types" @@ -867,12 +868,16 @@ func unregisterDriver(driverName string) error { // for a healthy APIServer func waitForAPIServerForever(client clientset.Interface, nodeName types.NodeName) error { var lastErr error + // Served object is discarded so no risk to have stale object with benefit to + // reduce the load on APIServer and etcd. + opts := meta.GetOptions{} + util.FromApiserverCache(&opts) err := wait.PollImmediateInfinite(time.Second, func() (bool, error) { // Get a CSINode from API server to make sure 1) kubelet can reach API server // and 2) it has enough permissions. Kubelet may have restricted permissions // when it's bootstrapping TLS. // https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/ - _, lastErr = client.StorageV1().CSINodes().Get(context.TODO(), string(nodeName), meta.GetOptions{}) + _, lastErr = client.StorageV1().CSINodes().Get(context.TODO(), string(nodeName), opts) if lastErr == nil || apierrors.IsNotFound(lastErr) { // API server contacted return true, nil