k8s学习 - Pod调度

Pod调度

在这里插入图片描述

资源限制对pod调度影响

apiVersion: v1
kind: Pod
metadata:
  name: resource
spec:
  containers:
  - name: web
    image: nginx:1.16
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

Memory 的单位是Mi
CPU的单位: 0.5 =500m , 1=1000m

nodeSelector

给特定的节点打标签

kubectl label nodes node1 location=node1

删除标签

kubectl label nodes node1 location-

案例:

apiVersion: v1
kind: Pod
metadata:
  name: nodeselector
spec:
  nodeSelector:
    location: node1
  containers:
  - name: nginx
    image: nginx:1.19

nodeAffinity

节点亲和类似于nodeSelector,可以根据节点上的标签来约束Pod可以调度到哪些节点。
相比nodeSelector:
•匹配有更多的逻辑组合,不只是字符串的完全相等
•调度分为软策略和硬策略,而不是硬性要求
•硬(required):必须满足
•软(preferred):尝试满足,但不保证
操作符:In、NotIn、Exists、DoesNotExist、Gt、Lt

案例:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: disktype
            operator: In
            values:
            - ssd            
  containers:
  - name: nginx
    image: nginx:1.16
    imagePullPolicy: IfNotPresent

污点 & 容忍

Taints:避免Pod调度到特定Node上

kubectl taint node [node] key=value:[effect]

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 10
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.16
        name: nginx
        resources: {}
      tolerations:
      - key: "disktype"
        operator: "Equal"
        value: "sata"
        effect: "NoSchedule"
status: {}

nodeName
案例:

apiVersion: v1
kind: Pod
metadata:
  name: nodename
  labels:
    app: nginx
spec:
  nodeName: node2
  containers:
  - name: nginx
    image: nginx:1.15

Daemonset 控制器

在每一个Node上运行一个Pod
新加入的Node也同样会自动运行一个Pod
网络插件、监控Agent、日志Agent
案例:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: kube-system
spec:
  selector:
    matchLabels:
      name: filebeat
  template:
    metadata:
      labels:
        name: filebeat
    spec:
      containers:
      - name: log
        image: elastic/filebeat:7.10.2

思考:

如上的案例执行之后, 只会在node1 & 2上运行filebeat, 如何在master上也运行filebeat ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值