Skip to content

Commit 5748df8

Browse files
Merge pull request #14183 from sharifelgamal/restart-qemu
re-establish apiserver tunnel on restart
2 parents c38987b + d4ac54d commit 5748df8

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

pkg/drivers/qemu/qemu.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -487,17 +487,17 @@ func (d *Driver) Stop() error {
487487
func (d *Driver) Remove() error {
488488
s, err := d.GetState()
489489
if err != nil {
490-
return err
490+
return errors.Wrap(err, "get state")
491491
}
492492
if s == state.Running {
493493
if err := d.Kill(); err != nil {
494-
return err
494+
return errors.Wrap(err, "kill")
495495
}
496496
}
497497
if s != state.Stopped {
498498
_, err = d.RunQMPCommand("quit")
499499
if err != nil {
500-
return err
500+
return errors.Wrap(err, "quit")
501501
}
502502
}
503503
return nil

pkg/minikube/bootstrapper/kubeadm/kubeadm.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,10 @@ func (k *Bootstrapper) init(cfg config.ClusterConfig) error {
290290
}()
291291

292292
wg.Wait()
293+
// Tunnel apiserver to guest, if necessary
294+
if cfg.APIServerPort != 0 {
295+
k.tunnelToAPIServer(cfg)
296+
}
293297
return nil
294298
}
295299

@@ -399,6 +403,10 @@ func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error {
399403
}
400404

401405
if err := bsutil.ExistingConfig(k.c); err == nil {
406+
// If the guest already exists and was stopped, re-establish the apiserver tunnel so checks pass
407+
if cfg.APIServerPort != 0 {
408+
k.tunnelToAPIServer(cfg)
409+
}
402410
klog.Infof("found existing configuration files, will attempt cluster restart")
403411
rerr := k.restartControlPlane(cfg)
404412
if rerr == nil {
@@ -433,6 +441,22 @@ func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error {
433441
return err
434442
}
435443

444+
func (k *Bootstrapper) tunnelToAPIServer(cfg config.ClusterConfig) {
445+
m, err := machine.NewAPIClient()
446+
if err != nil {
447+
klog.Warningf("libmachine API failed: %v", err)
448+
}
449+
cp, err := config.PrimaryControlPlane(&cfg)
450+
if err != nil {
451+
klog.Warningf("finding control plane failed: %v", err)
452+
}
453+
args := []string{"-f", "-NTL", fmt.Sprintf("%d:localhost:8443", cfg.APIServerPort)}
454+
err = machine.CreateSSHShell(m, cfg, cp, args, false)
455+
if err != nil {
456+
klog.Warningf("apiserver tunnel failed: %v", err)
457+
}
458+
}
459+
436460
// client sets and returns a Kubernetes client to use to speak to a kubeadm launched apiserver
437461
func (k *Bootstrapper) client(ip string, port int) (*kubernetes.Clientset, error) {
438462
if k.k8sClient != nil {
@@ -569,6 +593,7 @@ func (k *Bootstrapper) needsReconfigure(conf string, hostname string, port int,
569593
klog.Infof("needs reconfigure: configs differ:\n%s", rr.Output())
570594
return true
571595
}
596+
572597
// cruntime.Enable() may restart kube-apiserver but does not wait for it to return back
573598
apiStatusTimeout := 3000 * time.Millisecond
574599
st, err := kverify.WaitForAPIServerStatus(k.c, apiStatusTimeout, hostname, port)

pkg/minikube/node/start.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,6 @@ func handleAPIServer(starter Starter, cr cruntime.Manager, hostIP net.IP) (*kube
253253
return nil, bs, err
254254
}
255255

256-
// Tunnel apiserver to guest, if needed
257-
if starter.Cfg.APIServerPort != 0 {
258-
args := []string{"-f", "-NTL", fmt.Sprintf("%d:localhost:8443", starter.Cfg.APIServerPort)}
259-
err := machine.CreateSSHShell(starter.MachineAPI, *starter.Cfg, *starter.Node, args, false)
260-
if err != nil {
261-
klog.Warningf("apiserver tunnel failed: %v", err)
262-
}
263-
}
264-
265256
// Write the kubeconfig to the file system after everything required (like certs) are created by the bootstrapper.
266257
if err := kubeconfig.Update(kcs); err != nil {
267258
return nil, bs, errors.Wrap(err, "Failed kubeconfig update")

0 commit comments

Comments
 (0)