mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
ControllerRefManager: Don't always filter inactive Pods.
Some controllers, like DaemonSet, want to see all Pods.
This commit is contained in:
parent
db6665251a
commit
01d025a7cc
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user