当前位置: 首页 > news >正文

网站建设评审表运城市住房和城乡建设局网站

网站建设评审表,运城市住房和城乡建设局网站,自己做的网站怎么被搜录,招聘网站怎么做预算文章目录 Scheduler 调度策略总结调度原理和过程调度策略nodeSelect亲和性和反亲和性NodeAffinify亲和验证PodAffinity 亲和验证PodAntiAffinity 反亲和验证污点与容忍跳过 Scheduler 调度策略 调度策略场景总结 Scheduler 调度策略总结 调度原理和过程 Scheduler 一直监听着…

文章目录

  • Scheduler 调度策略总结
    • 调度原理和过程
    • 调度策略
      • nodeSelect
      • 亲和性和反亲和性
      • NodeAffinify亲和验证
      • PodAffinity 亲和验证
      • PodAntiAffinity 反亲和验证
      • 污点与容忍
      • 跳过 Scheduler 调度策略
    • 调度策略场景总结

Scheduler 调度策略总结

调度原理和过程

Scheduler

一直监听着 api-server,如果获取到Pod.Spec.NodeName为空,会对每一个pod创建一个binding,表示放在哪一个节点上运行

把 pod 按照预设的调度策略分配到集群的节点上

  • 公平
  • 资源高效利用
  • 效率
  • 灵活

