博客
关于我
K8S入门学习笔记第六天,nodeSelector,nodeAffinity,Taint,DaemonSet控制器
阅读量:327 次
发布时间:2019-03-04

本文共 2443 字,大约阅读时间需要 8 分钟。

nodeSelector和nodeAffinity作用分别是什么?

nodeSelector:节点选择器用于将Pod调度到匹配label的node上,如果没有匹配的标签会调度失败。完全匹配节点标签,固定到pod的特定节点。nodeAffinity:节点亲和器

具体用法如下

1.创建标签
kubectl  label  node    cka-node  disktype=gpu

#给 cka-node这个节点打上一个 disktype=ssd的标签

2.检查标签
kubectl get  node  --show-labels  #查看所有标签kubectl get node  -l  disktype=gpu   #指定key查找标签

在这里插入图片描述

3.在pod.yaml中指定标签

在这里插入图片描述

至此只顶你标签创建 pod完成
nodeAffinity:节点亲和类型去nodeSelector,可以根据节点上的标签来约束pod调度到哪些节点
特点:
匹配有更多的逻辑组合,不只是字符串的完全相等
调度分为软策略和硬策略,而不是硬性要求
required:必须满足
preferred:尝试满足,但不保证

Taint(污点)

Taints :避免pod调度到特定node上

设置污点

kubectl  taint node  [node]   key=value:[effect][effect]有三个可选值1.Noschedule:一定不能被调度2.PreferNoSchedule:尽量不要被调度3.NoExecute:不仅不会被调度,还会驱逐Node上已有的Pod
Taint用法
1.打污点Taint
kubectl taint  node cka-node  gpu=yes:NoSchedule
2.查看污点
kubectl describe node  | grep  Taint

在这里插入图片描述

3.测试
[root@CKA-master ~]# cat pod.yaml apiVersion: v1kind: Podmetadata:  labels:    run: nginx  name: nginx-gpuspec:  nodeSelector:    porttype: "ssd"  containers:  - image: nginx    name: nginx-ssd    resources: {   }  dnsPolicy: ClusterFirstkubectl  apply -f  pod.yaml

在这里插入图片描述

kubectl describe pod nginx-gpu#检查原因
在这里插入图片描述
发现节点有污点无法容忍,所以无法正常启动

4.更新pod

在这里插入图片描述

容忍这个污点

apiVersion: v1kind: Podmetadata:  labels:    run: nginx  name: nginx-tolerationsspec:  tolerations:    - key: "gpu"             #key等于gpu      operator: "Equal"      #相等      value: "yes"           #value=yes      effect: "NoSchedule"   #污点标签  nodeSelector:    disktype: "gpu"        #指定标签  containers:  - image: nginx    name: nginx-ssd    resources: {   }  dnsPolicy: ClusterFirst
5.去掉污点
kubectl taint  node  cka-node  gpu:NoSchedule-

在这里插入图片描述

6.忽略污点精确分配

增加 nodeName: "cka-node"的配置

apiVersion: v1kind: Podmetadata:  labels:    run: nginx  name: nginx-nodespec:  nodeName:  "cka-node"  containers:  - image: nginx    name: nginx-ssd    resources: {   }  dnsPolicy: ClusterFirst
7.DaemonSet

DaemonSet功能:

1.在每个Node上运行一个Pod
2.新加入的Node也同样会自动运行一个Pod
应用场景:网络插件,监控Agent,日志Agent

7.1创建daemonset.yaml文件
apiVersion: apps/v1kind: DaemonSetmetadata:  labels:    app: nginx  name: nginxspec:  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      tolerations:                  #容忍master节点的污点        - effect: NoSchedule        #容忍master节点的污点          operator: Exists          #容忍master节点的污点      containers:      - image: nginx        name: nginx        resources: {   }

#启动 kubectl apply -f daemonset.yaml

7.2验证是不是每个节点都部署了nginx

kubectl get pods -o wide

在这里插入图片描述
启动完成,每个节点会生成一个nginx容器

转载地址:http://nhah.baihongyu.com/

你可能感兴趣的文章
上周热点回顾(3.28-4.3)
查看>>
上周热点回顾(5.2-5.8)
查看>>
上周热点回顾(5.9-5.15)
查看>>
上周热点回顾(8.8-8.14)
查看>>
.NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
查看>>
上周热点回顾(12.12-12.18)
查看>>
上周热点回顾(1.16-1.22)
查看>>
上周热点回顾(1.23-1.29)
查看>>
上周热点回顾(3.20-3.26)
查看>>
上周热点回顾(4.24-4.30)
查看>>
[故障公告]博客站点1台负载均衡遭遇流量攻击,造成联通与移动用户无法正常访问
查看>>
上周热点回顾(5.1-5.7)
查看>>
上周热点回顾(5.8-5.14)
查看>>
上周热点回顾(5.29-6.4)
查看>>
云计算之路-阿里云上:14:20-14:55博客后台2台服务器都CPU 100%引发的故障
查看>>
上周热点回顾(6.19-6.25)
查看>>
云计算之路-阿里云上:docker swarm 集群故障与异常
查看>>
上周热点回顾(2.19-2.25)
查看>>
云计算之路-阿里云上:博客web服务器轮番CPU 100%
查看>>
云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
查看>>