mirror of https://github.com/k3s-io/k3s
Fix snapshot restoration on fresh nodes (#4737)
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>pull/4744/head v1.22.4-rc2+k3s2
parent
bf4e037fcf
commit
d71b335871
|
@ -174,6 +174,7 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont
|
|||
serverConfig.ControlConfig.DisableScheduler = true
|
||||
serverConfig.ControlConfig.DisableCCM = true
|
||||
|
||||
close(agentReady)
|
||||
dataDir, err := datadir.LocalHome(cfg.DataDir, false)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -311,12 +311,11 @@ const systemTimeSkew = int64(3)
|
|||
|
||||
// isMigrated checks to see if the given bootstrap data
|
||||
// is in the latest format.
|
||||
func isMigrated(buf io.ReadSeeker) bool {
|
||||
func isMigrated(buf io.ReadSeeker, files *bootstrap.PathsDataformat) bool {
|
||||
buf.Seek(0, 0)
|
||||
defer buf.Seek(0, 0)
|
||||
|
||||
files := make(bootstrap.PathsDataformat)
|
||||
if err := json.NewDecoder(buf).Decode(&files); err != nil {
|
||||
if err := json.NewDecoder(buf).Decode(files); err != nil {
|
||||
// This will fail if data is being pulled from old an cluster since
|
||||
// older clusters used a map[string][]byte for the data structure.
|
||||
// Therefore, we need to perform a migration to the newer bootstrap
|
||||
|
@ -342,7 +341,7 @@ func (c *Cluster) ReconcileBootstrapData(ctx context.Context, buf io.ReadSeeker,
|
|||
// from an older version of k3s. That version might not have the new data format
|
||||
// and we should write the correct format.
|
||||
files := make(bootstrap.PathsDataformat)
|
||||
if !isMigrated(buf) {
|
||||
if !isMigrated(buf, &files) {
|
||||
if err := migrateBootstrapData(ctx, buf, files); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -423,7 +422,7 @@ func (c *Cluster) ReconcileBootstrapData(ctx context.Context, buf io.ReadSeeker,
|
|||
}
|
||||
|
||||
files := make(bootstrap.PathsDataformat)
|
||||
if !isMigrated(buf) {
|
||||
if !isMigrated(buf, &files) {
|
||||
if err := migrateBootstrapData(ctx, buf, files); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -198,6 +198,11 @@ func (e *ETCD) Reset(ctx context.Context, rebootstrap func() error) error {
|
|||
t := time.NewTicker(5 * time.Second)
|
||||
defer t.Stop()
|
||||
for range t.C {
|
||||
// resetting the apiaddresses to nil since we are doing a restoration
|
||||
if _, err := e.client.Put(ctx, AddressKey, ""); err != nil {
|
||||
logrus.Warnf("failed to reset api addresses key in etcd: %v", err)
|
||||
continue
|
||||
}
|
||||
if err := e.Test(ctx); err == nil {
|
||||
members, err := e.client.MemberList(ctx)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue