/*
*
* * Copyright (c) 2024 China Unicom Digital Technology Co., Ltd.
* * openFuyao is licensed under Mulan PSL v2.
* * You can use this software according to the terms and conditions of the Mulan PSL v2.
* * You may obtain a copy of Mulan PSL v2 at:
* * http://license.coscl.org.cn/MulanPSL2
* * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* * See the Mulan PSL v2 for more details.
*
*/
// common 常量
package common
import (
"os"
"time"
)
const (
// FreshContainerMinMetricsResolution is the minimum resolution of metrics for fresh container
FreshContainerMinMetricsResolution = 10 * time.Second
// DefaultInsecureKubeletMetricsPort is the default port for kubelet metrics
DefaultInsecureKubeletMetricsPort = 10255
// DefaultSecureKubeletMetricsPort is the default port for kubelet metrics
DefaultSecureKubeletMetricsPort = 10250
// DefaultMetricsScrapePeriod is the default period for scraping metrics
DefaultMetricsScrapePeriod = 60 * time.Second
// DefaultReportsUploadPeriod is the default period for uploading reports to master
DefaultReportsUploadPeriod = 300 * time.Second
// DefaultReportsBufCapacity is the default capacity of reports buffer
DefaultReportsBufCapacity = 5
// DefaultExporterPort is the default port for include exporter
DefaultExporterPort = 8900
// DefaultExporterPeriod is the default period for exporting metrics
DefaultExporterPeriod = 30 * time.Second
// CushionTime is the cushion time for metrics
CushionTime = 5 * time.Second
// DefaultHttpClientTimeout for http client
DefaultHttpClientTimeout = 10 * time.Second
// NanoCoresPerCore per core
NanoCoresPerCore = 1e9
)
const (
// DefaultLog Always logged
DefaultLog = iota
// BasicDebugLog Important but non-critical logs
BasicDebugLog
// GeneralDebugLog More detailed operational logs
GeneralDebugLog
// VerboseDebugLog Granular internal state
VerboseDebugLog
// AdvanceDebugLog Low-level details
AdvanceDebugLog
// TraceDebugLog Extremely verbose
TraceDebugLog
// MicroscopicDebugLog Overwhelming detail
MicroscopicDebugLog
)
// OverheadFactor is the factor of overhead
const OverheadFactor = 0.1
// SpecNodeNameField is the field of spec.nodeName
const SpecNodeNameField = "spec.nodeName"
const (
// ColocationNodeLabel 混部节点标签
ColocationNodeLabel string = "node.openfuyao.com/colocation"
// OversubNodeLabel 超卖节点标签
OversubNodeLabel string = "node.openfuyao.com/oversold"
// DefaultCgroupRoot specifies the default cgroup root directory.
DefaultCgroupRoot = "/sys/fs/cgroup"
// PriorityAnnotationKey is annotation key to mark offline pod in rubik
PriorityAnnotationKey = "volcano.sh/preemptable"
// ExtenderResourceCPU is the annotation key to mark be cpu resource
ExtenderResourceCPU = "kubernetes.io/be-cpu"
// ExtenderResourceMemory is the annotation key to mark be memory resource
ExtenderResourceMemory = "kubernetes.io/be-memory"
// QosClassAnnotationKey is annotation key to mark overquota qos level
QosClassAnnotationKey = "openfuyao.com/qos-level"
// QosBe is the qos level for BE pod
QosBe QosLevel = "BE"
// QosLs is the qos level for LS pod
QosLs QosLevel = "LS"
// QosHLS is the qos level for HLS pod
QosHLS QosLevel = "HLS"
// QosNone is the qos level for None pod
QosNone QosLevel = "None"
// OversoldAnnotation is the annotation for oversold status.
OversoldAnnotation = "openfuyao.com/oversold"
// ExtenderResourceConfigurationAnnotation is the annotation for extender resource configuration.
ExtenderResourceConfigurationAnnotation = "openfuyao.com/extender-resource-cfg"
// NumaResourceAnnotation is the annotation for NUMA resource allocation.
NumaResourceAnnotation = "openfuyao.com/numa-resource"
// ContainerEngineAnnotation is the annotation for container engine type.
ContainerEngineAnnotation = "openfuyao.com/container-engine"
// GPUInstanceAnnotation is the annotation for GPU instance.
GPUInstanceAnnotation = "openfuyao.com/gpu-instance"
// RubikQuotaTurboAnnotation is the annotation for Rubik quota turbo.
RubikQuotaTurboAnnotation = "volcano.sh/quota-turbo"
)
// global config for cgroup driver choice
const (
// CgroupDriverSystemd specifies the systemd cgroup driver.
CgroupDriverSystemd = "systemd"
// CgroupDriverCgroupfs specifies the cgroupfs cgroup driver.
CgroupDriverCgroupfs = "cgroupfs"
)
// container engine
const (
// ContainerEngineCrio specifies the CRI-O container engine.
ContainerEngineCrio = "crio"
// ContainerEngineContainerd specifies the containerd container engine.
ContainerEngineContainerd = "cri-containerd"
// ContainerEngineIsula specifies the iSula container engine.
ContainerEngineIsula = "isula"
// ContainerEngineDocker specifies the Docker container engine.
ContainerEngineDocker = "docker"
)
const (
// PreRunPodSandbox is a hook point before running a pod sandbox.
PreRunPodSandbox = "PreRunPodSandbox"
// PreCreateContainer is a hook point before creating a container.
PreCreateContainer = "PreCreateContainer"
// PreUpdateContainerResources is a hook point before updating container resources.
PreUpdateContainerResources = "PreUpdateContainerResources"
// PreRemoveRunPodSandbox is a hook point before removing a pod sandbox.
PreRemoveRunPodSandbox = "PreRemoveRunPodSandbox"
)
const (
// KubepodsCgroup is the cgroup name for Kubernetes pods.
KubepodsCgroup = "kubepods"
// CPUSharesPath is the path to the cpu.shares cgroup file.
CPUSharesPath = "cpu.shares"
// CPUQuotaPath is the path to the cpu.cfs_quota_us cgroup file.
CPUQuotaPath = "cpu.cfs_quota_us"
// CPUSetPath is the path to the cpuset.cpus cgroup file.
CPUSetPath = "cpuset.cpus"
// CPUSetMemPath is the path to the cpuset.mems cgroup file.
CPUSetMemPath = "cpuset.mems"
// MemoryLimitPath is the path to the memory.limit_in_bytes cgroup file.
MemoryLimitPath = "memory.limit_in_bytes"
// CgroupCPUDir is the cgroup directory for CPU controller.
CgroupCPUDir = "cpu/"
// CgroupCPUSetDir is the cgroup directory for CPUset controller.
CgroupCPUSetDir = "cpuset/"
// CgroupCPUSetMemDir is the cgroup directory for CPUset memory controller.
CgroupCPUSetMemDir = "cpuset/"
// CgroupMemDir is the cgroup directory for memory controller.
CgroupMemDir = "memory/"
)
// QosLevel is the overquota qos level of pod
type QosLevel string
// File permission
const (
// DefaultUmask specifies the default umask for file creation.
DefaultUmask os.FileMode = 0077
// DefaultFileMode specifies the default file permission mode.
DefaultFileMode os.FileMode = 0600
// DefaultDirMode specifies the default directory permission mode.
DefaultDirMode os.FileMode = 0700
// DefaultDumpLogFileMode specifies the default permission mode for dump log files.
DefaultDumpLogFileMode os.FileMode = 0400
// TmpTestDir specifies the temporary directory for test files.
TmpTestDir = "/tmp/colocation-management-test-file"
)
const (
// KlogFlushInterval is the interval of klog flush.
KlogFlushInterval = 5 * time.Second
)