mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	ControllerRefManager: Don't always filter inactive Pods.
Some controllers, like DaemonSet, want to see all Pods.
This commit is contained in:
		@@ -163,11 +163,6 @@ func (m *PodControllerRefManager) ClaimPods(pods []*v1.Pod) ([]*v1.Pod, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, pod := range pods {
 | 
						for _, pod := range pods {
 | 
				
			||||||
		if !IsPodActive(pod) {
 | 
					 | 
				
			||||||
			glog.V(4).Infof("Ignoring inactive pod %v/%v in state %v, deletion time %v",
 | 
					 | 
				
			||||||
				pod.Namespace, pod.Name, pod.Status.Phase, pod.DeletionTimestamp)
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		ok, err := m.claimObject(pod, adopt, release)
 | 
							ok, err := m.claimObject(pod, adopt, release)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			errlist = append(errlist, err)
 | 
								errlist = append(errlist, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -541,18 +541,24 @@ func (rsc *ReplicaSetController) syncReplicaSet(key string) error {
 | 
				
			|||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// NOTE: filteredPods are pointing to objects from cache - if you need to
 | 
					 | 
				
			||||||
	// modify them, you need to copy it first.
 | 
					 | 
				
			||||||
	// TODO: Do the List and Filter in a single pass, or use an index.
 | 
					 | 
				
			||||||
	var filteredPods []*v1.Pod
 | 
					 | 
				
			||||||
	// list all pods to include the pods that don't match the rs`s selector
 | 
						// list all pods to include the pods that don't match the rs`s selector
 | 
				
			||||||
	// anymore but has the stale controller ref.
 | 
						// anymore but has the stale controller ref.
 | 
				
			||||||
 | 
						// TODO: Do the List and Filter in a single pass, or use an index.
 | 
				
			||||||
	pods, err := rsc.podLister.Pods(rs.Namespace).List(labels.Everything())
 | 
						pods, err := rsc.podLister.Pods(rs.Namespace).List(labels.Everything())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						// Ignore inactive pods.
 | 
				
			||||||
 | 
						var filteredPods []*v1.Pod
 | 
				
			||||||
 | 
						for _, pod := range pods {
 | 
				
			||||||
 | 
							if controller.IsPodActive(pod) {
 | 
				
			||||||
 | 
								filteredPods = append(filteredPods, pod)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	cm := controller.NewPodControllerRefManager(rsc.podControl, rs, selector, controllerKind)
 | 
						cm := controller.NewPodControllerRefManager(rsc.podControl, rs, selector, controllerKind)
 | 
				
			||||||
	filteredPods, err = cm.ClaimPods(pods)
 | 
						// NOTE: filteredPods are pointing to objects from cache - if you need to
 | 
				
			||||||
 | 
						// modify them, you need to copy it first.
 | 
				
			||||||
 | 
						filteredPods, err = cm.ClaimPods(filteredPods)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -559,17 +559,23 @@ func (rm *ReplicationManager) syncReplicationController(key string) error {
 | 
				
			|||||||
	rcNeedsSync := rm.expectations.SatisfiedExpectations(key)
 | 
						rcNeedsSync := rm.expectations.SatisfiedExpectations(key)
 | 
				
			||||||
	trace.Step("Expectations restored")
 | 
						trace.Step("Expectations restored")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// NOTE: filteredPods are pointing to objects from cache - if you need to
 | 
					 | 
				
			||||||
	// modify them, you need to copy it first.
 | 
					 | 
				
			||||||
	// TODO: Do the List and Filter in a single pass, or use an index.
 | 
					 | 
				
			||||||
	var filteredPods []*v1.Pod
 | 
					 | 
				
			||||||
	// list all pods to include the pods that don't match the rc's selector
 | 
						// list all pods to include the pods that don't match the rc's selector
 | 
				
			||||||
	// anymore but has the stale controller ref.
 | 
						// anymore but has the stale controller ref.
 | 
				
			||||||
 | 
						// TODO: Do the List and Filter in a single pass, or use an index.
 | 
				
			||||||
	pods, err := rm.podLister.Pods(rc.Namespace).List(labels.Everything())
 | 
						pods, err := rm.podLister.Pods(rc.Namespace).List(labels.Everything())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						// Ignore inactive pods.
 | 
				
			||||||
 | 
						var filteredPods []*v1.Pod
 | 
				
			||||||
 | 
						for _, pod := range pods {
 | 
				
			||||||
 | 
							if controller.IsPodActive(pod) {
 | 
				
			||||||
 | 
								filteredPods = append(filteredPods, pod)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	cm := controller.NewPodControllerRefManager(rm.podControl, rc, labels.Set(rc.Spec.Selector).AsSelectorPreValidated(), controllerKind)
 | 
						cm := controller.NewPodControllerRefManager(rm.podControl, rc, labels.Set(rc.Spec.Selector).AsSelectorPreValidated(), controllerKind)
 | 
				
			||||||
 | 
						// NOTE: filteredPods are pointing to objects from cache - if you need to
 | 
				
			||||||
 | 
						// modify them, you need to copy it first.
 | 
				
			||||||
	filteredPods, err = cm.ClaimPods(pods)
 | 
						filteredPods, err = cm.ClaimPods(pods)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user