Skip to content

Commit b3cbbab

Browse files
authored
Merge pull request #10656 from prezha/coredns-scale-down-early
CoreDNS early scale down to 1 replica
2 parents 3258920 + dd6687e commit b3cbbab

File tree

2 files changed

+30
-18
lines changed

2 files changed

+30
-18
lines changed

pkg/kapi/kapi.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,26 @@ func IsRetryableAPIError(err error) bool {
211211
func KubectlBinaryPath(version string) string {
212212
return path.Join(vmpath.GuestPersistentDir, "binaries", version, "kubectl")
213213
}
214+
215+
// ScaleDeployment sets the number of replicas of deployment in namespace and context
216+
func ScaleDeployment(context, namespace, deploymentName string, replicas int) error {
217+
client, err := Client(context)
218+
if err != nil {
219+
return fmt.Errorf("client: %v", err)
220+
}
221+
222+
scale, err := client.AppsV1().Deployments(namespace).GetScale(deploymentName, meta.GetOptions{})
223+
if err != nil {
224+
return fmt.Errorf("deployment scale: %v", err)
225+
}
226+
if scale.Spec.Replicas != int32(replicas) {
227+
scale.Spec.Replicas = int32(replicas)
228+
_, err = client.AppsV1().Deployments(namespace).UpdateScale(deploymentName, scale)
229+
if err != nil {
230+
return fmt.Errorf("deployment rescale: %v", err)
231+
}
232+
}
233+
klog.Infof("deployment %q in namespace %q and context %q rescaled to %d", deploymentName, namespace, context, replicas)
234+
235+
return nil
236+
}

pkg/minikube/node/start.go

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ import (
3232
"github.com/pkg/errors"
3333
"github.com/spf13/viper"
3434
"golang.org/x/sync/errgroup"
35+
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
3536
"k8s.io/klog/v2"
37+
kconst "k8s.io/kubernetes/cmd/kubeadm/app/constants"
3638
cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config"
3739
"k8s.io/minikube/pkg/addons"
3840
"k8s.io/minikube/pkg/drivers/kic/oci"
@@ -123,6 +125,11 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) {
123125
if err := kubeconfig.Update(kcs); err != nil {
124126
return nil, errors.Wrap(err, "Failed kubeconfig update")
125127
}
128+
129+
// scale down CoreDNS from default 2 to 1 replica
130+
if err := kapi.ScaleDeployment(starter.Cfg.Name, meta.NamespaceSystem, kconst.CoreDNSDeploymentName, 1); err != nil {
131+
klog.Errorf("Unable to scale down deployment %q in namespace %q to 1 replica: %v", kconst.CoreDNSDeploymentName, meta.NamespaceSystem, err)
132+
}
126133
} else {
127134
bs, err = cluster.Bootstrapper(starter.MachineAPI, viper.GetString(cmdcfg.Bootstrapper), *starter.Cfg, starter.Runner)
128135
if err != nil {
@@ -161,12 +168,6 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) {
161168
go addons.Start(&wg, starter.Cfg, starter.ExistingAddons, config.AddonList)
162169
}
163170

164-
wg.Add(1)
165-
go func() {
166-
rescaleCoreDNS(starter.Cfg, starter.Runner)
167-
wg.Done()
168-
}()
169-
170171
if apiServer {
171172
// special ops for none , like change minikube directory.
172173
// multinode super doesn't work on the none driver
@@ -620,15 +621,3 @@ func prepareNone() {
620621
exit.Message(reason.HostHomeChown, "Failed to change permissions for {{.minikube_dir_path}}: {{.error}}", out.V{"minikube_dir_path": localpath.MiniPath(), "error": err})
621622
}
622623
}
623-
624-
// rescaleCoreDNS attempts to reduce coredns replicas from 2 to 1 to improve CPU overhead
625-
// no worries if this doesn't work
626-
func rescaleCoreDNS(cc *config.ClusterConfig, runner command.Runner) {
627-
kubectl := kapi.KubectlBinaryPath(cc.KubernetesConfig.KubernetesVersion)
628-
cmd := exec.Command("sudo", "KUBECONFIG=/var/lib/minikube/kubeconfig", kubectl, "scale", "deployment", "--replicas=1", "coredns", "-n=kube-system")
629-
if _, err := runner.RunCmd(cmd); err != nil {
630-
klog.Warningf("unable to scale coredns replicas to 1: %v", err)
631-
} else {
632-
klog.Infof("successfully scaled coredns replicas to 1")
633-
}
634-
}

0 commit comments

Comments
 (0)