summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/constants/default.go3
-rw-r--r--common/constants/default_windows.go180
-rw-r--r--edge/cmd/edgecore/app/server.go2
-rw-r--r--edge/pkg/devicetwin/dmiserver/const_others.go7
-rw-r--r--edge/pkg/devicetwin/dmiserver/const_windows.go7
-rw-r--r--edge/pkg/devicetwin/dmiserver/server.go20
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/default.go2
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration.go4
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration_windows.go100
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/types.go7
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/types_others.go11
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/types_windows.go11
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation.go27
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_others.go25
-rw-r--r--pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_windows.go26
15 files changed, 385 insertions, 47 deletions
diff --git a/common/constants/default.go b/common/constants/default.go
index 2b5134bc3..1d55b63b6 100644
--- a/common/constants/default.go
+++ b/common/constants/default.go
@@ -1,3 +1,5 @@
+//go:build !windows
+
package constants
import (
@@ -78,6 +80,7 @@ const (
DefaultVolumeStatsAggPeriod = time.Minute
DefaultTunnelPort = 10004
DefaultClusterDomain = "cluster.local"
+ DefaultVolumePluginDir = "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
CurrentSupportK8sVersion = "v1.24.14"
diff --git a/common/constants/default_windows.go b/common/constants/default_windows.go
new file mode 100644
index 000000000..b1ef1c0ed
--- /dev/null
+++ b/common/constants/default_windows.go
@@ -0,0 +1,180 @@
+//go:build windows
+
+package constants
+
+import (
+ "time"
+
+ v1 "k8s.io/api/core/v1"
+)
+
+// Module name and group name
+const (
+ // SyncController
+ DefaultContextSendModuleName = "cloudhub"
+
+ // NodeName is for the clearer log of cloudcore.
+ NodeName = "NodeName"
+
+ ProjectName = "KubeEdge"
+
+ SystemName = "kubeedge"
+ SystemNamespace = SystemName
+
+ CloudConfigMapName = "cloudcore"
+
+ // runtime
+ DockerContainerRuntime = "docker"
+ RemoteContainerRuntime = "remote"
+)
+
+// Resources
+const (
+ // Certificates
+ DefaultConfigDir = "c:\\etc\\kubeedge\\config\\"
+ DefaultCAFile = "c:\\etc\\kubeedge\\ca\\rootCA.crt"
+ DefaultCAKeyFile = "c:\\etc\\kubeedge\\ca\\rootCA.key"
+ DefaultCertFile = "c:\\etc\\kubeedge\\certs\\server.crt"
+ DefaultKeyFile = "c:\\etc\\kubeedge\\certs\\server.key"
+ DefaultServiceAccountIssuer = "https://kubernetes.default.svc.cluster.local"
+
+ DefaultCAURL = "/ca.crt"
+ DefaultCertURL = "/edge.crt"
+ DefaultNodeUpgradeURL = "/nodeupgrade"
+
+ DefaultStreamCAFile = "c:\\etc\\kubeedge\\ca\\streamCA.crt"
+ DefaultStreamCertFile = "c:\\etc\\kubeedge\\certs\\stream.crt"
+ DefaultStreamKeyFile = "c:\\etc\\kubeedge\\certs\\stream.key"
+
+ DefaultMqttCAFile = "c:\\etc\\kubeedge\\ca\\rootCA.crt"
+ DefaultMqttCertFile = "c:\\etc\\kubeedge\\certs\\server.crt"
+ DefaultMqttKeyFile = "c:\\etc\\kubeedge\\certs\\server.key"
+
+ // Bootstrap file, contains token used by edgecore to apply for ca/cert
+ BootstrapFile = "c:\\etc\\kubeedge\\bootstrap-edgecore.conf"
+
+ // Edged
+ DefaultRootDir = "c:\\var\\lib\\edged"
+ DefaultDockerAddress = "unix:///var/run/docker.sock"
+ DefaultRuntimeType = "remote"
+ DefaultDockershimRootDir = "c:\\var\\lib\\dockershim"
+ DefaultEdgedMemoryCapacity = 7852396000
+ DefaultRemoteRuntimeEndpoint = "npipe://./pipe/containerd-containerd"
+ DefaultRemoteImageEndpoint = "npipe://./pipe/containerd-containerd"
+ DefaultMosquittoImage = "eclipse-mosquitto:1.6.15"
+ // update PodSandboxImage version when bumping k8s vendor version, consistent with vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go defaultPodSandboxImageVersion
+ // When this value are updated, also update comments in pkg/apis/componentconfig/edgecore/v1alpha1/types.go
+ DefaultPodSandboxImage = "kubeedge/pause:3.6"
+ DefaultImagePullProgressDeadline = time.Minute
+ DefaultImageGCHighThreshold = 80
+ DefaultImageGCLowThreshold = 40
+ DefaultMaximumDeadContainersPerPod = 1
+ DefaultHostnameOverride = "default-edge-node"
+ DefaultRegisterNodeNamespace = "default"
+ DefaultCNIConfDir = "c:\\etc\\cni\\net.d"
+ DefaultCNIBinDir = "c:\\opt\\cni\\bin"
+ DefaultCNICacheDir = "c:\\var\\lib\\cni\\cache"
+ DefaultNetworkPluginMTU = 1500
+ DefaultConcurrentConsumers = 5
+ DefaultCgroupRoot = ""
+ DefaultVolumeStatsAggPeriod = time.Minute
+ DefaultTunnelPort = 10004
+ DefaultClusterDomain = "cluster.local"
+ DefaultVolumePluginDir = "C:\\usr\\libexec\\kubernetes\\kubelet-plugins\\volume\\exec\\"
+
+ CurrentSupportK8sVersion = "v1.24.14"
+
+ // MetaManager
+ DefaultRemoteQueryTimeout = 60
+ DefaultMetaServerAddr = "127.0.0.1:10550"
+
+ // Config
+ DefaultKubeContentType = "application/vnd.kubernetes.protobuf"
+ DefaultKubeNamespace = v1.NamespaceAll
+ DefaultKubeQPS = 100.0
+ DefaultKubeBurst = 200
+ DefaultNodeLimit = 500
+ DefaultKubeUpdateNodeFrequency = 20
+
+ // EdgeController
+ DefaultUpdatePodStatusWorkers = 1
+ DefaultUpdateNodeStatusWorkers = 1
+ DefaultQueryConfigMapWorkers = 100
+ DefaultQuerySecretWorkers = 100
+ DefaultQueryPersistentVolumeWorkers = 4
+ DefaultQueryPersistentVolumeClaimWorkers = 4
+ DefaultQueryVolumeAttachmentWorkers = 4
+ DefaultCreateNodeWorkers = 100
+ DefaultUpdateNodeWorkers = 4
+ DefaultPatchPodWorkers = 100
+ DefaultDeletePodWorkers = 100
+ DefaultUpdateRuleStatusWorkers = 4
+ DefaultQueryLeaseWorkers = 100
+ DefaultServiceAccountTokenWorkers = 100
+
+ DefaultUpdatePodStatusBuffer = 1024
+ DefaultUpdateNodeStatusBuffer = 1024
+ DefaultQueryConfigMapBuffer = 1024
+ DefaultQuerySecretBuffer = 1024
+ DefaultQueryPersistentVolumeBuffer = 1024
+ DefaultQueryPersistentVolumeClaimBuffer = 1024
+ DefaultQueryVolumeAttachmentBuffer = 1024
+ DefaultCreateNodeBuffer = 1024
+ DefaultUpdateNodeBuffer = 1024
+ DefaultPatchPodBuffer = 1024
+ DefaultDeletePodBuffer = 1024
+ DefaultQueryLeaseBuffer = 1024
+ DefaultServiceAccountTokenBuffer = 1024
+
+ DefaultPodEventBuffer = 1
+ DefaultConfigMapEventBuffer = 1
+ DefaultSecretEventBuffer = 1
+ DefaultRulesEventBuffer = 1
+ DefaultRuleEndpointsEventBuffer = 1
+
+ // DeviceController
+ DefaultUpdateDeviceStatusBuffer = 1024
+ DefaultDeviceEventBuffer = 1
+ DefaultDeviceModelEventBuffer = 1
+ DefaultUpdateDeviceStatusWorkers = 1
+
+ // NodeUpgradeJobController
+ DefaultNodeUpgradeJobStatusBuffer = 1024
+ DefaultNodeUpgradeJobEventBuffer = 1
+ DefaultNodeUpgradeJobWorkers = 1
+
+ // Resource sep
+ ResourceSep = "/"
+
+ ResourceTypeService = "service"
+ ResourceTypeEndpoints = "endpoints"
+
+ ResourceTypePersistentVolume = "persistentvolume"
+ ResourceTypePersistentVolumeClaim = "persistentvolumeclaim"
+ ResourceTypeVolumeAttachment = "volumeattachment"
+
+ CSIResourceTypeVolume = "volume"
+ CSIOperationTypeCreateVolume = "createvolume"
+ CSIOperationTypeDeleteVolume = "deletevolume"
+ CSIOperationTypeControllerPublishVolume = "controllerpublishvolume"
+ CSIOperationTypeControllerUnpublishVolume = "controllerunpublishvolume"
+ CSISyncMsgRespTimeout = 1 * time.Minute
+
+ // ServerPort is the default port for the edgecore server on each host machine.
+ // May be overridden by a flag at startup in the future.
+ ServerAddress = "127.0.0.1"
+ ServerPort = 10350
+
+ // MessageSuccessfulContent is the successful content value of Message struct
+ MessageSuccessfulContent string = "OK"
+ DefaultQPS = 30
+ DefaultBurst = 60
+ // MaxRespBodyLength is the max length of http response body
+ MaxRespBodyLength = 1 << 20 // 1 MiB
+
+ EdgeNodeRoleKey = "node-role.kubernetes.io/edge"
+ EdgeNodeRoleValue = ""
+
+ DeafultMosquittoContainerName = "mqtt-kubeedge"
+ DeployMqttContainerEnv = "DEPLOY_MQTT_CONTAINER"
+)
diff --git a/edge/cmd/edgecore/app/server.go b/edge/cmd/edgecore/app/server.go
index 0438829f1..a7fad57fe 100644
--- a/edge/cmd/edgecore/app/server.go
+++ b/edge/cmd/edgecore/app/server.go
@@ -176,7 +176,7 @@ func environmentCheck() error {
for _, process := range processes {
processName, err := process.Name()
if err != nil {
- return err
+ continue
}
switch processName {
case "kubelet": // if kubelet is running, return error
diff --git a/edge/pkg/devicetwin/dmiserver/const_others.go b/edge/pkg/devicetwin/dmiserver/const_others.go
new file mode 100644
index 000000000..f06eb0b58
--- /dev/null
+++ b/edge/pkg/devicetwin/dmiserver/const_others.go
@@ -0,0 +1,7 @@
+//go:build !windows
+
+package dmiserver
+
+const (
+ SockPath = "/etc/kubeedge/dmi.sock"
+)
diff --git a/edge/pkg/devicetwin/dmiserver/const_windows.go b/edge/pkg/devicetwin/dmiserver/const_windows.go
new file mode 100644
index 000000000..9f68fd48f
--- /dev/null
+++ b/edge/pkg/devicetwin/dmiserver/const_windows.go
@@ -0,0 +1,7 @@
+//go:build windows
+
+package dmiserver
+
+const (
+ SockPath = "c:\\etc\\kubeedge\\dmi.sock"
+)
diff --git a/edge/pkg/devicetwin/dmiserver/server.go b/edge/pkg/devicetwin/dmiserver/server.go
index a63d20ae8..9967832ed 100644
--- a/edge/pkg/devicetwin/dmiserver/server.go
+++ b/edge/pkg/devicetwin/dmiserver/server.go
@@ -46,9 +46,8 @@ import (
)
const (
- SockPath = "/etc/kubeedge/dmi.sock"
- Limit = 1000
- Burst = 100
+ Limit = 1000
+ Burst = 100
)
type server struct {
@@ -181,18 +180,15 @@ func CreateMessageTwinUpdate(name, valueType, value string) ([]byte, error) {
func initSock(sockPath string) error {
klog.Infof("init uds socket: %s", sockPath)
- _, err := os.Stat(sockPath)
- if err == nil {
- err = os.Remove(sockPath)
- if err != nil {
- return err
- }
- return nil
- } else if os.IsNotExist(err) {
+ err := os.Remove(sockPath)
+
+ if os.IsNotExist(err) {
return nil
- } else {
+ } else if err != nil {
+ klog.Error(err)
return fmt.Errorf("fail to stat uds socket path")
}
+ return nil
}
func StartDMIServer(cache *DMICache) {
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/default.go b/pkg/apis/componentconfig/edgecore/v1alpha2/default.go
index 97a761157..8ae677748 100644
--- a/pkg/apis/componentconfig/edgecore/v1alpha2/default.go
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/default.go
@@ -67,6 +67,7 @@ func NewDefaultEdgeCoreConfig() *EdgeCoreConfig {
NodeLabels: make(map[string]string),
RegisterNode: true,
RegisterSchedulable: true,
+ WindowsPriorityClass: "NORMAL_PRIORITY_CLASS",
},
CustomInterfaceName: "",
RegisterNodeNamespace: constants.DefaultRegisterNodeNamespace,
@@ -196,6 +197,7 @@ func NewMinEdgeCoreConfig() *EdgeCoreConfig {
NodeLabels: make(map[string]string),
RegisterNode: true,
RegisterSchedulable: true,
+ WindowsPriorityClass: "NORMAL_PRIORITY_CLASS",
},
CustomInterfaceName: "",
RegisterNodeNamespace: constants.DefaultRegisterNodeNamespace,
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration.go b/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration.go
index 7ad20f663..7243550f1 100644
--- a/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration.go
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration.go
@@ -1,3 +1,5 @@
+//go:build !windows
+
/*
Copyright 2022 The KubeEdge Authors.
@@ -93,7 +95,7 @@ func SetDefaultsKubeletConfiguration(obj *TailoredKubeletConfiguration) {
obj.ContainerLogMaxFiles = utilpointer.Int32Ptr(5)
obj.ConfigMapAndSecretChangeDetectionStrategy = kubeletconfigv1beta1.GetChangeDetectionStrategy
obj.EnforceNodeAllocatable = DefaultNodeAllocatableEnforcement
- obj.VolumePluginDir = configv1beta1.DefaultVolumePluginDir
+ obj.VolumePluginDir = constants.DefaultVolumePluginDir
// Use the Default LoggingConfiguration option
componentbaseconfigv1alpha1.RecommendedLoggingConfiguration(&obj.Logging)
obj.EnableSystemLogHandler = utilpointer.BoolPtr(true)
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration_windows.go b/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration_windows.go
new file mode 100644
index 000000000..6a5fe02ff
--- /dev/null
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/default_kubelet_configuration_windows.go
@@ -0,0 +1,100 @@
+//go:build windows
+
+/*
+Copyright 2022 The KubeEdge Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+@CHANGELOG
+KubeEdge Authors: To set default tailored kubelet configuration,
+This file is derived from K8S Kubelet apis code with reduced set of methods
+Changes done are
+1. Package edged got some functions from "k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1"
+and made some variant
+*/
+
+package v1alpha2
+
+import (
+ "time"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ componentbaseconfigv1alpha1 "k8s.io/component-base/config/v1alpha1"
+ kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
+ configv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1"
+ "k8s.io/kubernetes/pkg/kubelet/qos"
+ utilpointer "k8s.io/utils/pointer"
+
+ "github.com/kubeedge/kubeedge/common/constants"
+)
+
+// SetDefaultsKubeletConfiguration sets defaults for tailored kubelet configuration
+func SetDefaultsKubeletConfiguration(obj *TailoredKubeletConfiguration) {
+ obj.SyncFrequency = metav1.Duration{Duration: 1 * time.Minute}
+ obj.Address = constants.ServerAddress
+ obj.ReadOnlyPort = constants.ServerPort
+ obj.ClusterDomain = constants.DefaultClusterDomain
+ obj.RegistryPullQPS = utilpointer.Int32(5)
+ obj.RegistryBurst = 10
+ obj.EnableDebuggingHandlers = utilpointer.Bool(true)
+ obj.OOMScoreAdj = utilpointer.Int32(int32(qos.KubeletOOMScoreAdj))
+ obj.StreamingConnectionIdleTimeout = metav1.Duration{Duration: 4 * time.Hour}
+ obj.NodeStatusReportFrequency = metav1.Duration{Duration: 5 * time.Minute}
+ obj.NodeStatusUpdateFrequency = metav1.Duration{Duration: 10 * time.Second}
+ obj.NodeLeaseDurationSeconds = 40
+ obj.ImageMinimumGCAge = metav1.Duration{Duration: 2 * time.Minute}
+ // default is below docker's default dm.min_free_space of 90%
+ obj.ImageGCHighThresholdPercent = utilpointer.Int32(constants.DefaultImageGCHighThreshold)
+ obj.ImageGCLowThresholdPercent = utilpointer.Int32(constants.DefaultImageGCLowThreshold)
+ obj.VolumeStatsAggPeriod = metav1.Duration{Duration: time.Minute}
+ obj.CgroupsPerQOS = utilpointer.Bool(false)
+ obj.CgroupDriver = ""
+ obj.CPUManagerPolicy = "none"
+ // Keep the same as default NodeStatusUpdateFrequency
+ obj.CPUManagerReconcilePeriod = metav1.Duration{Duration: 10 * time.Second}
+ obj.MemoryManagerPolicy = kubeletconfigv1beta1.NoneMemoryManagerPolicy
+ obj.TopologyManagerPolicy = kubeletconfigv1beta1.NoneTopologyManagerPolicy
+ obj.TopologyManagerScope = kubeletconfigv1beta1.ContainerTopologyManagerScope
+ obj.RuntimeRequestTimeout = metav1.Duration{Duration: 2 * time.Minute}
+ obj.HairpinMode = kubeletconfigv1beta1.PromiscuousBridge
+ obj.MaxPods = 110
+ // default nil or negative value to -1 (implies node allocatable pid limit)
+ obj.PodPidsLimit = utilpointer.Int64(-1)
+ //obj.ResolverConfig = utilpointer.String("")
+ obj.CPUCFSQuota = utilpointer.Bool(false)
+ obj.CPUCFSQuotaPeriod = &metav1.Duration{Duration: 100 * time.Millisecond}
+ obj.NodeStatusMaxImages = utilpointer.Int32(0)
+ obj.MaxOpenFiles = 1000000
+ obj.ContentType = "application/json"
+ obj.SerializeImagePulls = utilpointer.Bool(true)
+ obj.EvictionHard = configv1beta1.DefaultEvictionHard
+ obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
+ obj.EnableControllerAttachDetach = utilpointer.Bool(true)
+ obj.MakeIPTablesUtilChains = utilpointer.Bool(true)
+ obj.IPTablesMasqueradeBit = utilpointer.Int32(configv1beta1.DefaultIPTablesMasqueradeBit)
+ obj.IPTablesDropBit = utilpointer.Int32(configv1beta1.DefaultIPTablesDropBit)
+ obj.FailSwapOn = utilpointer.Bool(false)
+ obj.ContainerLogMaxSize = "10Mi"
+ obj.ContainerLogMaxFiles = utilpointer.Int32(5)
+ obj.ConfigMapAndSecretChangeDetectionStrategy = kubeletconfigv1beta1.GetChangeDetectionStrategy
+ obj.EnforceNodeAllocatable = []string{}
+ obj.VolumePluginDir = constants.DefaultVolumePluginDir
+ // Use the Default LoggingConfiguration option
+ componentbaseconfigv1alpha1.RecommendedLoggingConfiguration(&obj.Logging)
+ obj.EnableSystemLogHandler = utilpointer.Bool(true)
+ obj.EnableProfilingHandler = utilpointer.Bool(true)
+ obj.EnableDebugFlagsHandler = utilpointer.Bool(true)
+ obj.SeccompDefault = utilpointer.Bool(false)
+ obj.MemoryThrottlingFactor = utilpointer.Float64(configv1beta1.DefaultMemoryThrottlingFactor)
+ obj.RegisterNode = utilpointer.Bool(true)
+}
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/types.go b/pkg/apis/componentconfig/edgecore/v1alpha2/types.go
index d8d89606a..4c507b7c8 100644
--- a/pkg/apis/componentconfig/edgecore/v1alpha2/types.go
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/types.go
@@ -33,17 +33,10 @@ const (
)
const (
- CGroupDriverCGroupFS = "cgroupfs"
- CGroupDriverSystemd = "systemd"
-)
-
-const (
// DataBaseDriverName is sqlite3
DataBaseDriverName = "sqlite3"
// DataBaseAliasName is default
DataBaseAliasName = "default"
- // DataBaseDataSource is edge.db
- DataBaseDataSource = "/var/lib/kubeedge/edgecore.db"
)
type ProtocolName string
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/types_others.go b/pkg/apis/componentconfig/edgecore/v1alpha2/types_others.go
new file mode 100644
index 000000000..c1dab91bd
--- /dev/null
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/types_others.go
@@ -0,0 +1,11 @@
+//go:build !windows
+
+package v1alpha2
+
+const (
+ CGroupDriverCGroupFS = "cgroupfs"
+ CGroupDriverSystemd = "systemd"
+
+ // DataBaseDataSource is edge.db
+ DataBaseDataSource = "/var/lib/kubeedge/edgecore.db"
+)
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/types_windows.go b/pkg/apis/componentconfig/edgecore/v1alpha2/types_windows.go
new file mode 100644
index 000000000..dba87042c
--- /dev/null
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/types_windows.go
@@ -0,0 +1,11 @@
+//go:build windows
+
+package v1alpha2
+
+const (
+ CGroupDriverCGroupFS = ""
+ CGroupDriverSystemd = ""
+
+ // DataBaseDataSource is edge.db
+ DataBaseDataSource = "C:\\var\\lib\\kubeedge\\edgecore.db"
+)
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation.go b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation.go
index cda0c581d..af18128c4 100644
--- a/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation.go
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation.go
@@ -21,12 +21,9 @@ import (
"os"
"path"
- "k8s.io/apimachinery/pkg/util/validation/field"
- "k8s.io/klog/v2"
- "k8s.io/kubernetes/pkg/apis/core/validation"
-
"github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha2"
utilvalidation "github.com/kubeedge/kubeedge/pkg/util/validation"
+ "k8s.io/apimachinery/pkg/util/validation/field"
)
// ValidateEdgeCoreConfiguration validates `c` and returns an errorList if it is invalid
@@ -57,28 +54,6 @@ func ValidateDataBase(db v1alpha2.DataBase) field.ErrorList {
return allErrs
}
-// ValidateModuleEdged validates `e` and returns an errorList if it is invalid
-func ValidateModuleEdged(e v1alpha2.Edged) field.ErrorList {
- if !e.Enable {
- return field.ErrorList{}
- }
- allErrs := field.ErrorList{}
- messages := validation.ValidateNodeName(e.HostnameOverride, false)
- for _, msg := range messages {
- allErrs = append(allErrs, field.Invalid(field.NewPath("HostnameOverride"), e.HostnameOverride, msg))
- }
- if e.NodeIP == "" {
- klog.Warningf("NodeIP is empty , use default ip which can connect to cloud.")
- }
- switch e.TailoredKubeletConfig.CgroupDriver {
- case v1alpha2.CGroupDriverCGroupFS, v1alpha2.CGroupDriverSystemd:
- default:
- allErrs = append(allErrs, field.Invalid(field.NewPath("CGroupDriver"), e.TailoredKubeletConfig.CgroupDriver,
- "CGroupDriver value error"))
- }
- return allErrs
-}
-
// ValidateModuleEdgeHub validates `h` and returns an errorList if it is invalid
func ValidateModuleEdgeHub(h v1alpha2.EdgeHub) field.ErrorList {
if !h.Enable {
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_others.go b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_others.go
new file mode 100644
index 000000000..971eeeda5
--- /dev/null
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_others.go
@@ -0,0 +1,25 @@
+//go:build !windows
+
+package validation
+
+// ValidateModuleEdged validates `e` and returns an errorList if it is invalid
+func ValidateModuleEdged(e v1alpha2.Edged) field.ErrorList {
+ if !e.Enable {
+ return field.ErrorList{}
+ }
+ allErrs := field.ErrorList{}
+ messages := validation.ValidateNodeName(e.HostnameOverride, false)
+ for _, msg := range messages {
+ allErrs = append(allErrs, field.Invalid(field.NewPath("HostnameOverride"), e.HostnameOverride, msg))
+ }
+ if e.NodeIP == "" {
+ klog.Warningf("NodeIP is empty , use default ip which can connect to cloud.")
+ }
+ switch e.TailoredKubeletConfig.CgroupDriver {
+ case v1alpha2.CGroupDriverCGroupFS, v1alpha2.CGroupDriverSystemd:
+ default:
+ allErrs = append(allErrs, field.Invalid(field.NewPath("CGroupDriver"), e.TailoredKubeletConfig.CgroupDriver,
+ "CGroupDriver value error"))
+ }
+ return allErrs
+}
diff --git a/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_windows.go b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_windows.go
new file mode 100644
index 000000000..057bb9345
--- /dev/null
+++ b/pkg/apis/componentconfig/edgecore/v1alpha2/validation/validation_windows.go
@@ -0,0 +1,26 @@
+//go:build windows
+
+package validation
+
+import (
+ "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha2"
+ "k8s.io/apimachinery/pkg/util/validation/field"
+ "k8s.io/klog/v2"
+ "k8s.io/kubernetes/pkg/apis/core/validation"
+)
+
+// ValidateModuleEdged validates `e` and returns an errorList if it is invalid
+func ValidateModuleEdged(e v1alpha2.Edged) field.ErrorList {
+ if !e.Enable {
+ return field.ErrorList{}
+ }
+ allErrs := field.ErrorList{}
+ messages := validation.ValidateNodeName(e.HostnameOverride, false)
+ for _, msg := range messages {
+ allErrs = append(allErrs, field.Invalid(field.NewPath("HostnameOverride"), e.HostnameOverride, msg))
+ }
+ if e.NodeIP == "" {
+ klog.Warningf("NodeIP is empty , use default ip which can connect to cloud.")
+ }
+ return allErrs
+}