mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	Merge pull request #64170 from mtaufen/cap-node-num-images
Automatic merge from submit-queue (batch tested with PRs 61803, 64305, 64170, 64361, 64339). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. add a flag to control the cap on images reported in node status While I normally try to avoid adding flags, this is a short term scalability fix for v1.11, and there are other long-term solutions in the works, so we shouldn't commit to this in the v1beta1 Kubelet config. Flags are our escape hatch here. ```release-note NONE ```
This commit is contained in:
		@@ -169,6 +169,9 @@ type KubeletFlags struct {
 | 
			
		||||
	// bootstrapCheckpointPath is the path to the directory containing pod checkpoints to
 | 
			
		||||
	// run on restore
 | 
			
		||||
	BootstrapCheckpointPath string
 | 
			
		||||
	// NodeStatusMaxImages caps the number of images reported in Node.Status.Images.
 | 
			
		||||
	// This is an experimental, short-term flag to help with node scalability.
 | 
			
		||||
	NodeStatusMaxImages int32
 | 
			
		||||
 | 
			
		||||
	// DEPRECATED FLAGS
 | 
			
		||||
	// minimumGCAge is the minimum age for a finished container before it is
 | 
			
		||||
@@ -244,6 +247,8 @@ func NewKubeletFlags() *KubeletFlags {
 | 
			
		||||
		CAdvisorPort: 0,
 | 
			
		||||
		// TODO(#58010:v1.13.0): Remove --allow-privileged, it is deprecated
 | 
			
		||||
		AllowPrivileged: true,
 | 
			
		||||
		// prior to the introduction of this flag, there was a hardcoded cap of 50 images
 | 
			
		||||
		NodeStatusMaxImages: 50,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -255,6 +260,9 @@ func ValidateKubeletFlags(f *KubeletFlags) error {
 | 
			
		||||
	if f.CAdvisorPort != 0 && utilvalidation.IsValidPortNum(int(f.CAdvisorPort)) != nil {
 | 
			
		||||
		return fmt.Errorf("invalid configuration: CAdvisorPort (--cadvisor-port) %v must be between 0 and 65535, inclusive", f.CAdvisorPort)
 | 
			
		||||
	}
 | 
			
		||||
	if f.NodeStatusMaxImages < -1 {
 | 
			
		||||
		return fmt.Errorf("invalid configuration: NodeStatusMaxImages (--node-status-max-images) must be -1 or greater")
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -392,6 +400,7 @@ func (f *KubeletFlags) AddFlags(mainfs *pflag.FlagSet) {
 | 
			
		||||
	fs.BoolVar(&f.ExitOnLockContention, "exit-on-lock-contention", f.ExitOnLockContention, "Whether kubelet should exit upon lock-file contention.")
 | 
			
		||||
	fs.StringVar(&f.SeccompProfileRoot, "seccomp-profile-root", f.SeccompProfileRoot, "<Warning: Alpha feature> Directory path for seccomp profiles.")
 | 
			
		||||
	fs.StringVar(&f.BootstrapCheckpointPath, "bootstrap-checkpoint-path", f.BootstrapCheckpointPath, "<Warning: Alpha feature> Path to to the directory where the checkpoints are stored")
 | 
			
		||||
	fs.Int32Var(&f.NodeStatusMaxImages, "node-status-max-images", f.NodeStatusMaxImages, "<Warning: Alpha feature> The maximum number of images to report in Node.Status.Images. If -1 is specified, no cap will be applied. Default: 50")
 | 
			
		||||
 | 
			
		||||
	// DEPRECATED FLAGS
 | 
			
		||||
	fs.StringVar(&f.BootstrapKubeconfig, "experimental-bootstrap-kubeconfig", f.BootstrapKubeconfig, "")
 | 
			
		||||
 
 | 
			
		||||
@@ -958,6 +958,7 @@ func RunKubelet(kubeFlags *options.KubeletFlags, kubeCfg *kubeletconfiginternal.
 | 
			
		||||
		kubeFlags.NodeLabels,
 | 
			
		||||
		kubeFlags.SeccompProfileRoot,
 | 
			
		||||
		kubeFlags.BootstrapCheckpointPath,
 | 
			
		||||
		kubeFlags.NodeStatusMaxImages,
 | 
			
		||||
		stopCh)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("failed to create kubelet: %v", err)
 | 
			
		||||
@@ -1043,6 +1044,7 @@ func CreateAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
 | 
			
		||||
	nodeLabels map[string]string,
 | 
			
		||||
	seccompProfileRoot string,
 | 
			
		||||
	bootstrapCheckpointPath string,
 | 
			
		||||
	nodeStatusMaxImages int32,
 | 
			
		||||
	stopCh <-chan struct{}) (k kubelet.Bootstrap, err error) {
 | 
			
		||||
	// TODO: block until all sources have delivered at least one update to the channel, or break the sync loop
 | 
			
		||||
	// up into "per source" synchronizations
 | 
			
		||||
@@ -1077,6 +1079,7 @@ func CreateAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
 | 
			
		||||
		nodeLabels,
 | 
			
		||||
		seccompProfileRoot,
 | 
			
		||||
		bootstrapCheckpointPath,
 | 
			
		||||
		nodeStatusMaxImages,
 | 
			
		||||
		stopCh)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user