Merge pull request #131749 from cartermckinnon/kubelet-lease

fix(kubelet): update lease duration when config changes
This commit is contained in:
Kubernetes Prow Robot
2025-05-21 14:06:35 -07:00
committed by GitHub
2 changed files with 52 additions and 3 deletions

View File

@@ -28,7 +28,7 @@ import (
clientset "k8s.io/client-go/kubernetes"
coordclientset "k8s.io/client-go/kubernetes/typed/coordination/v1"
"k8s.io/utils/clock"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"k8s.io/klog/v2"
)
@@ -221,13 +221,14 @@ func (c *controller) newLease(base *coordinationv1.Lease) (*coordinationv1.Lease
Namespace: c.leaseNamespace,
},
Spec: coordinationv1.LeaseSpec{
HolderIdentity: pointer.StringPtr(c.holderIdentity),
LeaseDurationSeconds: pointer.Int32Ptr(c.leaseDurationSeconds),
HolderIdentity: ptr.To(c.holderIdentity),
},
}
} else {
lease = base.DeepCopy()
}
// update the duration, the controller's config may have changed since lease creation
lease.Spec.LeaseDurationSeconds = ptr.To(c.leaseDurationSeconds)
lease.Spec.RenewTime = &metav1.MicroTime{Time: c.clock.Now()}
if c.newLeasePostProcessFunc != nil {

View File

@@ -37,6 +37,7 @@ import (
clienttesting "k8s.io/client-go/testing"
testingclock "k8s.io/utils/clock/testing"
"k8s.io/utils/pointer"
"k8s.io/utils/ptr"
"k8s.io/klog/v2"
"k8s.io/klog/v2/ktesting"
@@ -194,6 +195,53 @@ func TestNewNodeLease(t *testing.T) {
},
},
},
{
desc: "non-nil base with owner ref, lease duration is updated",
controller: &controller{
client: fake.NewSimpleClientset(node),
holderIdentity: node.Name,
leaseDurationSeconds: 456,
clock: fakeClock,
},
base: &coordinationv1.Lease{
ObjectMeta: metav1.ObjectMeta{
Name: node.Name,
Namespace: corev1.NamespaceNodeLease,
OwnerReferences: []metav1.OwnerReference{
{
APIVersion: corev1.SchemeGroupVersion.WithKind("Node").Version,
Kind: corev1.SchemeGroupVersion.WithKind("Node").Kind,
Name: node.Name,
UID: node.UID,
},
},
},
Spec: coordinationv1.LeaseSpec{
HolderIdentity: ptr.To(node.Name),
LeaseDurationSeconds: ptr.To[int32](123),
RenewTime: &metav1.MicroTime{Time: fakeClock.Now().Add(-10 * time.Second)},
},
},
expect: &coordinationv1.Lease{
ObjectMeta: metav1.ObjectMeta{
Name: node.Name,
Namespace: corev1.NamespaceNodeLease,
OwnerReferences: []metav1.OwnerReference{
{
APIVersion: corev1.SchemeGroupVersion.WithKind("Node").Version,
Kind: corev1.SchemeGroupVersion.WithKind("Node").Kind,
Name: node.Name,
UID: node.UID,
},
},
},
Spec: coordinationv1.LeaseSpec{
HolderIdentity: ptr.To(node.Name),
LeaseDurationSeconds: ptr.To[int32](456),
RenewTime: &metav1.MicroTime{Time: fakeClock.Now()},
},
},
},
}
for _, tc := range cases {