Merge pull request https://github.com/kubernetes/contrib/pull/1049 from mwielgus/skip-kubernetes-system
Cluster-autoscaler: do not delete nodes with kube-system, not-mirrored, not-daemon set pods
This commit is contained in:
commit
795696ff45
|
|
@ -51,7 +51,7 @@ candidateloop:
|
|||
|
||||
if fastCheck {
|
||||
if nodeInfo, found := nodeNameToNodeInfo[node.Name]; found {
|
||||
podsToRemove, err = FastGetPodsToMove(nodeInfo, false, kube_api.Codecs.UniversalDecoder())
|
||||
podsToRemove, err = FastGetPodsToMove(nodeInfo, false, true, kube_api.Codecs.UniversalDecoder())
|
||||
}
|
||||
} else {
|
||||
drainResult, _, _, err := cmd.GetPodsForDeletionOnNodeDrain(client, node.Name,
|
||||
|
|
|
|||
|
|
@ -31,7 +31,8 @@ import (
|
|||
// Based on kubectl drain code. It makes an assumption that RC, DS, Jobs and RS were deleted
|
||||
// along with their pods (no abandoned pods with dangling created-by annotation). Usefull for fast
|
||||
// checks.
|
||||
func FastGetPodsToMove(nodeInfo *schedulercache.NodeInfo, force bool, decoder runtime.Decoder) ([]*api.Pod, error) {
|
||||
func FastGetPodsToMove(nodeInfo *schedulercache.NodeInfo, force bool,
|
||||
failOnKubeSystemAddons bool, decoder runtime.Decoder) ([]*api.Pod, error) {
|
||||
pods := make([]*api.Pod, 0)
|
||||
unreplicatedPodNames := []string{}
|
||||
for _, pod := range nodeInfo.Pods() {
|
||||
|
|
@ -47,7 +48,7 @@ func FastGetPodsToMove(nodeInfo *schedulercache.NodeInfo, force bool, decoder ru
|
|||
if found {
|
||||
var sr api.SerializedReference
|
||||
if err := runtime.DecodeInto(decoder, []byte(creatorRef), &sr); err != nil {
|
||||
return pods, err
|
||||
return []*api.Pod{}, err
|
||||
}
|
||||
if sr.Reference.Kind == "ReplicationController" {
|
||||
replicated = true
|
||||
|
|
@ -60,6 +61,10 @@ func FastGetPodsToMove(nodeInfo *schedulercache.NodeInfo, force bool, decoder ru
|
|||
}
|
||||
}
|
||||
|
||||
if !daemonsetPod && pod.Namespace == "kube-system" && failOnKubeSystemAddons {
|
||||
return []*api.Pod{}, fmt.Errorf("non-deamons set, non-mirrored, kube-system pod present: %s", pod.Name)
|
||||
}
|
||||
|
||||
switch {
|
||||
case daemonsetPod:
|
||||
break
|
||||
|
|
|
|||
Loading…
Reference in New Issue