Scheduler
调度过程:
预选过程 predicate
优选策略 priority
选定 selectnode
节点亲和性调度
反亲和性函数
调度器:
预选策略:
CheckNodeCondition
GeneralPredicates
HostName: 检查pod对象是否认义了pod.spec.hostname
PodFitsHostPorts: pods.spec.containers.ports.hostPort
MatchNodeSelector: pods.spec.nodeSelector
PodFitsResources: 检查Pod资源需求可否被节点知足
kubectl describe node k8s-node1
NoDiskConflict 检查节点是否有合适的能知足pod依赖的存储卷
PodtoleratesNodeTaints: 检查pod上的tolerations可容忍的污点是否彻底包含节点上的污点
PodToleratesNodeNoExecuteTains 默认没有启用
CheckNodeLabelPresence 检查标签的存在性 默认没有启用
CheckServiceAffinity 默认没有启用ui
MaxEBSVolumeCount MaxGCEPDVolumeCount MaxAzureDiskVolumeCount CheckVolumeBinding NovolumeZoneConflict CheckNodeMemoryPressure 检查节点内存资源是否存在压力 CheckNodePIDpressure 检查节点PID资源是否存在压力 CheckNodeDiskPressure 检查节点磁盘是否存在压力 MatchInterPodAffity
优选函数
LeastRequested:
(cpu((capacity-sum(requested))*10/capacity)code
BalancedResourceAllocation CPU和内存资源被占用率相近的胜出 NodePreferAvoidPods 节点注解信息“scheduler.alpha.kubernetes.io/preferAvoidPods” TaintToleration: 将Pod对象的spec.tolerations 与节点的taints列表项进行匹配度检查,匹配的条目越多,得分越低 SelectorSpreading: 与当前pod对象同属的标签选择器,匹配度越高得分越低 InterPodAffinity NodeAffinity 节点亲和性 MostRequested NodeLabel ImageLocality: 根据已有镜像的体积大小之和
高级调度设置:对象
节点选择器: nodeSelector
节点亲和调度:nodeAffinity
kubectl explain pods.spec.affinity.nodeAffinity内存
preferredDuringSchedulingIgnoredDuringExecution 软亲和性,若是能知足最好,若是实在不知足,也能够 requiredDuringSchedulingIgnoredDuringExecution 硬亲和性,必需要知足才行
taint的effect定义对pod的排斥效果:
NoSchedule 仅影响调度过程
NoExecute 既影响调度过程也影响现存的Pod对象;不容忍的Pod对象将比驱逐
PreferNoSchedule 不容忍的若是没有其余的选择那么也就能够被保留ci
污点调度 taint: 给节点那些pod能被调度,通常用在节点上,也是一种键值属性, taints资源
Tolerrations 容忍度kubernetes
admin Abc.1234it