每个节点上都可以应用一个或多个taint
标签:
kubernetes 的调理标签(空格分隔断绝分手): kubernetes系列
一: kubernetes的调理
二: kubernetes的节点的亲和性
三: kubernetes的污点与容忍
四: kubernetes的固定节点
一:kubernetes的调理 1.1 scheduler 的介绍 Scheduler 是 kubernetes 的调理器,主要的任务是把界说的 pod 分配到集群的节点上。听起来非常简单,但有很多要考虑的问题: 1.公平:如何保证每个节点都能被分配资源 2. 资源高效操作:集群所有资源最大化被使用 3. 效率:调理的性能要好,能够尽快地对多量量的 pod 完成调理事情 4. 灵活:允许用户按照本身的需求控制调理的逻辑 Sheduler 是作为单独的措施运行的,启动之后会一直坚挺 API Server,获取 PodSpec.NodeName 为空的 pod,对每个 pod 城市创建一个 binding,表白该 pod 应该放到哪个节点上 1.2 调理过程 调理分为几个部分:首先是过滤失不满足条件的节点,这个过程称为 predicate ;然后对通过的节点凭据优先级排序,这个是 priority;最后从中选择优先级最高的节点。如果中间任何一法式有错误,就直接返回错误 Predicate 有一系列的算法可以使用: PodFitsResources :节点上残剩的资源是否大于 pod 请求的资源 PodFitsHost :如果 pod 指定了 NodeName,查抄节点名称是否和 NodeName 匹配 PodFitsHostPorts :节点上已经使用的 port 是否和 pod 申请的 port 斗嘴 PodSelectorMatches :过滤失和 pod 指定的 label 不匹配的节点 NoDiskConflict :已经 mount 的 volume 和 pod 指定的 volume 不斗嘴,除非它们都是只读 如果在 predicate 过程中没有合适的节点,pod 会一直在 pending 状态,不停重试调理,直到有节点满足条件。 颠末这个法式,如果有多个节点满足条件,就继续 priorities 过程: 凭据优先级巨细对节点排序 优先级由一系列键值对构成,键是该优先级项的名称,值是它的权重(该项的重要性)。这些优先级选项包孕: LeastRequestedPriority :通过计算 CPU 和 Memory的使用率来决定权重,使用率越低权重越高。换句话说,这个优先级指标倾向于资源使用比例更低的节点 BalancedResourceAllocation :节点上 CPU 和 Memory使用率越接近,权重越高。这个应该和上面的一起使用,不应该单独使用 ImageLocalityPriority:倾向于已经有要使用镜像的节点,镜像总巨细值越大,权重越高通过算法对所有的优先级项目和权重进行计算,得出最终的功效 二: kubernetes 调理的亲和性 键值运算关系 In:label 的值在某个列表中 NotIn:label 的值不在某个列表中 Gt:label 的值大于某个值 Lt:label 的值小于某个值 Exists:某个 label 存在 DoesNotExist:某个 label 不存在 2.1 节点亲和性 节点亲和性 pod.spec.nodeAffinity preferredDuringSchedulingIgnoredDuringExecution:软计谋 requiredDuringSchedulingIgnoredDuringExecution:硬计谋 requiredDuringSchedulingIgnoredDuringExecution vim affit1.yaml --- apiVersion: v1 kind: Pod metadata: name: affinity labels: app: node-affinity-pod spec: containers: - name: with-node-affinity image: wangyanglinux/myapp:v1 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: NotIn values: - node02.flyfish --- kubectl get pod --show-labes 排除operator:NotIn 就是不在 node02.flyfish 运行 kubectl apply -f affit1.yaml kubectl get pod kubernetes.io/hostname: kubectl get node --show-labels温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/27326.html