提交 5ac8520a 编写于 作者: P Priya Wadhwa

skip transferring binaries and transferring imagse if using preloaded volume

上级 b0f685c0
......@@ -95,9 +95,8 @@ func (d *Driver) Create() error {
if err != nil {
glog.Infof("Unable to create preloaded images volume: %v", err)
}
glog.Infof("Finished creating preloaded images volume in %d seconds", time.Since(t).Seconds())
glog.Infof("Finished creating preloaded images volume in %f seconds", time.Since(t).Seconds())
params.PreloadedVolume = volumeName
fmt.Println("Setting params.preloadedvolume = ", volumeName)
err = oci.CreateContainerNode(params)
if err != nil {
return errors.Wrap(err, "create kic node")
......
......@@ -131,7 +131,7 @@ func extractTarballToVolume(tarballPath, volumeName, imageName string) error {
if err := PointToHostDockerDaemon(); err != nil {
return errors.Wrap(err, "point host docker-daemon")
}
cmd := exec.Command(Docker, "run", "--rm", "--entrypoint", "/bin/bash", "-v", fmt.Sprintf("%s:/preloaded.tar:ro", tarballPath), "-v", fmt.Sprintf("%s:/extractDir", volumeName), imageName, "tar", "-I", "lz4", "-xvf", "/preloaded.tar", "-C", "/extractDir")
cmd := exec.Command(Docker, "run", "--rm", "--entrypoint", "/usr/bin/tar", "-v", fmt.Sprintf("%s:/preloaded.tar:ro", tarballPath), "-v", fmt.Sprintf("%s:/extractDir", volumeName), imageName, "-I", "lz4", "-xvf", "/preloaded.tar", "-C", "/extractDir")
fmt.Println(cmd.Args)
if out, err := cmd.CombinedOutput(); err != nil {
return errors.Wrapf(err, "output %s", string(out))
......
......@@ -46,3 +46,10 @@ func CacheTarball(k8sVersion string) error {
glog.Infof("Downloading %s to %s", url, targetFilepath)
return download.ToFile(url, targetFilepath, download.FileOptions{Mkdirs: download.MkdirAll})
}
// UsingPreloadedVolume returns true if the preloaded tarball exists
func UsingPreloadedVolume(k8sVersion string) bool {
path := TarballPath(k8sVersion)
_, err := os.Stat(path)
return err == nil
}
......@@ -40,6 +40,7 @@ import (
kconst "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/minikube/pkg/drivers/kic"
"k8s.io/minikube/pkg/drivers/kic/oci"
"k8s.io/minikube/pkg/drivers/kic/preload"
"k8s.io/minikube/pkg/kapi"
"k8s.io/minikube/pkg/minikube/bootstrapper"
"k8s.io/minikube/pkg/minikube/bootstrapper/bsutil"
......@@ -436,9 +437,13 @@ func (k *Bootstrapper) UpdateCluster(cfg config.MachineConfig) error {
glog.Warningf("unable to stop kubelet: %s command: %q output: %q", err, rr.Command(), rr.Output())
}
// Skip transfer if using preloaded kic volume
skipTransfer := driver.IsKIC(cfg.Driver) && preload.UsingPreloadedVolume(cfg.KubernetesConfig.KubernetesVersion)
if !skipTransfer {
if err := bsutil.TransferBinaries(cfg.KubernetesConfig, k.c); err != nil {
return errors.Wrap(err, "downloading binaries")
}
}
var cniFile []byte
if cfg.KubernetesConfig.EnableDefaultCNI {
......
......@@ -22,6 +22,7 @@ import (
"github.com/spf13/viper"
"golang.org/x/sync/errgroup"
"k8s.io/minikube/pkg/addons"
"k8s.io/minikube/pkg/drivers/kic/preload"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/driver"
"k8s.io/minikube/pkg/minikube/exit"
......@@ -34,9 +35,16 @@ import (
// Start spins up a guest and starts the kubernetes node.
func Start(mc config.MachineConfig, n config.Node, primary bool, existingAddons map[string]bool) (*kubeconfig.Settings, error) {
k8sVersion := mc.KubernetesConfig.KubernetesVersion
driverName := mc.Driver
// Now that the ISO is downloaded, pull images in the background while the VM boots.
var cacheGroup errgroup.Group
beginCacheRequiredImages(&cacheGroup, mc.KubernetesConfig.ImageRepository, n.KubernetesVersion)
if !preload.UsingPreloadedVolume(k8sVersion) && driver.IsKIC(driverName) {
beginCacheRequiredImages(&cacheGroup, mc.KubernetesConfig.ImageRepository, k8sVersion)
} else {
mc.KubernetesConfig.ShouldLoadCachedImages = false
}
// Abstraction leakage alert: startHost requires the config to be saved, to satistfy pkg/provision/buildroot.
// Hence, saveConfig must be called before startHost, and again afterwards when we know the IP.
......@@ -44,8 +52,6 @@ func Start(mc config.MachineConfig, n config.Node, primary bool, existingAddons
exit.WithError("Failed to save config", err)
}
k8sVersion := mc.KubernetesConfig.KubernetesVersion
driverName := mc.Driver
// exits here in case of --download-only option.
handleDownloadOnly(&cacheGroup, k8sVersion, driverName)
mRunner, preExists, machineAPI, host := startMachine(&mc, &n)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册