mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-27 05:46:13 +01:00
Update duplicate strategy implementation.
This commit is contained in:
@@ -17,6 +17,9 @@ limitations under the License.
|
||||
package strategies
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
|
||||
@@ -24,25 +27,45 @@ import (
|
||||
"github.com/aveshagarwal/rescheduler/pkg/rescheduler/pod"
|
||||
)
|
||||
|
||||
type creator string
|
||||
type DuplicatePodsMap [creator][]*v1.Pod
|
||||
//type creator string
|
||||
type DuplicatePodsMap map[string][]*v1.Pod
|
||||
|
||||
func RemoveDuplicatePods(client clientset.Interface) {
|
||||
func RemoveDuplicatePods(client clientset.Interface) error {
|
||||
stopChannel := make(chan struct{})
|
||||
nodes, err := node.ReadyNodes(client, stopChannel)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, node := range nodes {
|
||||
fmt.Printf("\nProcessing node: %#v\n", node.Name)
|
||||
dpm := RemoveDuplicatePodsOnANode(client, node)
|
||||
for i, j := range dpm {
|
||||
fmt.Printf("%#v\n", i)
|
||||
for _, k := range j {
|
||||
fmt.Printf("Duplicate pod %#v\n", k.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func RemoveDuplicatePodsOnANode(client clientset.Interface, node *v1.Node) {
|
||||
func RemoveDuplicatePodsOnANode(client clientset.Interface, node *v1.Node) DuplicatePodsMap {
|
||||
pods := pod.ListPodsOnANode(client, node)
|
||||
return FindDuplicatePods(pods)
|
||||
}
|
||||
|
||||
func FindDuplicatePods(pods []*v1.Pod) {
|
||||
for i, pod := range pods {
|
||||
sr, err := pod.CreatorRef(pod[i])
|
||||
func FindDuplicatePods(pods []*v1.Pod) DuplicatePodsMap {
|
||||
dpm := DuplicatePodsMap{}
|
||||
|
||||
for _, pod := range pods {
|
||||
sr, err := pod.CreatorRef(pod)
|
||||
if err != nil || sr == nil {
|
||||
continue
|
||||
}
|
||||
if pod.IsMirrorPod(pod) || IsDaemonsetPod(sr) || IsPodWithLocalStorage(pod) {
|
||||
continue
|
||||
}
|
||||
|
||||
s := strings.Join([]string{sr.Reference.Kind, sr.Reference.Namespace, sr.Reference.Name}, "/")
|
||||
append(dpm[s], pod)
|
||||
}
|
||||
return dpm
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user