baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

  • 面试

  • mac相关工具推荐

  • 开发工具

  • 人工智能

  • 推荐

  • 阅读

  • 工具

  • 计划

  • 产品

  • 云原生

  • go

  • QVM

    • OpenStack

    • K8S

      • 扣丁狼k8s(一)
      • 扣丁狼k8s(二)
      • k8s中的网络(一)
      • k8s中的网络(二)
      • 扣丁狼k8s(三)存储与配置
      • k8s高级调度
        • 污点和容忍
        • 污点基本应用
        • 容忍
        • 亲和力 Affinity
          • 节点亲和力
          • 案例:
          • pod亲和力
      • k8s分享
      • 常用命令
      • k8s集群搭建
      • 搭建过程bug记录
      • 什么是k8s的CRD
      • OpenStack Kubernetes kubevirt
      • k8s-go-client
      • kubeconfig详解
    • kubevirt

  • 软件设计师

  • 极客时间

  • 单元测试

  • 其他
  • QVM
  • K8S
xugaoyi
2023-09-05
目录

k8s高级调度

# 污点和容忍

与节点调度相关

污点:例如我们在node1上面有污点,那么pod或者其他任务就不会被调度到node1上面,而是到其他的节点上面去。

容忍:某个任务上面可以配置容忍,如果我们容忍了node1上面的污点,我们就可以在node1上面进行调度

image-20230905105446112

image-20230905105652069

# 污点基本应用

为节点打上污点:

kubectl taint node k8s-master key=value:NoSchedule

污点造成的影响

  • NoSchedule:如果某个pod不能容忍该节点的污点,那么pod就无法调度到该节点

  • NoExecute:

如果pod不能忍受这类污点,pod会马上被驱逐

如果pod能容忍这类污点,但是在容忍度上没有指定tolerationSeconds,则pod还会一直在这个节点上运行

如果指定了tolerationSeconds,则pod还能在这个节点上继续运行这个指定的时间长度。

移除污点

kubectl taint node k8s-master key=value:NoSchedule

查看污点

只能通过 kubectl describe node node1 才可以

# 容忍

标注在pod上的,当pod被调度时,如果没有配置容忍,则该pod不会被调度到有污点的节点上,只有该pod上标注了满足某个节点的所有污点,则会被调度到这些节点

如何配置容忍:

在pod的spec下面配置容忍

tolerations:
- key: "污点的key"
  value: "污点的value"
  offect: "NoSchedule" # 污点产生的影响
  operator: "Equal" # 表是value与污点的value要相等,也可以设置为exist表示存在key即可,此时可以不用配置value
1
2
3
4
5
  • Equal

比较操作类型为equal,则意味着必须与污点值做匹配,key/value都必须相同,才表示能容忍该污点

  • Exist

容忍与污点的比较只比较key,不比较value,不关心value是什么,只要key存在,就表示可以容忍

openstacktest-1 taints node-role.kubernetes.io/master:PreferNoSchedule

# 亲和力 Affinity

# 节点亲和力

指定某一个pod想去哪个地方

亲和力相对于nodeSelector扩展性更高

亲和力(和绝对匹配,尽量匹配)

image-20230905114147024

image-20230905115649370

# 案例:

  • NodeAffinity

RequiredDuringSechdulingIgnoredDuringExecution

硬亲和力,即支持必须部署在指定的节点上,也支持必须不部署在指定的节点上。

PreferedDuringSchedulingIgnoreDuringExecution

软亲和力,尽量部署在满足条件的节点上,或尽量不要部署在被匹配的节点上

matchExpression

Operator:

  • in :满足一个就行

  • not in:一个都不能满足

  • exists:存在就满足

  • doesNotExist 只有不存在,才满足

  • gt : 必须大于节点的数值,才满足

  • lt:小于节点的数值,才满足

  • podAffinity

# pod亲和力

对于node1,node2,node3中,node3里面有一个服务a,我的服务b准备部署,可以根据节点亲和力判断是配置在node3中还是配置在node1和node2中。

image-20230905141938040

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
扣丁狼k8s(三)存储与配置
k8s分享

← 扣丁狼k8s(三)存储与配置 k8s分享→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式