mirror of
https://github.com/kubernetes/client-go.git
synced 2026-05-14 19:17:56 +00:00
Merge pull request #136435 from Jefftree/leaderelection-client-efficiency
Update leasecandidate client to read from cache Kubernetes-commit: 4e3e58ffbe28674a5125cff183e8dacf97b07775
This commit is contained in:
@@ -35,6 +35,8 @@ import (
|
||||
"k8s.io/client-go/util/workqueue"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/utils/clock"
|
||||
|
||||
coordinationv1beta1listers "k8s.io/client-go/listers/coordination/v1beta1"
|
||||
)
|
||||
|
||||
const requeueInterval = 5 * time.Minute
|
||||
@@ -46,6 +48,7 @@ type CacheSyncWaiter interface {
|
||||
type LeaseCandidate struct {
|
||||
leaseClient coordinationv1beta1client.LeaseCandidateInterface
|
||||
leaseCandidateInformer cache.SharedIndexInformer
|
||||
leaseCandidateLister coordinationv1beta1listers.LeaseCandidateLister
|
||||
informerFactory informers.SharedInformerFactory
|
||||
hasSynced cache.InformerSynced
|
||||
|
||||
@@ -81,15 +84,18 @@ func NewCandidate(clientset kubernetes.Interface,
|
||||
// are started for leader elected components
|
||||
informerFactory := informers.NewSharedInformerFactoryWithOptions(
|
||||
clientset, 5*time.Minute,
|
||||
informers.WithNamespace(candidateNamespace),
|
||||
informers.WithTweakListOptions(func(options *metav1.ListOptions) {
|
||||
options.FieldSelector = fieldSelector
|
||||
}),
|
||||
)
|
||||
leaseCandidateInformer := informerFactory.Coordination().V1beta1().LeaseCandidates().Informer()
|
||||
leaseCandidateLister := informerFactory.Coordination().V1beta1().LeaseCandidates().Lister()
|
||||
|
||||
lc := &LeaseCandidate{
|
||||
leaseClient: clientset.CoordinationV1beta1().LeaseCandidates(candidateNamespace),
|
||||
leaseCandidateInformer: leaseCandidateInformer,
|
||||
leaseCandidateLister: leaseCandidateLister,
|
||||
informerFactory: informerFactory,
|
||||
name: candidateName,
|
||||
namespace: candidateNamespace,
|
||||
@@ -173,7 +179,7 @@ func (c *LeaseCandidate) enqueueLease() {
|
||||
// a bool (true if this call created the lease), or any error that occurs.
|
||||
func (c *LeaseCandidate) ensureLease(ctx context.Context) error {
|
||||
logger := klog.FromContext(ctx)
|
||||
lease, err := c.leaseClient.Get(ctx, c.name, metav1.GetOptions{})
|
||||
lease, err := c.leaseCandidateLister.LeaseCandidates(c.namespace).Get(c.name)
|
||||
if apierrors.IsNotFound(err) {
|
||||
logger.V(2).Info("Creating lease candidate")
|
||||
// lease does not exist, create it.
|
||||
|
||||
Reference in New Issue
Block a user