summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormicplus <ain01a@outlook.com>2024-04-07 10:53:55 +0800
committermicplus <ain01a@outlook.com>2024-04-07 14:17:38 +0800
commit52cfef8d757e5273d58490a74e9e52d8472f3997 (patch)
tree5923b2f6a8ec876a08dfd8e2e6bc3e38a7f41c81
parentfeat: improve edged init logic (diff)
downloadkubeedge-52cfef8d757e5273d58490a74e9e52d8472f3997.tar.gz
feat: add feature
Signed-off-by: micplus <ain01a@outlook.com>
-rw-r--r--edge/cmd/edgecore/app/server.go3
-rw-r--r--edge/pkg/edged/edged.go5
-rw-r--r--pkg/features/features.go8
-rw-r--r--staging/src/github.com/kubeedge/beehive/pkg/core/module.go2
4 files changed, 14 insertions, 4 deletions
diff --git a/edge/cmd/edgecore/app/server.go b/edge/cmd/edgecore/app/server.go
index 128bfdbfc..5e77c0bb7 100644
--- a/edge/cmd/edgecore/app/server.go
+++ b/edge/cmd/edgecore/app/server.go
@@ -34,6 +34,7 @@ import (
"github.com/kubeedge/kubeedge/pkg/util/flag"
utilvalidation "github.com/kubeedge/kubeedge/pkg/util/validation"
"github.com/kubeedge/kubeedge/pkg/version"
+ kefeatures "github.com/kubeedge/kubeedge/pkg/features"
)
// NewEdgeCoreCommand create edgecore cmd
@@ -123,7 +124,7 @@ offering HTTP client capabilities to components of cloud to reach HTTP servers r
registerModules(config)
// enable module auto-restart feature
- if config.FeatureGates[options.FeatureModuleAutoStart] {
+ if kefeatures.DefaultFeatureGate.Enabled(kefeatures.ModuleRestart) {
core.EnableModuleRestart()
}
diff --git a/edge/pkg/edged/edged.go b/edge/pkg/edged/edged.go
index 8290c91c9..1f81fce9f 100644
--- a/edge/pkg/edged/edged.go
+++ b/edge/pkg/edged/edged.go
@@ -61,6 +61,7 @@ import (
"github.com/kubeedge/kubeedge/edge/pkg/metamanager/dao"
"github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha2"
"github.com/kubeedge/kubeedge/pkg/version"
+ kefeatures "github.com/kubeedge/kubeedge/pkg/features"
)
// GetKubeletDeps returns a Dependencies suitable for lite kubelet being run.
@@ -139,13 +140,13 @@ func (e *edged) Start() {
go func() {
err := DefaultRunLiteKubelet(e.context, e.KubeletServer, e.KubeletDeps, e.FeatureGate)
if err != nil {
- if !core.IsModuleRestartEnabled() {
+ if !kefeatures.DefaultFeatureGate.Enabled(kefeatures.ModuleRestart) {
klog.Errorf("Start edged failed, err: %v", err)
os.Exit(1)
}
klErrChan <- err
// send empty message to wakeup syncPod loop
- nilMsg := model.NewMessage("").BuildRouter(e.Name(), e.Group(), e.namespace+"/"+model.ResourceTypePod, "")
+ nilMsg := model.NewMessage("").BuildRouter(e.Name(), e.Group(), "", "")
beehiveContext.Send(modules.EdgedModuleName, *nilMsg)
}
}()
diff --git a/pkg/features/features.go b/pkg/features/features.go
index 896acf4a0..bb95785ba 100644
--- a/pkg/features/features.go
+++ b/pkg/features/features.go
@@ -26,6 +26,13 @@ const (
// alpha: v1.12
// owner: @vincentgoat
RequireAuthorization featuregate.Feature = "requireAuthorization"
+ // ModuleRestart supports automatic restarting for modules.
+ // If a module exits when running because of uncaught or external errors, BeeHive will try to keep the module running by restarting it.
+ // If moduleRestart enabled, modules will be kept running forever. The interval between starting a module increases whenever it exits,
+ // with maximum of 30s.
+ // alpha: v1.17
+ // owner: @micplus
+ ModuleRestart featuregate.Feature = "moduleRestart"
)
// defaultFeatureGates consists of all known Kubeedge-specific feature keys.
@@ -33,4 +40,5 @@ const (
// available throughout Kubeedge binaries.
var defaultFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
RequireAuthorization: {Default: false, PreRelease: featuregate.Alpha},
+ ModuleRestart: {Default: false, PreRelease: featuregate.Alpha},
}
diff --git a/staging/src/github.com/kubeedge/beehive/pkg/core/module.go b/staging/src/github.com/kubeedge/beehive/pkg/core/module.go
index 618b099ca..178ae88e2 100644
--- a/staging/src/github.com/kubeedge/beehive/pkg/core/module.go
+++ b/staging/src/github.com/kubeedge/beehive/pkg/core/module.go
@@ -86,7 +86,7 @@ func GetModuleExchange() *socket.ModuleExchange {
return &exchange
}
-// EnableModuleRestart enable new feature for auto restarting modules
+// EnableModuleRestart enable feature for auto restarting modules
func EnableModuleRestart() {
moduleRestartEnabled = true
}