mirror of
https://github.com/labring/sealos.git
synced 2026-09-24 15:46:19 +08:00
Merge pull request #587 from oldthreefeng/develop
fix #586, drain node is too danger for prod use; do not drain nodes
This commit is contained in:
+15
-10
@@ -76,36 +76,41 @@ func (u *SealosUpgrade) SetUP() {
|
||||
func (u *SealosUpgrade) UpgradeMaster0() {
|
||||
logger.Info("UpgradeMaster0")
|
||||
hostname := u.GetHostNamesFromIps(u.Masters[:1])
|
||||
u.upgradeNodes(hostname)
|
||||
u.upgradeNodes(hostname, true)
|
||||
}
|
||||
|
||||
// UpgradeNodes is upgrade nodes.
|
||||
func (u *SealosUpgrade) UpgradeNodes() {
|
||||
logger.Info("UpgradeNodes")
|
||||
hostnames := u.GetHostNamesFromIps(u.Nodes)
|
||||
u.upgradeNodes(hostnames)
|
||||
u.upgradeNodes(hostnames, false)
|
||||
}
|
||||
|
||||
// UpgradeOtherMaster is upgrade other master.
|
||||
func (u *SealosUpgrade) UpgradeOtherMaster() {
|
||||
logger.Info("UpgradeOtherMasters")
|
||||
hostnames := u.GetHostNamesFromIps(u.Masters[1:])
|
||||
u.upgradeNodes(hostnames)
|
||||
u.upgradeNodes(hostnames, true)
|
||||
|
||||
}
|
||||
|
||||
func (u *SealosUpgrade) upgradeNodes(hostnames []string) {
|
||||
func (u *SealosUpgrade) upgradeNodes(hostnames []string, isMaster bool) {
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
for _, hostname := range hostnames {
|
||||
wg.Add(1)
|
||||
go func(node string) {
|
||||
defer wg.Done()
|
||||
// first to drain node
|
||||
logger.Info("first: to drain node %s", node)
|
||||
cmdDrain := fmt.Sprintf(`kubectl drain %s --ignore-daemonsets --delete-local-data`, node)
|
||||
err := SSHConfig.CmdAsync(u.Masters[0], cmdDrain)
|
||||
if err != nil {
|
||||
logger.Error("kubectl drain %s err: %v", node, err)
|
||||
// drain worker node is too danger for prod use; do not drain nodes if worker nodes~
|
||||
if isMaster {
|
||||
logger.Info("first: to drain master node %s", node)
|
||||
cmdDrain := fmt.Sprintf(`kubectl drain %s --ignore-daemonsets --delete-local-data`, node)
|
||||
err := SSHConfig.CmdAsync(u.Masters[0], cmdDrain)
|
||||
if err != nil {
|
||||
logger.Error("kubectl drain %s err: %v", node, err)
|
||||
}
|
||||
} else {
|
||||
logger.Info("first: to print upgrade node %s", node)
|
||||
}
|
||||
|
||||
// second to exec kubeadm upgrade node
|
||||
|
||||
Reference in New Issue
Block a user