mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	Merge pull request #107821 from liggitt/kubelet-secret-manager
Move kubelet secret and configmap manager calls to sync_Pod functions
This commit is contained in:
		@@ -1603,6 +1603,16 @@ func (kl *Kubelet) syncPod(ctx context.Context, updateType kubetypes.SyncPodType
 | 
				
			|||||||
		return fmt.Errorf("%s: %v", NetworkNotReadyErrorMsg, err)
 | 
							return fmt.Errorf("%s: %v", NetworkNotReadyErrorMsg, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ensure the kubelet knows about referenced secrets or configmaps used by the pod
 | 
				
			||||||
 | 
						if !kl.podWorkers.IsPodTerminationRequested(pod.UID) {
 | 
				
			||||||
 | 
							if kl.secretManager != nil {
 | 
				
			||||||
 | 
								kl.secretManager.RegisterPod(pod)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if kl.configMapManager != nil {
 | 
				
			||||||
 | 
								kl.configMapManager.RegisterPod(pod)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Create Cgroups for the pod and apply resource parameters
 | 
						// Create Cgroups for the pod and apply resource parameters
 | 
				
			||||||
	// to them if cgroups-per-qos flag is enabled.
 | 
						// to them if cgroups-per-qos flag is enabled.
 | 
				
			||||||
	pcm := kl.containerManager.NewPodContainerManager()
 | 
						pcm := kl.containerManager.NewPodContainerManager()
 | 
				
			||||||
@@ -1832,6 +1842,14 @@ func (kl *Kubelet) syncTerminatedPod(ctx context.Context, pod *v1.Pod, podStatus
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	klog.V(4).InfoS("Pod termination unmounted volumes", "pod", klog.KObj(pod), "podUID", pod.UID)
 | 
						klog.V(4).InfoS("Pod termination unmounted volumes", "pod", klog.KObj(pod), "podUID", pod.UID)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// After volume unmount is complete, let the secret and configmap managers know we're done with this pod
 | 
				
			||||||
 | 
						if kl.secretManager != nil {
 | 
				
			||||||
 | 
							kl.secretManager.UnregisterPod(pod)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if kl.configMapManager != nil {
 | 
				
			||||||
 | 
							kl.configMapManager.UnregisterPod(pod)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Note: we leave pod containers to be reclaimed in the background since dockershim requires the
 | 
						// Note: we leave pod containers to be reclaimed in the background since dockershim requires the
 | 
				
			||||||
	// container for retrieving logs and we want to make sure logs are available until the pod is
 | 
						// container for retrieving logs and we want to make sure logs are available until the pod is
 | 
				
			||||||
	// physically deleted.
 | 
						// physically deleted.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -159,10 +159,6 @@ func (pm *basicManager) UpdatePod(pod *v1.Pod) {
 | 
				
			|||||||
	pm.updatePodsInternal(pod)
 | 
						pm.updatePodsInternal(pod)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func isPodInTerminatedState(pod *v1.Pod) bool {
 | 
					 | 
				
			||||||
	return pod.Status.Phase == v1.PodFailed || pod.Status.Phase == v1.PodSucceeded
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// updateMetrics updates the metrics surfaced by the pod manager.
 | 
					// updateMetrics updates the metrics surfaced by the pod manager.
 | 
				
			||||||
// oldPod or newPod may be nil to signify creation or deletion.
 | 
					// oldPod or newPod may be nil to signify creation or deletion.
 | 
				
			||||||
func updateMetrics(oldPod, newPod *v1.Pod) {
 | 
					func updateMetrics(oldPod, newPod *v1.Pod) {
 | 
				
			||||||
@@ -187,32 +183,6 @@ func updateMetrics(oldPod, newPod *v1.Pod) {
 | 
				
			|||||||
// lock.
 | 
					// lock.
 | 
				
			||||||
func (pm *basicManager) updatePodsInternal(pods ...*v1.Pod) {
 | 
					func (pm *basicManager) updatePodsInternal(pods ...*v1.Pod) {
 | 
				
			||||||
	for _, pod := range pods {
 | 
						for _, pod := range pods {
 | 
				
			||||||
		if pm.secretManager != nil {
 | 
					 | 
				
			||||||
			if isPodInTerminatedState(pod) {
 | 
					 | 
				
			||||||
				// Pods that are in terminated state and no longer running can be
 | 
					 | 
				
			||||||
				// ignored as they no longer require access to secrets.
 | 
					 | 
				
			||||||
				// It is especially important in watch-based manager, to avoid
 | 
					 | 
				
			||||||
				// unnecessary watches for terminated pods waiting for GC.
 | 
					 | 
				
			||||||
				pm.secretManager.UnregisterPod(pod)
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				// TODO: Consider detecting only status update and in such case do
 | 
					 | 
				
			||||||
				// not register pod, as it doesn't really matter.
 | 
					 | 
				
			||||||
				pm.secretManager.RegisterPod(pod)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if pm.configMapManager != nil {
 | 
					 | 
				
			||||||
			if isPodInTerminatedState(pod) {
 | 
					 | 
				
			||||||
				// Pods that are in terminated state and no longer running can be
 | 
					 | 
				
			||||||
				// ignored as they no longer require access to configmaps.
 | 
					 | 
				
			||||||
				// It is especially important in watch-based manager, to avoid
 | 
					 | 
				
			||||||
				// unnecessary watches for terminated pods waiting for GC.
 | 
					 | 
				
			||||||
				pm.configMapManager.UnregisterPod(pod)
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				// TODO: Consider detecting only status update and in such case do
 | 
					 | 
				
			||||||
				// not register pod, as it doesn't really matter.
 | 
					 | 
				
			||||||
				pm.configMapManager.RegisterPod(pod)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		podFullName := kubecontainer.GetPodFullName(pod)
 | 
							podFullName := kubecontainer.GetPodFullName(pod)
 | 
				
			||||||
		// This logic relies on a static pod and its mirror to have the same name.
 | 
							// This logic relies on a static pod and its mirror to have the same name.
 | 
				
			||||||
		// It is safe to type convert here due to the IsMirrorPod guard.
 | 
							// It is safe to type convert here due to the IsMirrorPod guard.
 | 
				
			||||||
@@ -239,12 +209,6 @@ func (pm *basicManager) DeletePod(pod *v1.Pod) {
 | 
				
			|||||||
	updateMetrics(pod, nil)
 | 
						updateMetrics(pod, nil)
 | 
				
			||||||
	pm.lock.Lock()
 | 
						pm.lock.Lock()
 | 
				
			||||||
	defer pm.lock.Unlock()
 | 
						defer pm.lock.Unlock()
 | 
				
			||||||
	if pm.secretManager != nil {
 | 
					 | 
				
			||||||
		pm.secretManager.UnregisterPod(pod)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if pm.configMapManager != nil {
 | 
					 | 
				
			||||||
		pm.configMapManager.UnregisterPod(pod)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	podFullName := kubecontainer.GetPodFullName(pod)
 | 
						podFullName := kubecontainer.GetPodFullName(pod)
 | 
				
			||||||
	// It is safe to type convert here due to the IsMirrorPod guard.
 | 
						// It is safe to type convert here due to the IsMirrorPod guard.
 | 
				
			||||||
	if kubetypes.IsMirrorPod(pod) {
 | 
						if kubetypes.IsMirrorPod(pod) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user