mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-25 17:12:50 +00:00
add skip pre pull images
Signed-off-by: pixiake <guofeng@yunify.com>
This commit is contained in:
parent
fb361c54df
commit
dc48261384
|
|
@ -0,0 +1,24 @@
|
|||
.PHONY: build
|
||||
build: build-linux-amd64 build-linux-arm64
|
||||
|
||||
build-linux-amd64:
|
||||
docker run --rm \
|
||||
-v $(shell pwd):/usr/src/myapp \
|
||||
-e GOOS=linux \
|
||||
-e GOARCH=amd64 \
|
||||
-e CGO_ENABLED=0 \
|
||||
-e GO111MODULE=on \
|
||||
-w /usr/src/myapp golang:1.14 \
|
||||
go build -v -o output/linux/amd64/kk ./kubekey.go # linux
|
||||
sha256sum output/linux/amd64/kk || shasum -a 256 output/linux/amd64/kk
|
||||
|
||||
build-linux-arm64:
|
||||
docker run --rm \
|
||||
-v $(shell pwd):/usr/src/myapp \
|
||||
-e GOOS=linux \
|
||||
-e GOARCH=arm64 \
|
||||
-e CGO_ENABLED=0 \
|
||||
-e GO111MODULE=on \
|
||||
-w /usr/src/myapp golang:1.14 \
|
||||
go build -v -o output/linux/arm64/kk ./kubekey.go # linux
|
||||
sha256sum output/linux/arm64/kk || shasum -a 256 output/linux/arm64/kk
|
||||
|
|
@ -33,7 +33,7 @@ var clusterCmd = &cobra.Command{
|
|||
ksVersion = ""
|
||||
}
|
||||
logger := util.InitLogger(opt.Verbose)
|
||||
return install.CreateCluster(opt.ClusterCfgFile, opt.Kubernetes, ksVersion, logger, opt.Kubesphere, opt.Verbose, opt.SkipCheck)
|
||||
return install.CreateCluster(opt.ClusterCfgFile, opt.Kubernetes, ksVersion, logger, opt.Kubesphere, opt.Verbose, opt.SkipCheck, opt.SkipPullImages)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -44,4 +44,5 @@ func init() {
|
|||
clusterCmd.Flags().StringVarP(&opt.Kubernetes, "with-kubernetes", "", "", "Specify a supported version of kubernetes")
|
||||
clusterCmd.Flags().BoolVarP(&opt.Kubesphere, "with-kubesphere", "", false, "Deploy a specific version of kubesphere (default v3.0.0)")
|
||||
clusterCmd.Flags().BoolVarP(&opt.SkipCheck, "yes", "y", false, "Skip pre-check of the installation")
|
||||
clusterCmd.Flags().BoolVarP(&opt.SkipPullImages, "skip-pull-images", "", false, "Skip pre pull images")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ type Options struct {
|
|||
Kubernetes string
|
||||
Kubesphere bool
|
||||
SkipCheck bool
|
||||
SkipPullImages bool
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ var scaleCmd = &cobra.Command{
|
|||
Short: "Scale a cluster according to the new nodes information from the specified configuration file",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
logger := util.InitLogger(opt.Verbose)
|
||||
return scale.ScaleCluster(opt.ClusterCfgFile, "", "", logger, false, opt.Verbose, opt.SkipCheck)
|
||||
return scale.ScaleCluster(opt.ClusterCfgFile, "", "", logger, false, opt.Verbose, opt.SkipCheck, opt.SkipPullImages)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -35,4 +35,5 @@ func init() {
|
|||
rootCmd.AddCommand(scaleCmd)
|
||||
scaleCmd.Flags().StringVarP(&opt.ClusterCfgFile, "file", "f", "", "Path to a configuration file")
|
||||
scaleCmd.Flags().BoolVarP(&opt.SkipCheck, "yes", "y", false, "Skip pre-check of the installation")
|
||||
scaleCmd.Flags().BoolVarP(&opt.SkipPullImages, "skip-pull-images", "", false, "Skip pre pull images")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ var upgradeCmd = &cobra.Command{
|
|||
} else {
|
||||
ksVersion = ""
|
||||
}
|
||||
return upgrade.UpgradeCluster(opt.ClusterCfgFile, opt.Kubernetes, ksVersion, logger, opt.Kubesphere, opt.Verbose)
|
||||
return upgrade.UpgradeCluster(opt.ClusterCfgFile, opt.Kubernetes, ksVersion, logger, opt.Kubesphere, opt.Verbose, opt.SkipPullImages)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -42,4 +42,5 @@ func init() {
|
|||
upgradeCmd.Flags().StringVarP(&opt.ClusterCfgFile, "file", "f", "", "Path to a configuration file")
|
||||
upgradeCmd.Flags().StringVarP(&opt.Kubernetes, "with-kubernetes", "", "", "Specify a supported version of kubernetes")
|
||||
upgradeCmd.Flags().BoolVarP(&opt.Kubesphere, "with-kubesphere", "", false, "Deploy a specific version of kubesphere (default v3.0.0)")
|
||||
upgradeCmd.Flags().BoolVarP(&opt.SkipPullImages, "skip-pull-images", "", false, "Skip pre pull images")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,10 +107,19 @@ func initKubernetesCluster(mgr *manager.Manager, node *kubekeyapi.HostCfg, _ ssh
|
|||
return errors.Wrap(errors.WithStack(err1), "Failed to generate kubeadm config")
|
||||
}
|
||||
|
||||
_, err2 := mgr.Runner.ExecuteCmd("sudo -E /bin/sh -c \"/usr/local/bin/kubeadm init --config=/etc/kubernetes/kubeadm-config.yaml\"", 3, true)
|
||||
if err2 != nil {
|
||||
return errors.Wrap(errors.WithStack(err2), "Failed to init kubernetes cluster")
|
||||
for i := 0; i < 3; i++ {
|
||||
_, err2 := mgr.Runner.ExecuteCmd("sudo -E /bin/sh -c \"/usr/local/bin/kubeadm init --config=/etc/kubernetes/kubeadm-config.yaml\"", 0, true)
|
||||
if err2 != nil {
|
||||
if i == 2 {
|
||||
return errors.Wrap(errors.WithStack(err2), "Failed to init kubernetes cluster")
|
||||
} else {
|
||||
_, _ = mgr.Runner.ExecuteCmd("sudo -E /bin/sh -c \"/usr/local/bin/kubeadm reset -f\"", 0, true)
|
||||
}
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if err3 := GetKubeConfig(mgr); err3 != nil {
|
||||
return err3
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,9 +10,15 @@ import (
|
|||
)
|
||||
|
||||
func PrePullImages(mgr *manager.Manager) error {
|
||||
mgr.Logger.Infoln("Start to download images on all nodes")
|
||||
|
||||
return mgr.RunTaskOnAllNodes(PullImages, true)
|
||||
if !mgr.SkipPullImages {
|
||||
mgr.Logger.Infoln("Start to download images on all nodes")
|
||||
if err := mgr.RunTaskOnAllNodes(PullImages, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func PullImages(mgr *manager.Manager, node *kubekeyapi.HostCfg, _ ssh.Connection) error {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ func ResetCluster(clusterCfgFile string, logger *log.Logger, verbose bool) error
|
|||
return errors.Wrap(err, "Failed to download cluster config")
|
||||
}
|
||||
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, false))
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, false, true))
|
||||
}
|
||||
|
||||
func Execute(executor *executor.Executor) error {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import (
|
|||
"path/filepath"
|
||||
)
|
||||
|
||||
func CreateCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose, skipCheck bool) error {
|
||||
func CreateCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose, skipCheck, skipPullImages bool) error {
|
||||
currentDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Faild to get current dir")
|
||||
|
|
@ -49,7 +49,7 @@ func CreateCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Log
|
|||
return errors.Wrap(err, "Failed to download cluster config")
|
||||
}
|
||||
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, skipCheck))
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, skipCheck, skipPullImages))
|
||||
}
|
||||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import (
|
|||
"path/filepath"
|
||||
)
|
||||
|
||||
func ScaleCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose, skipCheck bool) error {
|
||||
func ScaleCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose, skipCheck, skipPullImages bool) error {
|
||||
currentDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Faild to get current dir")
|
||||
|
|
@ -46,7 +46,7 @@ func ScaleCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logg
|
|||
return errors.Wrap(err, "Failed to download cluster config")
|
||||
}
|
||||
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, skipCheck))
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, skipCheck, skipPullImages))
|
||||
}
|
||||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import (
|
|||
"path/filepath"
|
||||
)
|
||||
|
||||
func UpgradeCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose bool) error {
|
||||
func UpgradeCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Logger, ksEnabled, verbose, skipPullImages bool) error {
|
||||
currentDir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Faild to get current dir")
|
||||
|
|
@ -44,7 +44,7 @@ func UpgradeCluster(clusterCfgFile, k8sVersion, ksVersion string, logger *log.Lo
|
|||
return errors.Wrap(err, "Failed to download cluster config")
|
||||
}
|
||||
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, true))
|
||||
return Execute(executor.NewExecutor(&cfg.Spec, logger, verbose, true, skipPullImages))
|
||||
}
|
||||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
|
|
|
|||
|
|
@ -28,18 +28,20 @@ import (
|
|||
)
|
||||
|
||||
type Executor struct {
|
||||
Cluster *kubekeyapi.ClusterSpec
|
||||
Logger *log.Logger
|
||||
Debug bool
|
||||
SkipCheck bool
|
||||
Cluster *kubekeyapi.ClusterSpec
|
||||
Logger *log.Logger
|
||||
Debug bool
|
||||
SkipCheck bool
|
||||
SkipPullImages bool
|
||||
}
|
||||
|
||||
func NewExecutor(cluster *kubekeyapi.ClusterSpec, logger *log.Logger, debug,skipCheck bool) *Executor {
|
||||
func NewExecutor(cluster *kubekeyapi.ClusterSpec, logger *log.Logger, debug, skipCheck, skipPullImages bool) *Executor {
|
||||
return &Executor{
|
||||
Cluster: cluster,
|
||||
Logger: logger,
|
||||
Debug: debug,
|
||||
SkipCheck: skipCheck,
|
||||
Cluster: cluster,
|
||||
Logger: logger,
|
||||
Debug: debug,
|
||||
SkipCheck: skipCheck,
|
||||
SkipPullImages: skipPullImages,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -60,7 +62,8 @@ func (executor *Executor) CreateManager() (*manager.Manager, error) {
|
|||
mgr.KsVersion = executor.Cluster.KubeSphere.Version
|
||||
mgr.Logger = executor.Logger
|
||||
mgr.Debug = executor.Debug
|
||||
mgr.SkipCheck = executor.SkipCheck
|
||||
mgr.SkipCheck = executor.SkipCheck
|
||||
mgr.SkipPullImages = executor.SkipPullImages
|
||||
return mgr, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,22 +24,23 @@ import (
|
|||
)
|
||||
|
||||
type Manager struct {
|
||||
Cluster *kubekeyapi.ClusterSpec
|
||||
Logger log.FieldLogger
|
||||
Connector *ssh.Dialer
|
||||
Runner *runner.Runner
|
||||
AllNodes []kubekeyapi.HostCfg
|
||||
EtcdNodes []kubekeyapi.HostCfg
|
||||
MasterNodes []kubekeyapi.HostCfg
|
||||
WorkerNodes []kubekeyapi.HostCfg
|
||||
K8sNodes []kubekeyapi.HostCfg
|
||||
ClientNode []kubekeyapi.HostCfg
|
||||
ClusterHosts []string
|
||||
WorkDir string
|
||||
KsEnable bool
|
||||
KsVersion string
|
||||
Debug bool
|
||||
SkipCheck bool
|
||||
Cluster *kubekeyapi.ClusterSpec
|
||||
Logger log.FieldLogger
|
||||
Connector *ssh.Dialer
|
||||
Runner *runner.Runner
|
||||
AllNodes []kubekeyapi.HostCfg
|
||||
EtcdNodes []kubekeyapi.HostCfg
|
||||
MasterNodes []kubekeyapi.HostCfg
|
||||
WorkerNodes []kubekeyapi.HostCfg
|
||||
K8sNodes []kubekeyapi.HostCfg
|
||||
ClientNode []kubekeyapi.HostCfg
|
||||
ClusterHosts []string
|
||||
WorkDir string
|
||||
KsEnable bool
|
||||
KsVersion string
|
||||
Debug bool
|
||||
SkipCheck bool
|
||||
SkipPullImages bool
|
||||
}
|
||||
|
||||
func (mgr *Manager) Copy() *Manager {
|
||||
|
|
|
|||
Loading…
Reference in New Issue