mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-25 17:12:50 +00:00
add reset cmd
This commit is contained in:
parent
107205c14c
commit
e9eb8f085c
|
|
@ -1,7 +1,7 @@
|
|||
package create
|
||||
|
||||
import (
|
||||
"github.com/pixiake/kubekey/install"
|
||||
"github.com/pixiake/kubekey/pkg/install"
|
||||
"github.com/pixiake/kubekey/pkg/util"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,10 @@ spec:
|
|||
domain: lb.kubesphere.local
|
||||
address: ""
|
||||
port: "6443"
|
||||
kubeVersion: v1.17.4
|
||||
kubeImageRepo: kubekey
|
||||
kubeClusterName: cluster.local
|
||||
kubeCluster:
|
||||
version: v1.17.4
|
||||
imageRepo: kubekey
|
||||
clusterName: cluster.local
|
||||
network:
|
||||
plugin: calico
|
||||
kube_pods_cidr: 10.233.64.0/18
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var etcdFiles = []string{"/usr/local/bin/etcd", "/etc/ssl/etcd/ssl", "/var/lib/etcd", "/etc/etcd.env", "/etc/systemd/system/etcd.service"}
|
||||
|
||||
func NewCmdResetCluster() *cobra.Command {
|
||||
var (
|
||||
clusterCfgFile string
|
||||
|
|
@ -22,7 +20,7 @@ func NewCmdResetCluster() *cobra.Command {
|
|||
},
|
||||
}
|
||||
|
||||
clusterCmd.Flags().StringVarP(&clusterCfgFile, "cluster-info", "", "", "")
|
||||
clusterCmd.Flags().StringVarP(&clusterCfgFile, "config", "f", "", "")
|
||||
return clusterCmd
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/pixiake/kubekey/pkg/scale"
|
||||
"github.com/pixiake/kubekey/pkg/util"
|
||||
"github.com/pixiake/kubekey/scale"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
package cluster
|
||||
|
|
@ -26,7 +26,6 @@ sed -r -i "s@#{0,}?net.bridge.bridge-nf-call-iptables ?= ?(0|1)@net.bridge.brid
|
|||
sed -r -i "s@#{0,}?net.ipv4.ip_local_reserved_ports ?= ?(0|1)@net.ipv4.ip_local_reserved_ports = 30000-32767@g" /etc/sysctl.conf
|
||||
|
||||
awk ' !x[$0]++{print > "/etc/sysctl.conf"}' /etc/sysctl.conf
|
||||
sysctl -p
|
||||
|
||||
systemctl stop firewald 1>/dev/null 2>/dev/null
|
||||
systemctl disable firewald 1>/dev/null 2>/dev/null
|
||||
|
|
@ -59,6 +58,7 @@ else
|
|||
modprobe nf_conntrack
|
||||
echo 'nf_conntrack' > /etc/modules-load.d/kube_proxy-ipvs.conf
|
||||
fi
|
||||
sysctl -p
|
||||
|
||||
sed -i ':a;$!{N;ba};s@# kubekey hosts BEGIN.*# kubekey hosts END@@' /etc/hosts
|
||||
sed -i '/^$/N;/\n$/N;//D' /etc/hosts
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ func SetDefaultK2ClusterSpec(cfg *kubekeyapi.K2ClusterSpec) kubekeyapi.K2Cluster
|
|||
clusterCfg.Hosts = SetDefaultHostsCfg(cfg)
|
||||
clusterCfg.LBKubeApiserver = SetDefaultLBCfg(cfg)
|
||||
clusterCfg.Network = SetDefaultNetworkCfg(cfg)
|
||||
clusterCfg.KubeCluster = SetDefaultClusterCfg(cfg)
|
||||
clusterCfg.Registry = cfg.Registry
|
||||
if cfg.KubeCluster.ImageRepo == "" {
|
||||
clusterCfg.KubeCluster.ImageRepo = kubekeyapi.DefaultKubeImageRepo
|
||||
|
|
@ -161,3 +162,19 @@ func SetDefaultNetworkCfg(cfg *kubekeyapi.K2ClusterSpec) kubekeyapi.NetworkConfi
|
|||
|
||||
return defaultNetworkCfg
|
||||
}
|
||||
|
||||
func SetDefaultClusterCfg(cfg *kubekeyapi.K2ClusterSpec) kubekeyapi.KubeCluster {
|
||||
if cfg.KubeCluster.Version == "" {
|
||||
cfg.KubeCluster.Version = kubekeyapi.DefaultKubeVersion
|
||||
}
|
||||
if cfg.KubeCluster.ImageRepo == "" {
|
||||
cfg.KubeCluster.ImageRepo = kubekeyapi.DefaultKubeImageRepo
|
||||
}
|
||||
if cfg.KubeCluster.ClusterName == "" {
|
||||
cfg.KubeCluster.ClusterName = kubekeyapi.DefaultClusterName
|
||||
}
|
||||
|
||||
defaultClusterCfg := cfg.KubeCluster
|
||||
|
||||
return defaultClusterCfg
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ func installDockerOnNode(mgr *manager.Manager, node *kubekeyapi.HostCfg, conn ss
|
|||
return err
|
||||
}
|
||||
dockerConfigBase64 := base64.StdEncoding.EncodeToString([]byte(dockerConfig))
|
||||
_, err1 := mgr.Runner.RunCmd(fmt.Sprintf("sudo -E /bin/sh -c \"echo %s | base64 -d > /etc/docker/daemon.json && systemctl daemon-reload\"", dockerConfigBase64))
|
||||
_, err1 := mgr.Runner.RunCmd(fmt.Sprintf("sudo -E /bin/sh -c \"echo %s | base64 -d > /etc/docker/daemon.json && systemctl reload docker\"", dockerConfigBase64))
|
||||
if err1 != nil {
|
||||
return errors.Wrap(errors.WithStack(err1), "failed to add docker config")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,17 +30,17 @@ func CreateCluster(clusterCfgFile string, logger *log.Logger, addons string, pkg
|
|||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
createTasks := []manager.Task{
|
||||
{Fn: preinstall.InitOS, ErrMsg: "failed to download kube binaries"},
|
||||
{Fn: docker.InstallerDocker, ErrMsg: "failed to install docker"},
|
||||
{Fn: kubernetes.SyncKubeBinaries, ErrMsg: "failed to sync kube binaries"},
|
||||
{Fn: etcd.GenerateEtcdCerts, ErrMsg: "failed to generate etcd certs"},
|
||||
{Fn: etcd.SyncEtcdCertsToMaster, ErrMsg: "failed to sync etcd certs"},
|
||||
{Fn: etcd.GenerateEtcdService, ErrMsg: "failed to start etcd cluster"},
|
||||
{Fn: kubernetes.ConfigureKubeletService, ErrMsg: "failed to sync kube binaries"},
|
||||
{Fn: kubernetes.InitKubernetesCluster, ErrMsg: "failed to init kubernetes cluster"},
|
||||
{Fn: network.DeployNetworkPlugin, ErrMsg: "failed to deploy network plugin"},
|
||||
{Fn: kubernetes.GetJoinNodesCmd, ErrMsg: "failed to get join cmd"},
|
||||
{Fn: kubernetes.JoinNodesToCluster, ErrMsg: "failed to join node"},
|
||||
{Task: preinstall.InitOS, ErrMsg: "failed to download kube binaries"},
|
||||
{Task: docker.InstallerDocker, ErrMsg: "failed to install docker"},
|
||||
{Task: kubernetes.SyncKubeBinaries, ErrMsg: "failed to sync kube binaries"},
|
||||
{Task: etcd.GenerateEtcdCerts, ErrMsg: "failed to generate etcd certs"},
|
||||
{Task: etcd.SyncEtcdCertsToMaster, ErrMsg: "failed to sync etcd certs"},
|
||||
{Task: etcd.GenerateEtcdService, ErrMsg: "failed to start etcd cluster"},
|
||||
{Task: kubernetes.ConfigureKubeletService, ErrMsg: "failed to sync kube binaries"},
|
||||
{Task: kubernetes.InitKubernetesCluster, ErrMsg: "failed to init kubernetes cluster"},
|
||||
{Task: network.DeployNetworkPlugin, ErrMsg: "failed to deploy network plugin"},
|
||||
{Task: kubernetes.GetJoinNodesCmd, ErrMsg: "failed to get join cmd"},
|
||||
{Task: kubernetes.JoinNodesToCluster, ErrMsg: "failed to join node"},
|
||||
}
|
||||
|
||||
for _, step := range createTasks {
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package reset
|
||||
|
||||
import (
|
||||
kubekeyapi "github.com/pixiake/kubekey/pkg/apis/kubekey/v1alpha1"
|
||||
"github.com/pixiake/kubekey/pkg/util/manager"
|
||||
"github.com/pixiake/kubekey/pkg/util/ssh"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type Executor struct {
|
||||
cluster *kubekeyapi.K2ClusterSpec
|
||||
logger *log.Logger
|
||||
}
|
||||
|
||||
func NewExecutor(cluster *kubekeyapi.K2ClusterSpec, logger *log.Logger) *Executor {
|
||||
return &Executor{
|
||||
cluster: cluster,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (executor *Executor) Execute() error {
|
||||
mgr, err := executor.createManager()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ExecTasks(mgr)
|
||||
}
|
||||
|
||||
func (executor *Executor) createManager() (*manager.Manager, error) {
|
||||
mgr := &manager.Manager{}
|
||||
allNodes, etcdNodes, masterNodes, workerNodes, k8sNodes, clientNode := executor.cluster.GroupHosts()
|
||||
mgr.AllNodes = allNodes
|
||||
mgr.EtcdNodes = etcdNodes
|
||||
mgr.MasterNodes = masterNodes
|
||||
mgr.WorkerNodes = workerNodes
|
||||
mgr.K8sNodes = k8sNodes
|
||||
mgr.ClientNode = clientNode
|
||||
mgr.Cluster = executor.cluster
|
||||
mgr.Connector = ssh.NewConnector()
|
||||
mgr.Logger = executor.logger
|
||||
mgr.Verbose = true
|
||||
|
||||
return mgr, nil
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package reset
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
kubekeyapi "github.com/pixiake/kubekey/pkg/apis/kubekey/v1alpha1"
|
||||
"github.com/pixiake/kubekey/pkg/cluster/preinstall"
|
||||
"github.com/pixiake/kubekey/pkg/config"
|
||||
"github.com/pixiake/kubekey/pkg/util/manager"
|
||||
"github.com/pixiake/kubekey/pkg/util/ssh"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func CreateCluster(clusterCfgFile string, logger *log.Logger, addons string, pkg string) error {
|
||||
cfg, err := config.ParseClusterCfg(clusterCfgFile, logger)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to download cluster config")
|
||||
}
|
||||
|
||||
out, _ := json.MarshalIndent(cfg, "", " ")
|
||||
fmt.Println(string(out))
|
||||
if err := preinstall.Prepare(&cfg.Spec, logger); err != nil {
|
||||
return errors.Wrap(err, "failed to load kube binarys")
|
||||
}
|
||||
return NewExecutor(&cfg.Spec, logger).Execute()
|
||||
}
|
||||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
resetTasks := []manager.Task{
|
||||
{Task: ResetKubeCluster, ErrMsg: "failed to reset kube cluster"},
|
||||
{Task: ResetEtcdCluster, ErrMsg: "failed to clean etcd files"},
|
||||
}
|
||||
|
||||
for _, step := range resetTasks {
|
||||
if err := step.Run(mgr); err != nil {
|
||||
return errors.Wrap(err, step.ErrMsg)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func ResetKubeCluster(mgr *manager.Manager) error {
|
||||
mgr.Logger.Infoln("Reset cluster")
|
||||
|
||||
return mgr.RunTaskOnK8sNodes(resetKubeCluster, true)
|
||||
}
|
||||
|
||||
func resetKubeCluster(mgr *manager.Manager, node *kubekeyapi.HostCfg, conn ssh.Connection) error {
|
||||
_, err := mgr.Runner.RunCmd("sudo -E /bin/sh -c \"/user/local/bin/kubeadm reset -f\"")
|
||||
if err != nil {
|
||||
return errors.Wrap(errors.WithStack(err), "failed to reset kube cluster")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var etcdFiles = []string{"/usr/local/bin/etcd", "/etc/ssl/etcd/ssl", "/var/lib/etcd", "/etc/etcd.env", "/etc/systemd/system/etcd.service"}
|
||||
|
||||
func ResetEtcdCluster(mgr *manager.Manager) error {
|
||||
mgr.Logger.Infoln("Reset cluster")
|
||||
|
||||
return mgr.RunTaskOnEtcdNodes(resetKubeCluster, false)
|
||||
}
|
||||
|
||||
func resetEtcdCluster(mgr *manager.Manager, node *kubekeyapi.HostCfg, conn ssh.Connection) error {
|
||||
_, err := mgr.Runner.RunCmd("sudo -E /bin/sh -c \"systemctl stop etcd\"")
|
||||
if err != nil {
|
||||
return errors.Wrap(errors.WithStack(err), "failed to reset etcd cluster")
|
||||
}
|
||||
|
||||
for _, file := range etcdFiles {
|
||||
_, err := mgr.Runner.RunCmd(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s\"", file))
|
||||
if err != nil {
|
||||
return errors.Wrap(errors.WithStack(err), fmt.Sprintf("failed to clean etcd files: %s", file))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -28,12 +28,12 @@ func ScaleCluster(clusterCfgFile string, logger *log.Logger, pkg string) error {
|
|||
|
||||
func ExecTasks(mgr *manager.Manager) error {
|
||||
scaleTasks := []manager.Task{
|
||||
{Fn: preinstall.InitOS, ErrMsg: "failed to download kube binaries"},
|
||||
{Fn: docker.InstallerDocker, ErrMsg: "failed to install docker"},
|
||||
{Fn: kubernetes.SyncKubeBinaries, ErrMsg: "failed to sync kube binaries"},
|
||||
{Fn: kubernetes.ConfigureKubeletService, ErrMsg: "failed to sync kube binaries"},
|
||||
{Fn: kubernetes.GetJoinNodesCmd, ErrMsg: "failed to get join cmd"},
|
||||
{Fn: kubernetes.JoinNodesToCluster, ErrMsg: "failed to join node"},
|
||||
{Task: preinstall.InitOS, ErrMsg: "failed to download kube binaries"},
|
||||
{Task: docker.InstallerDocker, ErrMsg: "failed to install docker"},
|
||||
{Task: kubernetes.SyncKubeBinaries, ErrMsg: "failed to sync kube binaries"},
|
||||
{Task: kubernetes.ConfigureKubeletService, ErrMsg: "failed to sync kube binaries"},
|
||||
{Task: kubernetes.GetJoinNodesCmd, ErrMsg: "failed to get join cmd"},
|
||||
{Task: kubernetes.JoinNodesToCluster, ErrMsg: "failed to join node"},
|
||||
}
|
||||
|
||||
for _, task := range scaleTasks {
|
||||
|
|
@ -16,7 +16,7 @@ func defaultRetryBackoff(retries int) wait.Backoff {
|
|||
|
||||
// Task is a runnable task
|
||||
type Task struct {
|
||||
Fn func(*Manager) error
|
||||
Task func(*Manager) error
|
||||
ErrMsg string
|
||||
Retries int
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ func (t *Task) Run(mgrTask *Manager) error {
|
|||
if lastError != nil {
|
||||
mgrTask.Logger.Warn("Retrying task…")
|
||||
}
|
||||
lastError = t.Fn(mgrTask)
|
||||
lastError = t.Task(mgrTask)
|
||||
if lastError != nil {
|
||||
mgrTask.Logger.Warn("Task failed…")
|
||||
if mgrTask.Verbose {
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ echo_docker_as_nonroot() {
|
|||
$sh_c 'docker version'
|
||||
) || true
|
||||
fi
|
||||
# config_Accelerator
|
||||
config_Accelerator
|
||||
|
||||
your_user=your-user
|
||||
[ "$user" != 'root' ] && your_user="$user"
|
||||
|
|
|
|||
Loading…
Reference in New Issue