
K8S入门学习笔记第六天,nodeSelector,nodeAffinity,Taint,DaemonSet控制器
发现节点有污点无法容忍,所以无法正常启动
启动完成,每个节点会生成一个nginx容器
发布日期:2021-05-07 07:25:14
浏览次数:15
分类:精选文章
本文共 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中指定标签
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

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,日志Agent7.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

发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月04日 06时06分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MySQL隐藏文件.mysql_history风险
2019-03-05
js求阶乘
2019-03-05
小程序图片正确使用方式(防止发布之后不显示)
2019-03-05
Java学习
2019-03-05
Js函数
2019-03-05
L1-009 N个数求和 (20 分)
2019-03-05
L2-031 深入虎穴 (25 分)
2019-03-05
Unity之PlayerPrefs
2019-03-05
简单的xml读取存储方法(未优化)
2019-03-05
Nginx---惊群
2019-03-05
2种解法 - 获取一条直线上最多的点数
2019-03-05
项目中常用的审计类型概述
2019-03-05
nodeName与tagName的区别
2019-03-05
(九)实现页面底部购物车的样式
2019-03-05
python-day3 for语句完整使用
2019-03-05
linux下远程上传命令scp
2019-03-05
可重入和不可重入函数
2019-03-05
(2.1)关系模型之关系结构和约束
2019-03-05
androidstudio同步的时候下载jcenter的库出错解决办法
2019-03-05