调度过程

  1. 预选(predicate

过滤步满足条件的节点

  • PodFitsResources :节点上剩余的资源是否大于pod 请求的资源

  • PodFitsHost :如果pod 指定了NodeName,检查节点名称是否和NodeName匹配

  • PodFitsHostPorts :节点上已经使用的port是否和pod申请的port冲突

  • PodselectorMatches :过滤掉和pod指定的 label 不匹配的节点

  • NoDiskConflict :已经mount的volume和pod指定的volume不冲突,除非它们都是只读

  1. 优选(priority

对节点按照优先级排序

  1. 选择出最优的节点
  2. 如果预选的时候没有合适的节点,pod 会一直处于 pending状态,并且会不断重试调度,直到有调度结果

调度策略

nodeSelect

  • 最简单的调度形式:节点选择约束,将 pod 调度在拥有你指定的标签的节点上

示例

一个简单的nginx编排文件如下

apiVersion: apps/v1
kind: Deployment
metadata:name: nginxnamespace: defaultlabels:app: nginx
spec:selector:matchLabels:app: nginxreplicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

不进行特殊调度设置

kubectl apply -f nginx-demo.yaml

在这里插入图片描述

给节点设置一个独一无二的标签信息

# 查看节点标签信息
kubectl get node --show-labels
# 给节点新增标签信息(kubectl label nodes <NodeName> key=value)
kubectl label nodes k8s-node01 nginx=true
# 取消节点的标签信息
kubectl label nodes k8s-node01 nginx-

在这里插入图片描述

**加上调度策略nodeSelect **

apiVersion: apps/v1
kind: Deployment
metadata:name: nginxnamespace: defaultlabels:app: nginx
spec:selector:matchLabels:app: nginxreplicas: 3template:metadata:labels:app: nginxspec:nodeSelector:app: nginxcontainers:- name: nginximage: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

查看效果

在这里插入图片描述

亲和性和反亲和性

  • 相比之下,亲和性和反亲和性的表达能力更强
  • nodeSelector 只能选择所有固定标签的节点

requiredDuringSchedulingIgnoredDuringExecution

调度器只有在规则被满足的时候才能执行调度

preferredDuringSchedulingIgnoredDuringExecution

调度器会尝试寻找满足对应规则的节点,如果找不到,调度会在其他节点调度这个 pod

节点亲和性

NodeAffinity

  • “软需求”:调度器在无法找到匹配节点时候仍然会调度 pod
  • “硬需求”:如果没有节点满足需求,则不会被调度,一直处于 pending 状态

Pod亲和性

PodAffinity

  • pod可以和哪些pod部署在同一个拓扑中

Pod互斥性

PodAntiAffinity

  • pod不和哪些pod部署在同一个拓扑中

调度策略

调度策略匹配标签操作符拓扑支持调度目标
nodeAffinitynode节点In, NotIn,Exists,DoesNotExist, Gt,Lt指定主机
podAffinitypodIn, NotIn,Exists,DoesNotExistpod与指定pod一个拓扑域
PodAntiAffinitypodIn, NotIn,Exists,DoesNotExistpod与指定pod不在一个拓扑域

操作符

  • In:label 的值在某个列表中
  • NotIn:label 的值不在某个列表中
  • Gt:label 的值大于某个值
  • Lt:label 的值小于某个值
  • Exists:某个 label 存在
  • DoesNotExist:某个 label 不存在

NodeAffinify亲和验证

标准yaml文件

###第一个
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:containers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent###第二个
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx2namespace: defaultlabels:app: nginx2
spec:selector:matchLabels:app: nginx2replicas: 3template:metadata:labels:app: nginx2spec:containers:- name: nginx2image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

NodeAffinify验证

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- k8s-node03containers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

在这里插入图片描述

调度结果

在这里插入图片描述

硬策略不符合要求的时候的调度结果

在这里插入图片描述

如果是软策略

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:affinity:nodeAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 1preference:matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- k8s-node04containers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

在这里插入图片描述

PodAffinity 亲和验证

nginx2的运行情况
在这里插入图片描述

看下nginx1的硬策略

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- nginx2topologyKey: kubernetes.io/hostnamecontainers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

调度结果

在这里插入图片描述

PodAntiAffinity 反亲和验证

nginx2的运行情况

在这里插入图片描述

nginx1

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- nginx2topologyKey: kubernetes.io/hostnamecontainers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

调度结果

在这里插入图片描述

污点与容忍

  • 污点:taints

  • 容忍:tolerations

  • 如果一个节点标记的有污点,如果对pod不进行标识为可以容忍,否则该节点不可调度pod

  • 污点组成:key=value:effect

effect:污点的作用
- NoSchedule :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上
- PreferNoSchedule :表示 k8s 将 尽量避免 将 Pod 调度到具有该污点的 Node 上
- NoExecute :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去
  • 基本操作
### 查看节点污点
kubectl describe nodes | grep -P "Name:|Taints"
### 设置污点
kubectl taint nodes <NodeName> key=value:effect
### 删除污点
kubectl taint nodes <NodeName> key=value:effect-
  • 验证
### 设置一个污点,看是否符合预期,多开一个窗口观察
kubectl taint nodes k8s-node03  app=nginx:NoExecute

在这里插入图片描述

在这里插入图片描述

设置容忍度再看下调度结果

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:tolerations:- key: "app"operator: "Exists"effect: "NoExecute"containers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

在这里插入图片描述

tolerations 属性的写法

  • key、value、effect 与 Node 的 Taint 设置需保持一致
  • operator=Exists,value可以省略
  • operator=Equal,key与value之间就是等于的关系,不能省略
  • 不指定operator,则默认就是Equal

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

跳过 Scheduler 调度策略

  • 将 pod 直接调度到指定的Node节点上
###第一个
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1namespace: defaultlabels:app: nginx1
spec:selector:matchLabels:app: nginx1replicas: 3template:metadata:labels:app: nginx1spec:nodeName: k8s-node01containers:- name: nginx1image: docker.m.daocloud.io/nginximagePullPolicy: IfNotPresent

在这里插入图片描述

调度策略场景总结

调度策略场景说明
nodeName调度固定节点,用于验证特定节点数据、故障复现等
nodeSelect调度到拥有特定标签的节点,特殊部门、特殊业务线、测试等
podAffinity使pod处于同一个拓扑域,用于上下游应用存在大量数据交互的场景
podAntiAffinity使pod不处于同一个拓扑域,多个计算型应用是不适合调度同一台节点
nodeAffinity指定调度到指定的节点,核心应用必须调度到核心节点
nodeAntiAffinity指定不调度到指定的节点,核心节点不能被普通应用使用
taints污点节点不允许被调度pod,比如master节点,GPU高计算性能节点等
tolerations配置了才可以调度到taints节点
http://www.yayakq.cn/news/232155/

相关文章:

  • 免费的舆情网站六安市建设网站市场信息价
  • 公司国外网站建设网站推广的工具
  • 青岛网站建设首选衡水wap网站建设
  • 松原网站建设哪家好重庆建网站推广价格
  • 如何进行主题网站的资源建设网站制作哪个好一些
  • 电商网站建设维护汕尾手机网站开发
  • 学会python做网站中国新闻
  • 网站你懂我意思正能量免费软件上海著名网站设计公司
  • 河南省建设工程造价信息网站网站图片导入wordpress
  • 新乡网站定州网站建设
  • 专业做家具的网站凡科建站的模板 怎么弄下来
  • 怎样做网站手机客户端网站制作品牌有哪些
  • 垂直购物网站建设phpnow超详细WordPress
  • shopify做全品类网站杭州网站建设公司有哪几家
  • 做钉子出口哪个网站好软件源码成品资源下载网站
  • 网站怎么上传手机浏览器下载大全免费下载
  • 太原网站排名推广校园网网络规划与设计方案
  • 织梦可以放两个网站wordpress 数据库优化插件
  • 岳阳平台网站制作app store官网
  • 阿里云主机建网站正规公司简历模板
  • 耒阳网站建设seo怎么推排名
  • 手机永久免费建站杭州软件开发的公司
  • 乐清网站制作优化资源网站排名优化seo
  • 四川住房和城乡建设厅网站jsp网站建设项目实战
  • 山西省建设厅招标网站知识付费网站搭建教程
  • 网站制作-杭州filetype:pdf wordpress
  • 网站营销方案模板腾讯企业网盘
  • 建行移动门户网站大连网站公司设计
  • 域名注册完成后如何做网站成品短视频app下载有哪些
  • 上海网站建设公司怎么样网站建设目标责任