Merge pull request #123446 from linxiulei/hit_cache

Hit APIServer cache when testing healthiness
This commit is contained in:
Kubernetes Prow Robot 2024-03-04 10:24:45 -08:00 committed by GitHub
commit d34fbeb0a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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