kubernetes高级调度简单说明

Node label使用说明

1.查看node label

kubectl get nodes --show-labels=true

2.创建label

kubectl label node $(node_name)  $key=$value

3.更新label

kubectl label --overwrite node  $(node_name)  $key=$value

4.删除

kubectl label node $(node_name)  $key-

Node调度几种模式

首先看一下,我测试环境node label

1.nodeName模式

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 3
  template:
    metadata:
      labels:
        k8s-app: hello-world
    spec:
      nodeName: node1
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest

2.nodeSelector模式

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 3
  template:
    metadata:
      labels:
        k8s-app: hello-world
    spec:
      nodeSelector:
        kubernetes.io/hostname: node1
          containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest

3.affinity模式

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/hostname"
                operator: NotIn
                values: ["node2"]
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 10
            preference:
              matchExpressions:
              - key: zone
                operator: In
                values:
                - ali

解读
上面规则说明:除node2节点外,分配到zone=ali标签的node上,反之随机调度
requiredDuringSchedulingIgnoredDuringExecution :硬要求,在调度期间要求满足亲和性或者反亲和性规则,如果不能满足规则,则POD不能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
preferredDuringSchedulingIgnoredDuringExecution:软要求,在调度期间尽量满足亲和性或者反亲和性规则,如果不能满足规则,POD也有可能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
operator四种模式: In NotIn Exists NotExists


Taints and Tolerations (污点和容忍)

运行下面命令,标记节点为污点进行测试

kubectl taint nodes node1 node-role/node1=:NoSchedule
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      tolerations:
      - key: node-role/node1
        operator: Exists
        effect: NoSchedule
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/hostname"
                operator: In
                values: ["node1"]

Pod调度模式

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: k8s-app
                operator: In
                values:
                - redis
              topologyKey: kubernetes.io/hostname
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: k8s-app
                  operator: NotIn
                  values:
                  - nginx
              topologyKey: kubernetes.io/hostname

原文地址:http://blog.51cto.com/2759492/2088997

时间: 2024-10-09 10:41:09

kubernetes高级调度简单说明的相关文章

kubernetes 的调度

kubernetes 的调度 标签(空格分隔): kubernetes系列 一: kubernetes的调度 二: kubernetes的节点的亲和性 三: kubernetes的污点与容忍 四: kubernetes的固定节点 一:kubernetes的调度 1.1 scheduler 的介绍 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: 1.公平:如何保证每个节点都能被分配资源 2. 资源高效

8.【Redis系列】Redis的高级应用-简单限流

原文:8.[Redis系列]Redis的高级应用-简单限流 限流在分布式系统中是一个经常被提到的话题,如果当前系统的能力,不足以承受那么大的访问量的时候,那么我们就要阻止外来请求对系统继续施压 实现简单限流 首先我们来看一个常见的简单限流策略,系统要限制每个用户在一定时间内的某个行为只能操作N次,如何是用redis的数据结构来实现这个限流的功能呢. 解决方案 这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以通过 score 来圈出这个时间窗口来.而且我们

Kubernetes 学习21 kubernetes高级调度方式

一.概述 1.上集讲了Scheduler在实现调度时分三步实现调度过程.首先是预选,即从所有节点中选择基本符合选择条件的节点.而后在基本符合条件的节点中使用优选函数计算他们各自的得分并加以比较.并从最高得分的节点中随机选择出一个运行pod的节点,这就是我们的控制平面中scheduler所实现负责的主要功用.同时如果在某些调度场景中我们期望能够通过自己的预设去影响他的一些调度方式,比如就是把我们的pod运行在某些特定的节点之上的时候可以通过自己的预设操作去影响他的预选和优选过程从而使得调度操作能符

资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 源码为 k8s v1.6.1 版本,github 上对应的 commit id 为 b0b7a323cc5a4a2019b2e9520c21c7830b7f708e 本文将对 Scheduler 的调度算法原理和执行过程进行分析,重点介绍 Scheduler 算法中预选和优选的相关内容. Kubernetes Scheduler的基本功能 Kubernetes Scheduler 的作用是根据特定的调度算法将

k8s实践16:kubernetes监测探针简单测试

1.两种探针 readiness probe(就绪探针)监测容器是否就绪?只有pod里的容器就绪,kubelet才会认为pod处于就绪状态.就绪探针的作用是控制哪些pod可以作为svc的后端,如果pod不是就绪状态,就把它从svc load balancer中移除. liveness probe(存活探针)监测容器是否存活?如果容器中的应用出现问题,liveness将检测到容器不健康会通知kubelet,kubelet重启该pod容器. 2.使用探针的三种方式 官网介绍了三种,见下:comman

kubernetes高级调度方式

调度方式: 节点选择器: nodeSelector,nodeName 节点亲和调度: nodeAffinity pod亲和调度: podAffinity ♦ kubectl get nodes --show-labels  可以查看节点存在哪些标签 一.节点选择器 ♦ nodeSelector选择的标签需要在node上存在,node才会被选中为pod创建的节点 下图中pod使用了nodeSelector选项过滤包含了gup=9527标签的node,然后pod就创建到了ks-node2上: 二.节

Kubernetes高级进阶之多维度弹性伸缩

**基于Kubernetes的多维度的弹性伸缩** 目录:2.1 传统弹性伸缩的困境2.2 kubernetes 弹性伸缩布局2.3 Node 自动扩容/缩容2.4 pod自动扩容/缩容 (HPA)2.5 基于CPU指标缩放2.6 基于prometheus自定义指标缩放 2.1 传统伸缩的困境从传统意义上,弹性伸缩主要解决的问题是容量规划与实际负载的矛盾蓝色水位线表示集群资源容量随着负载的增加不断扩容,红色曲线表示集群资源实际负载变化.弹性伸缩就是要解决当实际负载增加,而集群资源容量没来得及反应

Kubernetes高级进阶之pod的自动扩容/缩容

目录:实践1:基于autoscaling cpu指标的扩容与缩容实践2:基于prometheus自定义指标QPS的扩容与缩容 Pod自动扩容/缩容(HPA) Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据资源利用率或者自定义指标自动调整replication controller, deployment 或 replica set,实现部署的自动扩展和缩减,让部署的规模接近于实际服务的负载.HPA不适于无法缩放的对象,例如DaemonSet. HPA主要是

kubernetes版本apiversion简单说明

在使用yaml文件部署Deployment项目时,出现过 error: error validating "xx-Deployment.yaml": error validating data: found invalid field Ports for v1.Container; if you choose to ignore these errors, turn validation off with --validate=false 的错误,对于kubernetes中的apive