Documentation ¶
Index ¶
- Constants
- Variables
- func SetDefaultsKubeletConfiguration(obj *TailoredKubeletConfiguration)
- type ContainerRuntimeOptions
- type DBTest
- type DataBase
- type DeviceTwin
- type EdgeCoreConfig
- type EdgeHub
- type EdgeHubQUIC
- type EdgeHubWebSocket
- type EdgeStream
- type Edged
- type EventBus
- type EventBusTLS
- type MetaManager
- type MetaServer
- type Modules
- type MqttMode
- type ProtocolName
- type ServiceBus
- type TailoredKubeletConfiguration
- type TailoredKubeletFlag
Constants ¶
const ( CGroupDriverCGroupFS = "cgroupfs" CGroupDriverSystemd = "systemd" // DataBaseDataSource is edge.db DataBaseDataSource = "/var/lib/kubeedge/edgecore.db" DefaultCgroupDriver = "cgroupfs" DefaultCgroupsPerQOS = true DefaultResolverConfig = kubetypes.ResolvConfDefault DefaultCPUCFSQuota = true DefaultWindowsPriorityClass = "" )
const ( GroupName = "edgecore.config.kubeedge.io" APIVersion = "v1alpha2" Kind = "EdgeCore" )
const ( // DataBaseDriverName is sqlite3 DataBaseDriverName = "sqlite3" // DataBaseAliasName is default DataBaseAliasName = "default" )
Variables ¶
var ( // TODO: Move these constants to k8s.io/kubelet/config/v1beta1 instead? // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. DefaultNodeAllocatableEnforcement = []string{"pods"} )
Functions ¶
func SetDefaultsKubeletConfiguration ¶
func SetDefaultsKubeletConfiguration(obj *TailoredKubeletConfiguration)
SetDefaultsKubeletConfiguration sets defaults for tailored kubelet configuration
Types ¶
type ContainerRuntimeOptions ¶
type ContainerRuntimeOptions struct { // RuntimeCgroups that container runtime is expected to be isolated in. RuntimeCgroups string `json:"runtimeCgroups,omitempty"` // PodSandboxImage is the image whose network/ipc namespaces // containers in each pod will use. // default kubeedge/pause:3.6 PodSandboxImage string `json:"podSandboxImage,omitempty"` }
ContainerRuntimeOptions defines options for the container runtime.
type DBTest ¶
type DBTest struct { // Enable indicates whether DBTest is enabled, // if set to false (for debugging etc.), skip checking other DBTest configs. // default false Enable bool `json:"enable"` }
DBTest indicates the DBTest module config
type DataBase ¶
type DataBase struct { // DriverName indicates database driver name // default "sqlite3" DriverName string `json:"driverName,omitempty"` // AliasName indicates alias name // default "default" AliasName string `json:"aliasName,omitempty"` // DataSource indicates the data source path // default "/var/lib/kubeedge/edgecore.db" DataSource string `json:"dataSource,omitempty"` }
DataBase indicates the database info
type DeviceTwin ¶
type DeviceTwin struct { // Enable indicates whether DeviceTwin is enabled, // if set to false (for debugging etc.), skip checking other DeviceTwin configs. // default true Enable bool `json:"enable"` // DMISockPath sets the path to dmi.sock // default "/etc/kubeedge/dmi.sock" DMISockPath string `json:"dmiSockPath,omitempty"` }
DeviceTwin indicates the DeviceTwin module config
type EdgeCoreConfig ¶
type EdgeCoreConfig struct { metav1.TypeMeta // DataBase indicates database info // +Required DataBase *DataBase `json:"database,omitempty"` // Modules indicates EdgeCore modules config // +Required Modules *Modules `json:"modules,omitempty"` // FeatureGates is a map of feature names to bools that enable or disable alpha/experimental features. FeatureGates map[string]bool `json:"featureGates,omitempty"` }
EdgeCoreConfig indicates the EdgeCore config which read from EdgeCore config file
func NewDefaultEdgeCoreConfig ¶
func NewDefaultEdgeCoreConfig() (config *EdgeCoreConfig)
NewDefaultEdgeCoreConfig returns a full EdgeCoreConfig object
func NewMinEdgeCoreConfig ¶
func NewMinEdgeCoreConfig() (config *EdgeCoreConfig)
NewMinEdgeCoreConfig returns a common EdgeCoreConfig object
func (*EdgeCoreConfig) Parse ¶
func (c *EdgeCoreConfig) Parse(filename string) error
type EdgeHub ¶
type EdgeHub struct { // Enable indicates whether EdgeHub is enabled, // if set to false (for debugging etc.), skip checking other EdgeHub configs. // default true Enable bool `json:"enable"` // Heartbeat indicates heart beat (second) // default 15 Heartbeat int32 `json:"heartbeat,omitempty"` // MessageQPS is the QPS to allow while send message to cloudHub. // DefaultQPS: 30 MessageQPS int32 `json:"messageQPS,omitempty"` // MessageBurst is the burst to allow while send message to cloudHub. // DefaultBurst: 60 MessageBurst int32 `json:"messageBurst,omitempty"` // ProjectID indicates project id // default e632aba927ea4ac2b575ec1603d56f10 ProjectID string `json:"projectID,omitempty"` // TLSCAFile set ca file path // default "/etc/kubeedge/ca/rootCA.crt" TLSCAFile string `json:"tlsCaFile,omitempty"` // TLSCertFile indicates the file containing x509 Certificate for HTTPS // default "/etc/kubeedge/certs/server.crt" TLSCertFile string `json:"tlsCertFile,omitempty"` // TLSPrivateKeyFile indicates the file containing x509 private key matching tlsCertFile // default "/etc/kubeedge/certs/server.key" TLSPrivateKeyFile string `json:"tlsPrivateKeyFile,omitempty"` // Quic indicates quic config for EdgeHub module // Optional if websocket is configured Quic *EdgeHubQUIC `json:"quic,omitempty"` // WebSocket indicates websocket config for EdgeHub module // Optional if quic is configured WebSocket *EdgeHubWebSocket `json:"websocket,omitempty"` // Token indicates the priority of joining the cluster for the edge // Deprecated: will be removed in future release, will not be saved in configuration file Token string `json:"token"` // HTTPServer indicates the server for edge to apply for the certificate. HTTPServer string `json:"httpServer,omitempty"` // RotateCertificates indicates whether edge certificate can be rotated // default true RotateCertificates bool `json:"rotateCertificates,omitempty"` }
EdgeHub indicates the EdgeHub module config
type EdgeHubQUIC ¶
type EdgeHubQUIC struct { // Enable indicates whether enable this protocol // default false Enable bool `json:"enable"` // HandshakeTimeout indicates handshake timeout (second) // default 30 HandshakeTimeout int32 `json:"handshakeTimeout,omitempty"` // ReadDeadline indicates read deadline (second) // default 15 ReadDeadline int32 `json:"readDeadline,omitempty"` // Server indicates quic server address (ip:port) // +Required Server string `json:"server,omitempty"` // WriteDeadline indicates write deadline (second) // default 15 WriteDeadline int32 `json:"writeDeadline,omitempty"` }
EdgeHubQUIC indicates the quic client config
type EdgeHubWebSocket ¶
type EdgeHubWebSocket struct { // Enable indicates whether enable this protocol // default true Enable bool `json:"enable"` // HandshakeTimeout indicates handshake timeout (second) // default 30 HandshakeTimeout int32 `json:"handshakeTimeout,omitempty"` // ReadDeadline indicates read deadline (second) // default 15 ReadDeadline int32 `json:"readDeadline,omitempty"` // Server indicates websocket server address (ip:port) // +Required Server string `json:"server,omitempty"` // WriteDeadline indicates write deadline (second) // default 15 WriteDeadline int32 `json:"writeDeadline,omitempty"` }
EdgeHubWebSocket indicates the websocket client config
type EdgeStream ¶
type EdgeStream struct { // Enable indicates whether edgestream is enabled, if set to false (for debugging etc.), skip checking other configs. // default true Enable bool `json:"enable"` // TLSTunnelCAFile indicates ca file path // default /etc/kubeedge/ca/rootCA.crt TLSTunnelCAFile string `json:"tlsTunnelCAFile,omitempty"` // TLSTunnelCertFile indicates the file containing x509 Certificate for HTTPS // default /etc/kubeedge/certs/server.crt TLSTunnelCertFile string `json:"tlsTunnelCertFile,omitempty"` // TLSTunnelPrivateKeyFile indicates the file containing x509 private key matching tlsCertFile // default /etc/kubeedge/certs/server.key TLSTunnelPrivateKeyFile string `json:"tlsTunnelPrivateKeyFile,omitempty"` // HandshakeTimeout indicates handshake timeout (second) // default 30 HandshakeTimeout int32 `json:"handshakeTimeout,omitempty"` // ReadDeadline indicates read deadline (second) // default 15 ReadDeadline int32 `json:"readDeadline,omitempty"` // TunnelServer indicates websocket server address (ip:port) // +Required TunnelServer string `json:"server,omitempty"` // WriteDeadline indicates write deadline (second) // default 15 WriteDeadline int32 `json:"writeDeadline,omitempty"` }
EdgeStream indicates the stream controller
type Edged ¶
type Edged struct { // Enable indicates whether EdgeHub is enabled, // if set to false (for debugging etc.), skip checking other EdgeHub configs. // default true Enable bool `json:"enable"` // ReportEvent indicates whether to report events to cloud, // if set to true, events will be reported to cloud. // default false ReportEvent bool `json:"reportEvent"` // TailoredKubeletConfig contains the configuration for the Kubelet, tailored by KubeEdge TailoredKubeletConfig *TailoredKubeletConfiguration `json:"tailoredKubeletConfig"` // TailoredKubeletFlag TailoredKubeletFlag // CustomInterfaceName indicates the name of the network interface used for obtaining the IP address. // Setting this will override the setting 'NodeIP' if provided. // If this is not defined the IP address is obtained by the hostname. // default "" CustomInterfaceName string `json:"customInterfaceName,omitempty"` // RegisterNodeNamespace indicates register node namespace // default "default" RegisterNodeNamespace string `json:"registerNodeNamespace,omitempty"` }
Edged indicates the config fo edged module edged is lighted-kubelet
type EventBus ¶
type EventBus struct { // Enable indicates whether EventBus is enabled, if set to false (for debugging etc.), // skip checking other EventBus configs. // default true Enable bool `json:"enable"` // MqttQOS indicates mqtt qos // 0: QOSAtMostOnce, 1: QOSAtLeastOnce, 2: QOSExactlyOnce // default 0 // Note: Can not use "omitempty" option, It will affect the output of the default configuration file MqttQOS uint8 `json:"mqttQOS"` // MqttRetain indicates whether server will store the message and can be delivered to future subscribers, // if this flag set true, sever will store the message and can be delivered to future subscribers // default false // Note: Can not use "omitempty" option, It will affect the output of the default configuration file MqttRetain bool `json:"mqttRetain"` // MqttSessionQueueSize indicates the size of how many sessions will be handled. // default 100 MqttSessionQueueSize int32 `json:"mqttSessionQueueSize,omitempty"` // MqttServerInternal indicates internal mqtt broker url // default "tcp://127.0.0.1:1884" MqttServerInternal string `json:"mqttServerInternal,omitempty"` // MqttServerExternal indicates external mqtt broker url // default "tcp://127.0.0.1:1883" MqttServerExternal string `json:"mqttServerExternal,omitempty"` // MqttSubClientID indicates mqtt subscribe ClientID // default "" MqttSubClientID string `json:"mqttSubClientID"` // MqttPubClientID indicates mqtt publish ClientID // default "" MqttPubClientID string `json:"mqttPubClientID"` // MqttUsername indicates mqtt username // default "" MqttUsername string `json:"mqttUsername"` // MqttPassword indicates mqtt password // default "" MqttPassword string `json:"mqttPassword"` // MqttMode indicates which broker type will be chosen // 0: internal mqtt broker enable only. // 1: internal and external mqtt broker enable. // 2: external mqtt broker enable only // +Required // default: 2 MqttMode MqttMode `json:"mqttMode"` // Tls indicates tls config for EventBus module TLS *EventBusTLS `json:"eventBusTLS,omitempty"` }
EventBus indicates the event bus module config
type EventBusTLS ¶
type EventBusTLS struct { // Enable indicates whether enable tls connection // default false Enable bool `json:"enable"` // TLSMqttCAFile sets ca file path // default "/etc/kubeedge/ca/rootCA.crt" TLSMqttCAFile string `json:"tlsMqttCAFile,omitempty"` // TLSMqttCertFile indicates the file containing x509 Certificate for HTTPS // default "/etc/kubeedge/certs/server.crt" TLSMqttCertFile string `json:"tlsMqttCertFile,omitempty"` // TLSMqttPrivateKeyFile indicates the file containing x509 private key matching tlsMqttCertFile // default "/etc/kubeedge/certs/server.key" TLSMqttPrivateKeyFile string `json:"tlsMqttPrivateKeyFile,omitempty"` }
EventBusTLS indicates the EventBus tls config with MQTT broker
type MetaManager ¶
type MetaManager struct { // Enable indicates whether MetaManager is enabled, // if set to false (for debugging etc.), skip checking other MetaManager configs. // default true Enable bool `json:"enable"` // ContextSendGroup indicates send group ContextSendGroup metaconfig.GroupName `json:"contextSendGroup,omitempty"` // ContextSendModule indicates send module ContextSendModule metaconfig.ModuleName `json:"contextSendModule,omitempty"` // RemoteQueryTimeout indicates remote query timeout (second) // default 60 RemoteQueryTimeout int32 `json:"remoteQueryTimeout,omitempty"` // The config of MetaServer MetaServer *MetaServer `json:"metaServer,omitempty"` }
MetaManager indicates the MetaManager module config
type MetaServer ¶
type MetaServer struct { Enable bool `json:"enable"` Server string `json:"server"` TLSCaFile string `json:"tlsCaFile"` TLSCertFile string `json:"tlsCertFile"` TLSPrivateKeyFile string `json:"tlsPrivateKeyFile"` ServiceAccountIssuers []string `json:"serviceAccountIssuers"` APIAudiences []string `json:"apiAudiences"` ServiceAccountKeyFiles []string `json:"serviceAccountKeyFiles"` // DummyServer defines the IP address of dummy interface and port // that MetaServer listen on for edge pods to connect, format: ip:port DummyServer string `json:"dummyServer"` }
type Modules ¶
type Modules struct { // Edged indicates edged module config // +Required Edged *Edged `json:"edged,omitempty"` // EdgeHub indicates edgeHub module config // +Required EdgeHub *EdgeHub `json:"edgeHub,omitempty"` // EventBus indicates eventBus config for edgeCore // +Required EventBus *EventBus `json:"eventBus,omitempty"` // MetaManager indicates meta module config // +Required MetaManager *MetaManager `json:"metaManager,omitempty"` // ServiceBus indicates serviceBus module config ServiceBus *ServiceBus `json:"serviceBus,omitempty"` // DeviceTwin indicates deviceTwin module config DeviceTwin *DeviceTwin `json:"deviceTwin,omitempty"` // DBTest indicates dbTest module config DBTest *DBTest `json:"dbTest,omitempty"` // EdgeStream indicates edgestream module config // +Required EdgeStream *EdgeStream `json:"edgeStream,omitempty"` }
Modules indicates the modules which edgeCore will be used
type ProtocolName ¶
type ProtocolName string
type ServiceBus ¶
type ServiceBus struct { // Enable indicates whether ServiceBus is enabled, // if set to false (for debugging etc.), skip checking other ServiceBus configs. // default false Enable bool `json:"enable"` // Address indicates address for http server Server string `json:"server"` // Port indicates port for http server Port int `json:"port"` // Timeout indicates timeout for servicebus receive mseeage Timeout int `json:"timeout"` }
ServiceBus indicates the ServiceBus module config
type TailoredKubeletConfiguration ¶
type TailoredKubeletConfiguration struct { // staticPodPath is the path to the directory containing local (static) pods to // run, or the path to a single static pod file. // Default: "/etc/kubeedge/manifests" // +optional StaticPodPath string `json:"staticPodPath,omitempty"` // syncFrequency is the max period between synchronizing running // containers and config. // Default: "1m" // +optional SyncFrequency metav1.Duration `json:"syncFrequency,omitempty"` // fileCheckFrequency is the duration between checking config files for // new data. // Default: "20s" // +optional FileCheckFrequency metav1.Duration `json:"fileCheckFrequency,omitempty"` // address is the IP address for the Edged to serve on (set to 0.0.0.0 // for all interfaces). // Default: "127.0.0.1" // +optional Address string `json:"address,omitempty"` // readOnlyPort is the read-only port for the Edged to serve on with // no authentication/authorization. // The port number must be between 1 and 65535, inclusive. // Setting this field to 0 disables the read-only service. // Default: 10350 // +optional ReadOnlyPort int32 `json:"readOnlyPort,omitempty"` // registryPullQPS is the limit of registry pulls per second. // The value must not be a negative number. // Setting it to 0 means no limit. // Default: 5 // +optional RegistryPullQPS *int32 `json:"registryPullQPS,omitempty"` // registryBurst is the maximum size of bursty pulls, temporarily allows // pulls to burst to this number, while still not exceeding registryPullQPS. // The value must not be a negative number. // Only used if registryPullQPS is greater than 0. // Default: 10 // +optional RegistryBurst int32 `json:"registryBurst,omitempty"` // eventRecordQPS is the maximum event creations per second. If 0, there // is no limit enforced. The value cannot be a negative number. // Default: 50 // +optional EventRecordQPS *int32 `json:"eventRecordQPS,omitempty"` // eventBurst is the maximum size of a burst of event creations, temporarily // allows event creations to burst to this number, while still not exceeding // eventRecordQPS. This field cannot be a negative number and it is only used // when eventRecordQPS > 0. // Default: 100 // +optional EventBurst int32 `json:"eventBurst,omitempty"` // enableDebuggingHandlers enables server endpoints for log access // and local running of containers and commands, including the exec, // attach, logs, and portforward features. // Default: true // +optional EnableDebuggingHandlers *bool `json:"enableDebuggingHandlers,omitempty"` // enableContentionProfiling enables lock contention profiling, if enableDebuggingHandlers is true. // Default: false // +optional EnableContentionProfiling bool `json:"enableContentionProfiling,omitempty"` // oomScoreAdj is The oom-score-adj value for edged process. Values // must be within the range [-1000, 1000]. // Default: -999 // +optional OOMScoreAdj *int32 `json:"oomScoreAdj,omitempty"` // clusterDomain is the DNS domain for this cluster. If set, edged will // configure all containers to search this domain in addition to the // host's search domains. // Default: "cluster.local" // +optional ClusterDomain string `json:"clusterDomain,omitempty"` // clusterDNS is a list of IP addresses for the cluster DNS server. If set, // edged will configure all containers to use this for DNS resolution // instead of the host's DNS servers. // Default: nil // +optional ClusterDNS []string `json:"clusterDNS,omitempty"` // streamingConnectionIdleTimeout is the maximum time a streaming connection // can be idle before the connection is automatically closed. // Default: "4h" // +optional StreamingConnectionIdleTimeout metav1.Duration `json:"streamingConnectionIdleTimeout,omitempty"` // nodeStatusUpdateFrequency is the frequency that edged computes node // status. If node lease feature is not enabled, it is also the frequency that // edged posts node status to master. // Note: When node lease feature is not enabled, be cautious when changing the // constant, it must work with nodeMonitorGracePeriod in nodecontroller. // Default: "10s" // +optional NodeStatusUpdateFrequency metav1.Duration `json:"nodeStatusUpdateFrequency,omitempty"` // nodeStatusReportFrequency is the frequency that edged posts node // status to master if node status does not change. edged will ignore this // frequency and post node status immediately if any change is detected. It is // only used when node lease feature is enabled. nodeStatusReportFrequency's // default value is 5m. But if nodeStatusUpdateFrequency is set explicitly, // nodeStatusReportFrequency's default value will be set to // nodeStatusUpdateFrequency for backward compatibility. // Default: "5m" // +optional NodeStatusReportFrequency metav1.Duration `json:"nodeStatusReportFrequency,omitempty"` // nodeLeaseDurationSeconds is the duration the edged will set on its corresponding Lease, // when the NodeLease feature is enabled. This feature provides an indicator of node // health by having the edged create and periodically renew a lease, named after the node, // in the kube-node-lease namespace. If the lease expires, the node can be considered unhealthy. // The lease is currently renewed every 10s, per KEP-0009. In the future, the lease renewal interval // may be set based on the lease duration. // The field value must be greater than 0. // Default: 40 // +optional NodeLeaseDurationSeconds int32 `json:"nodeLeaseDurationSeconds,omitempty"` // imageMinimumGCAge is the minimum age for an unused image before it is // garbage collected. // Default: "2m" // +optional ImageMinimumGCAge metav1.Duration `json:"imageMinimumGCAge,omitempty"` // imageMaximumGCAge is the maximum age an image can be unused before it is garbage collected. // The default of this field is "0s", which disables this field--meaning images won't be garbage // collected based on being unused for too long. // Default: "0s" (disabled) // +optional ImageMaximumGCAge metav1.Duration `json:"imageMaximumGCAge,omitempty"` // imageGCHighThresholdPercent is the percent of disk usage after which // image garbage collection is always run. The percent is calculated by // dividing this field value by 100, so this field must be between 0 and // 100, inclusive. When specified, the value must be greater than // imageGCLowThresholdPercent. // Default: 85 // +optional ImageGCHighThresholdPercent *int32 `json:"imageGCHighThresholdPercent,omitempty"` // imageGCLowThresholdPercent is the percent of disk usage before which // image garbage collection is never run. Lowest disk usage to garbage // collect to. The percent is calculated by dividing this field value by 100, // so the field value must be between 0 and 100, inclusive. When specified, the // value must be less than imageGCHighThresholdPercent. // Default: 80 // +optional ImageGCLowThresholdPercent *int32 `json:"imageGCLowThresholdPercent,omitempty"` // volumeStatsAggPeriod is the frequency for calculating and caching volume // disk usage for all pods. // Default: "1m" // +optional VolumeStatsAggPeriod metav1.Duration `json:"volumeStatsAggPeriod,omitempty"` // kubeletCgroups is the absolute name of cgroups to isolate the kubelet in // Default: "" // +optional KubeletCgroups string `json:"kubeletCgroups,omitempty"` // systemCgroups is absolute name of cgroups in which to place // all non-kernel processes that are not already in a container. Empty // for no container. Rolling back the flag requires a reboot. // The cgroupRoot must be specified if this field is not empty. // Default: "" // +optional SystemCgroups string `json:"systemCgroups,omitempty"` // cgroupRoot is the root cgroup to use for pods. This is handled by the // container runtime on a best effort basis. // +optional CgroupRoot string `json:"cgroupRoot,omitempty"` // cgroupsPerQOS enable QoS based CGroup hierarchy: top level CGroups for QoS classes // and all Burstable and BestEffort Pods are brought up under their specific top level // QoS CGroup. // Default: true // +optional CgroupsPerQOS *bool `json:"cgroupsPerQOS,omitempty"` // cgroupDriver is the driver edged uses to manipulate CGroups on the host (cgroupfs // or systemd). // Default: "cgroupfs" // +optional CgroupDriver string `json:"cgroupDriver,omitempty"` // cpuManagerPolicy is the name of the policy to use. // Requires the CPUManager feature gate to be enabled. // Default: "None" // +optional CPUManagerPolicy string `json:"cpuManagerPolicy,omitempty"` // cpuManagerPolicyOptions is a set of key=value which allows to set extra options // to fine tune the behaviour of the cpu manager policies. // Requires both the "CPUManager" and "CPUManagerPolicyOptions" feature gates to be enabled. // Default: nil // +optional CPUManagerPolicyOptions map[string]string `json:"cpuManagerPolicyOptions,omitempty"` // cpuManagerReconcilePeriod is the reconciliation period for the CPU Manager. // Requires the CPUManager feature gate to be enabled. // Default: "10s" // +optional CPUManagerReconcilePeriod metav1.Duration `json:"cpuManagerReconcilePeriod,omitempty"` // memoryManagerPolicy is the name of the policy to use by memory manager. // Requires the MemoryManager feature gate to be enabled. // Default: "none" // +optional MemoryManagerPolicy string `json:"memoryManagerPolicy,omitempty"` // topologyManagerPolicy is the name of the topology manager policy to use. // Valid values include: // // - `restricted`: edged only allows pods with optimal NUMA node alignment for // requested resources; // - `best-effort`: edged will favor pods with NUMA alignment of CPU and device // resources; // - `none`: edged has no knowledge of NUMA alignment of a pod's CPU and device resources. // - `single-numa-node`: edged only allows pods with a single NUMA alignment // of CPU and device resources. // // Policies other than "none" require the TopologyManager feature gate to be enabled. // Default: "none" // +optional TopologyManagerPolicy string `json:"topologyManagerPolicy,omitempty"` // topologyManagerScope represents the scope of topology hint generation // that topology manager requests and hint providers generate. Valid values include: // // - `container`: topology policy is applied on a per-container basis. // - `pod`: topology policy is applied on a per-pod basis. // // "pod" scope requires the TopologyManager feature gate to be enabled. // Default: "container" // +optional TopologyManagerScope string `json:"topologyManagerScope,omitempty"` // TopologyManagerPolicyOptions is a set of key=value which allows to set extra options // to fine tune the behaviour of the topology manager policies. // Requires both the "TopologyManager" and "TopologyManagerPolicyOptions" feature gates to be enabled. // Default: nil // +optional TopologyManagerPolicyOptions map[string]string `json:"topologyManagerPolicyOptions,omitempty"` // qosReserved is a set of resource name to percentage pairs that specify // the minimum percentage of a resource reserved for exclusive use by the // guaranteed QoS tier. // Currently supported resources: "memory" // Requires the QOSReserved feature gate to be enabled. // Default: nil // +optional QOSReserved map[string]string `json:"qosReserved,omitempty"` // runtimeRequestTimeout is the timeout for all runtime requests except long running // requests - pull, logs, exec and attach. // Default: "2m" // +optional RuntimeRequestTimeout metav1.Duration `json:"runtimeRequestTimeout,omitempty"` // hairpinMode specifies how the edged should configure the container // bridge for hairpin packets. // Setting this flag allows endpoints in a Service to loadbalance back to // themselves if they should try to access their own Service. Values: // // - "promiscuous-bridge": make the container bridge promiscuous. // - "hairpin-veth": set the hairpin flag on container veth interfaces. // - "none": do nothing. // // Generally, one must set `--hairpin-mode=hairpin-veth to` achieve hairpin NAT, // because promiscuous-bridge assumes the existence of a container bridge named cbr0. // Default: "promiscuous-bridge" // +optional HairpinMode string `json:"hairpinMode,omitempty"` // maxPods is the maximum number of Pods that can run on this Kubelet. // The value must be a non-negative integer. // Default: 110 // +optional MaxPods int32 `json:"maxPods,omitempty"` // podCIDR is the CIDR to use for pod IP addresses, only used in standalone mode. // In cluster mode, this is obtained from the control plane. // Default: "" // +optional PodCIDR string `json:"podCIDR,omitempty"` // podPidsLimit is the maximum number of PIDs in any pod. // Default: -1 // +optional PodPidsLimit *int64 `json:"podPidsLimit,omitempty"` // resolvConf is the resolver configuration file used as the basis // for the container DNS resolution configuration. // If set to the empty string, will override the default and effectively disable DNS lookups. // Default: "/etc/resolv.conf" // +optional ResolverConfig *string `json:"resolvConf,omitempty"` // cpuCFSQuota enables CPU CFS quota enforcement for containers that // specify CPU limits. // Default: true // +optional CPUCFSQuota *bool `json:"cpuCFSQuota,omitempty"` // cpuCFSQuotaPeriod is the CPU CFS quota period value, `cpu.cfs_period_us`. // The value must be between 1 us and 1 second, inclusive. // Requires the CustomCPUCFSQuotaPeriod feature gate to be enabled. // Default: "100ms" // +optional CPUCFSQuotaPeriod *metav1.Duration `json:"cpuCFSQuotaPeriod,omitempty"` // nodeStatusMaxImages caps the number of images reported in Node.status.images. // The value must be greater than -2. // Note: If -1 is specified, no cap will be applied. If 0 is specified, no image is returned. // Default: 0 // +optional NodeStatusMaxImages *int32 `json:"nodeStatusMaxImages,omitempty"` // maxOpenFiles is Number of files that can be opened by edged process. // The value must be a non-negative number. // Default: 1000000 // +optional MaxOpenFiles int64 `json:"maxOpenFiles,omitempty"` // contentType is contentType of requests sent to apiserver. // Default: "application/json" // +optional ContentType string `json:"contentType,omitempty"` // serializeImagePulls when enabled, tells the edged to pull images one // at a time. We recommend *not* changing the default value on nodes that // run docker daemon with version < 1.9 or an Aufs storage backend. // Issue #10959 has more details. // Default: true // +optional SerializeImagePulls *bool `json:"serializeImagePulls,omitempty"` // MaxParallelImagePulls sets the maximum number of image pulls in parallel. // This field cannot be set if SerializeImagePulls is true. // Setting it to nil means no limit. // Default: nil // +optional MaxParallelImagePulls *int32 `json:"maxParallelImagePulls,omitempty"` // evictionHard is a map of signal names to quantities that defines hard eviction // thresholds. For example: `{"memory.available": "300Mi"}`. // To explicitly disable, pass a 0% or 100% threshold on an arbitrary resource. // Default: // memory.available: "100Mi" // nodefs.available: "10%" // nodefs.inodesFree: "5%" // imagefs.available: "15%" // +optional EvictionHard map[string]string `json:"evictionHard,omitempty"` // evictionSoft is a map of signal names to quantities that defines soft eviction thresholds. // For example: `{"memory.available": "300Mi"}`. // Default: nil // +optional EvictionSoft map[string]string `json:"evictionSoft,omitempty"` // evictionSoftGracePeriod is a map of signal names to quantities that defines grace // periods for each soft eviction signal. For example: `{"memory.available": "30s"}`. // Default: nil // +optional EvictionSoftGracePeriod map[string]string `json:"evictionSoftGracePeriod,omitempty"` // evictionPressureTransitionPeriod is the duration for which the kubelet has to wait // before transitioning out of an eviction pressure condition. // Default: "5m" // +optional EvictionPressureTransitionPeriod metav1.Duration `json:"evictionPressureTransitionPeriod,omitempty"` // evictionMaxPodGracePeriod is the maximum allowed grace period (in seconds) to use // when terminating pods in response to a soft eviction threshold being met. This value // effectively caps the Pod's terminationGracePeriodSeconds value during soft evictions. // Note: Due to issue #64530, the behavior has a bug where this value currently just // overrides the grace period during soft eviction, which can increase the grace // period from what is set on the Pod. This bug will be fixed in a future release. // Default: 0 // +optional EvictionMaxPodGracePeriod int32 `json:"evictionMaxPodGracePeriod,omitempty"` // evictionMinimumReclaim is a map of signal names to quantities that defines minimum reclaims, // which describe the minimum amount of a given resource the kubelet will reclaim when // performing a pod eviction while that resource is under pressure. // For example: `{"imagefs.available": "2Gi"}`. // Default: nil // +optional EvictionMinimumReclaim map[string]string `json:"evictionMinimumReclaim,omitempty"` // podsPerCore is the maximum number of pods per core. Cannot exceed maxPods. // The value must be a non-negative integer. // If 0, there is no limit on the number of Pods. // Default: 0 // +optional PodsPerCore int32 `json:"podsPerCore,omitempty"` // enableControllerAttachDetach enables the Attach/Detach controller to // manage attachment/detachment of volumes scheduled to this node, and // disables kubelet from executing any attach/detach operations. // Default: true // +optional EnableControllerAttachDetach *bool `json:"enableControllerAttachDetach,omitempty"` // protectKernelDefaults, if true, causes the edged to error if kernel // flags are not as it expects. Otherwise the edged will attempt to modify // kernel flags to match its expectation. // Default: false // +optional ProtectKernelDefaults bool `json:"protectKernelDefaults,omitempty"` // makeIPTablesUtilChains, if true, causes the Kubelet to create the // KUBE-IPTABLES-HINT chain in iptables as a hint to other components about the // configuration of iptables on the system. // Default: true // +optional MakeIPTablesUtilChains *bool `json:"makeIPTablesUtilChains,omitempty"` // iptablesMasqueradeBit formerly controlled the creation of the KUBE-MARK-MASQ // chain. // Deprecated: no longer has any effect. // Default: 14 // +optional IPTablesMasqueradeBit *int32 `json:"iptablesMasqueradeBit,omitempty"` // iptablesDropBit formerly controlled the creation of the KUBE-MARK-DROP chain. // Deprecated: no longer has any effect. // Default: 15 // +optional IPTablesDropBit *int32 `json:"iptablesDropBit,omitempty"` // featureGates is a map of feature names to bools that enable or disable experimental // features. This field modifies piecemeal the built-in default values from // "k8s.io/kubernetes/pkg/features/kube_features.go". // Default: nil // +optional FeatureGates map[string]bool `json:"featureGates,omitempty"` // failSwapOn tells the edged to fail to start if swap is enabled on the node. // Default: false // +optional FailSwapOn *bool `json:"failSwapOn,omitempty"` // memorySwap configures swap memory available to container workloads. // +featureGate=NodeSwap // +optional MemorySwap tailoredkubeletconfigv1beta1.MemorySwapConfiguration `json:"memorySwap,omitempty"` // containerLogMaxSize is a quantity defining the maximum size of the container log // file before it is rotated. For example: "5Mi" or "256Ki". // Default: "10Mi" // +optional ContainerLogMaxSize string `json:"containerLogMaxSize,omitempty"` // containerLogMaxFiles specifies the maximum number of container log files that can // be present for a container. // Default: 5 // +optional ContainerLogMaxFiles *int32 `json:"containerLogMaxFiles,omitempty"` // configMapAndSecretChangeDetectionStrategy is a mode in which ConfigMap and Secret // managers are running. Valid values include: // // - `Get`: edged fetches necessary objects directly from the API server; // - `Cache`: edged uses TTL cache for object fetched from the API server; // - `Watch`: edged uses watches to observe changes to objects that are in its interest. // // Default: "Get" // +optional ConfigMapAndSecretChangeDetectionStrategy tailoredkubeletconfigv1beta1.ResourceChangeDetectionStrategy `json:"configMapAndSecretChangeDetectionStrategy,omitempty"` // systemReserved is a set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) // pairs that describe resources reserved for non-kubernetes components. // Currently only cpu and memory are supported. // See http://kubernetes.io/docs/user-guide/compute-resources for more detail. // Default: nil // +optional SystemReserved map[string]string `json:"systemReserved,omitempty"` // kubeReserved is a set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs // that describe resources reserved for kubernetes system components. // Currently cpu, memory and local storage for root file system are supported. // See https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ // for more details. // Default: nil // +optional KubeReserved map[string]string `json:"kubeReserved,omitempty"` // The reservedSystemCPUs option specifies the CPU list reserved for the host // level system threads and kubernetes related threads. This provide a "static" // CPU list rather than the "dynamic" list by systemReserved and kubeReserved. // This option does not support systemReservedCgroup or kubeReservedCgroup. ReservedSystemCPUs string `json:"reservedSystemCPUs,omitempty"` // showHiddenMetricsForVersion is the previous version for which you want to show // hidden metrics. // Only the previous minor version is meaningful, other values will not be allowed. // The format is `<major>.<minor>`, e.g.: `1.16`. // The purpose of this format is make sure you have the opportunity to notice // if the next release hides additional metrics, rather than being surprised // when they are permanently removed in the release after that. // Default: "" // +optional ShowHiddenMetricsForVersion string `json:"showHiddenMetricsForVersion,omitempty"` // systemReservedCgroup helps the edged identify absolute name of top level CGroup used // to enforce `systemReserved` compute resource reservation for OS system daemons. // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) // doc for more information. // Default: "" // +optional SystemReservedCgroup string `json:"systemReservedCgroup,omitempty"` // kubeReservedCgroup helps the edged identify absolute name of top level CGroup used // to enforce `KubeReserved` compute resource reservation for Kubernetes node system daemons. // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) // doc for more information. // Default: "" // +optional KubeReservedCgroup string `json:"kubeReservedCgroup,omitempty"` // This flag specifies the various Node Allocatable enforcements that edged needs to perform. // This flag accepts a list of options. Acceptable options are `none`, `pods`, // `system-reserved` and `kube-reserved`. // If `none` is specified, no other options may be specified. // When `system-reserved` is in the list, systemReservedCgroup must be specified. // When `kube-reserved` is in the list, kubeReservedCgroup must be specified. // This field is supported only when `cgroupsPerQOS` is set to true. // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) // for more information. // Default: ["pods"] // +optional EnforceNodeAllocatable []string `json:"enforceNodeAllocatable,omitempty"` // A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in `*`). // Unsafe sysctl groups are `kernel.shm*`, `kernel.msg*`, `kernel.sem`, `fs.mqueue.*`, // and `net.*`. For example: "`kernel.msg*,net.ipv4.route.min_pmtu`" // Default: [] // +optional AllowedUnsafeSysctls []string `json:"allowedUnsafeSysctls,omitempty"` // volumePluginDir is the full path of the directory in which to search // for additional third party volume plugins. // Default: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/" // +optional VolumePluginDir string `json:"volumePluginDir,omitempty"` // kernelMemcgNotification, if set, instructs the edged to integrate with the // kernel memcg notification for determining if memory eviction thresholds are // exceeded rather than polling. // Default: false // +optional KernelMemcgNotification bool `json:"kernelMemcgNotification,omitempty"` // logging specifies the options of logging. // Refer to [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) // for more information. // Default: // Format: text // + optional Logging logsapi.LoggingConfiguration `json:"logging,omitempty"` // enableSystemLogHandler enables system logs via web interface host:port/logs/ // Default: true // +optional EnableSystemLogHandler *bool `json:"enableSystemLogHandler,omitempty"` // enableSystemLogQuery enables the node log query feature on the /logs endpoint. // EnableSystemLogHandler has to be enabled in addition for this feature to work. // Default: false // +featureGate=NodeLogQuery // +optional EnableSystemLogQuery *bool `json:"enableSystemLogQuery,omitempty"` // shutdownGracePeriod specifies the total duration that the node should delay the // shutdown and total grace period for pod termination during a node shutdown. // Default: "0s" // +featureGate=GracefulNodeShutdown // +optional ShutdownGracePeriod metav1.Duration `json:"shutdownGracePeriod,omitempty"` // shutdownGracePeriodCriticalPods specifies the duration used to terminate critical // pods during a node shutdown. This should be less than shutdownGracePeriod. // For example, if shutdownGracePeriod=30s, and shutdownGracePeriodCriticalPods=10s, // during a node shutdown the first 20 seconds would be reserved for gracefully // terminating normal pods, and the last 10 seconds would be reserved for terminating // critical pods. // Default: "0s" // +featureGate=GracefulNodeShutdown // +optional ShutdownGracePeriodCriticalPods metav1.Duration `json:"shutdownGracePeriodCriticalPods,omitempty"` // shutdownGracePeriodByPodPriority specifies the shutdown grace period for Pods based // on their associated priority class value. // When a shutdown request is received, the Kubelet will initiate shutdown on all pods // running on the node with a grace period that depends on the priority of the pod, // and then wait for all pods to exit. // Each entry in the array represents the graceful shutdown time a pod with a priority // class value that lies in the range of that value and the next higher entry in the // list when the node is shutting down. // For example, to allow critical pods 10s to shutdown, priority>=10000 pods 20s to // shutdown, and all remaining pods 30s to shutdown. // // shutdownGracePeriodByPodPriority: // - priority: 2000000000 // shutdownGracePeriodSeconds: 10 // - priority: 10000 // shutdownGracePeriodSeconds: 20 // - priority: 0 // shutdownGracePeriodSeconds: 30 // // The time the Kubelet will wait before exiting will at most be the maximum of all // shutdownGracePeriodSeconds for each priority class range represented on the node. // When all pods have exited or reached their grace periods, the Kubelet will release // the shutdown inhibit lock. // Requires the GracefulNodeShutdown feature gate to be enabled. // This configuration must be empty if either ShutdownGracePeriod or ShutdownGracePeriodCriticalPods is set. // Default: nil // +featureGate=GracefulNodeShutdownBasedOnPodPriority // +optional ShutdownGracePeriodByPodPriority []tailoredkubeletconfigv1beta1.ShutdownGracePeriodByPodPriority `json:"shutdownGracePeriodByPodPriority,omitempty"` // reservedMemory specifies a comma-separated list of memory reservations for NUMA nodes. // The parameter makes sense only in the context of the memory manager feature. // The memory manager will not allocate reserved memory for container workloads. // For example, if you have a NUMA0 with 10Gi of memory and the reservedMemory was // specified to reserve 1Gi of memory at NUMA0, the memory manager will assume that // only 9Gi is available for allocation. // You can specify a different amount of NUMA node and memory types. // You can omit this parameter at all, but you should be aware that the amount of // reserved memory from all NUMA nodes should be equal to the amount of memory specified // by the [node allocatable](https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/#node-allocatable). // If at least one node allocatable parameter has a non-zero value, you will need // to specify at least one NUMA node. // Also, avoid specifying: // // 1. Duplicates, the same NUMA node, and memory type, but with a different value. // 2. zero limits for any memory type. // 3. NUMAs nodes IDs that do not exist under the machine. // 4. memory types except for memory and hugepages-<size> // // Default: nil // +optional ReservedMemory []tailoredkubeletconfigv1beta1.MemoryReservation `json:"reservedMemory,omitempty"` // enableProfilingHandler enables profiling via web interface host:port/debug/pprof/ // Default: true // +optional EnableProfilingHandler *bool `json:"enableProfilingHandler,omitempty"` // enableDebugFlagsHandler enables flags endpoint via web interface host:port/debug/flags/v // Default: true // +optional EnableDebugFlagsHandler *bool `json:"enableDebugFlagsHandler,omitempty"` // SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads. // This requires the corresponding SeccompDefault feature gate to be enabled as well. // Default: false // +optional SeccompDefault *bool `json:"seccompDefault,omitempty"` // MemoryThrottlingFactor specifies the factor multiplied by the memory limit or node allocatable memory // when setting the cgroupv2 memory.high value to enforce MemoryQoS. // Decreasing this factor will set lower high limit for container cgroups and put heavier reclaim pressure // while increasing will put less reclaim pressure. // See http://kep.k8s.io/2570 for more details. // Default: 0.8 // +featureGate=MemoryQoS // +optional MemoryThrottlingFactor *float64 `json:"memoryThrottlingFactor,omitempty"` // registerWithTaints are an array of taints to add to a node object when // the kubelet registers itself. This only takes effect when registerNode // is true and upon the initial registration of the node. // Default: nil // +optional RegisterWithTaints []v1.Taint `json:"registerWithTaints,omitempty"` // registerNode enables automatic registration with the apiserver. // Default: true // +optional RegisterNode *bool `json:"registerNode,omitempty"` // LocalStorageCapacityIsolation enables local ephemeral storage isolation feature. The default setting is true. // This feature allows users to set request/limit for container's ephemeral storage and manage it in a similar way // as cpu and memory. It also allows setting sizeLimit for emptyDir volume, which will trigger pod eviction if disk // usage from the volume exceeds the limit. // This feature depends on the capability of detecting correct root file system disk usage. For certain systems, // such as kind rootless, if this capability cannot be supported, the feature LocalStorageCapacityIsolation should be // disabled. Once disabled, user should not set request/limit for container's ephemeral storage, or sizeLimit for emptyDir. // Default: true // +optional LocalStorageCapacityIsolation *bool `json:"localStorageCapacityIsolation,omitempty"` // ContainerRuntimeEndpoint is the endpoint of container runtime. // Unix Domain Sockets are supported on Linux, while npipe and tcp endpoints are supported on Windows. // Examples:'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime' ContainerRuntimeEndpoint string `json:"containerRuntimeEndpoint"` // ImageServiceEndpoint is the endpoint of container image service. // Unix Domain Socket are supported on Linux, while npipe and tcp endpoints are supported on Windows. // Examples:'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime'. // If not specified, the value in containerRuntimeEndpoint is used. // +optional ImageServiceEndpoint string `json:"imageServiceEndpoint,omitempty"` }
TailoredKubeletConfiguration indicates the tailored kubelet configuration. It is derived from Kubernetes code `KubeletConfiguration` in package `k8s.io/kubelet/config/v1beta1` and made some variant.
type TailoredKubeletFlag ¶
type TailoredKubeletFlag struct { // HostnameOverride is the hostname used to identify the kubelet instead // of the actual hostname. // default os.Hostname() HostnameOverride string `json:"hostnameOverride,omitempty"` // NodeIP is IP address of the node. // If set, edged will use this IP address for the node. NodeIP string `json:"nodeIP,omitempty"` // Container-runtime-specific options. ContainerRuntimeOptions // rootDirectory is the directory path to place kubelet files (volume // mounts,etc). // default "/var/lib/edged" // The default will change to "/var/lib/kubelet" in KubeEdge v1.20. RootDirectory string `json:"rootDirectory,omitempty"` // WindowsService should be set to true if kubelet is running as a service on Windows. // Its corresponding flag only gets registered in Windows builds. WindowsService bool `json:"windowsService,omitempty"` // WindowsPriorityClass sets the priority class associated with the Kubelet process // Its corresponding flag only gets registered in Windows builds // The default priority class associated with any process in Windows is NORMAL_PRIORITY_CLASS. Keeping it as is // to maintain backwards compatibility. // Source: https://docs.microsoft.com/en-us/windows/win32/procthread/scheduling-priorities WindowsPriorityClass string `json:"windowsPriorityClass,omitempty"` // experimentalMounterPath is the path of mounter binary. Leave empty to use the default mount path ExperimentalMounterPath string `json:"experimentalMounterPath,omitempty"` // This flag, if set, will avoid including `EvictionHard` limits while computing Node Allocatable. // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. ExperimentalNodeAllocatableIgnoreEvictionThreshold bool `json:"experimentalNodeAllocatableIgnoreEvictionThreshold,omitempty"` // Node Labels are the node labels to add when registering the node in the cluster NodeLabels map[string]string `json:"nodeLabels,omitempty"` // DEPRECATED FLAGS // minimumGCAge is the minimum age for a finished container before it is // garbage collected. MinimumGCAge metav1.Duration `json:"minimumGCAge,omitempty"` // maxPerPodContainerCount is the maximum number of old instances to // retain per container. Each container takes up some disk space. MaxPerPodContainerCount int32 `json:"maxPerPodContainerCount,omitempty"` // maxContainerCount is the maximum number of old instances of containers // to retain globally. Each container takes up some disk space. MaxContainerCount int32 `json:"maxContainerCount,omitempty"` // registerSchedulable tells the edgecore to register the node as // schedulable. Won't have any effect if register-node is false. // DEPRECATED: use registerWithTaints instead RegisterSchedulable bool `json:"registerSchedulable,omitempty"` // This flag, if set, instructs the edged to keep volumes from terminated pods mounted to the node. // This can be useful for debugging volume related issues. KeepTerminatedPodVolumes bool `json:"keepTerminatedPodVolumes,omitempty"` // SeccompDefault enables the use of `RuntimeDefault` as the default seccomp profile for all workloads on the node. // To use this flag, the corresponding SeccompDefault feature gate must be enabled. SeccompDefault bool `json:"seccompDefault,omitempty"` }
TailoredKubeletFlag indicates the tailored kubelet flag