Skip to content

kubelet nodeStatusReportFrequency should be configurable #13726

Open

Description

@zbialik

What happened?

We run 100+ Nodes in our kubespray cluster and noticed ETCD was getting hit with repeated PATCH requests for node status updates even though no Node statuses were changing.

This was due to the kubelet's being configured with nodeStatusReportFrequency: 10s.

Kubespray only offers a way to set nodeStatusUpdateFrequency (via ansible var kubelet_status_update_frequency), but not nodeStatusReportFrequency.

Although kubernetes documents that the default nodeStatusReportFrequency is 5m, they also note that when nodeStatusUpdateFrequency is explicitly defined, it's value will be used for the nodeStatusReportFrequency.

Since kubespray explicitly sets nodeStatusUpdateFrequency to 10s, we accidentally inherit a 10s report frequency for our kubelets.

Note that the report frequency is just how often kubelet will report node status when it hasn't changed. When the node has changed status, it will still notify immediately after.

What did you expect to happen?

I expect kubespray to support defining nodeStatusReportFrequency via a different ansible variable like kubelet_status_report_frequency.

I would also expect kubespray to default that ansible variable to the value that matches Kubernetes documentation (5m).

Specifically, would suggest the following changes:

  1. adding a new nodeStatusReportFrequency field for the kubelet-config.yaml template below this line such as:
    nodeStatusReportFrequency: "{{ kubelet_status_report_frequency }}"
    
  2. adding the new ansible variable below this one with something like:
    kubelet_status_report_frequency: 5m
    

How can we reproduce it (as minimally and precisely as possible)?

  • Build a kubespray cluster using local inventory
  • Run the below and confirm you see 10s as the value
    kubectl get --raw /api/v1/nodes/node1/proxy/configz | jq -e '.kubeletconfig.nodeStatusReportFrequency'
    

OS

Ubuntu 22

Version of Ansible

9.13.0

Version of Python

3.12.12

Version of Kubespray (commit)

v2.28.1

Network plugin used

cni

Full inventory with variables

n/a (can use local or sample inventories)

Command used to invoke ansible

ansible-playbook -i inventory/local/hosts.ini cluster.yml

Output of ansible run

N/a

The issue is how the kubelet config renders.

Anything else we need to know

No response

Activity

  1. added
    kind/bugCategorizes issue or PR as related to a bug.
    on Nov 6, 2026
  2. guoard commented on Nov 7, 2026

    @guoard
    Contributor

    /triage accepted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Ubuntu 22kind/bugCategorizes issue or PR as related to a bug.triage/acceptedIndicates an issue or PR is ready to be actively worked on.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions