K8S|划分资源池的碎碎念

背景

之前在[grafana适配k8s资源池查询]一文中有提过资源池的概念,也提过原理:由3台以上的节点通过打上同样的label标签,标记同样的污点,应用在部署的时候通过nodeSelector选择相应的主机,同时兼容污点以达到特定节点部署的目的.今天就是剖析一下细节实现,及一些自己的思考.

label配置

标签是配置在节点上.
设置

kubectl label nodes 192.168.1.22 role=core

查询

kubectl get nodes --show-labels|grep 1.22

删除

kubectl label nodes 192.168.1.22 role-

污点配置

污点同样配置在节点上
添加

kubectl taint node 192.168.1.22 role=core:NoSchedule

查询

kubectl describe node 192.168.1.22 

删除

kubectl taint node 192.168.1.22 role-

deployment配置

注意配置与dnsPolicy同级,示例为json格式

"dnsPolicy": "ClusterFirst",
"nodeSelector": {
  "role": "core"
},
"tolerations": [
  {
    "key": "role",
    "operator": "Equal",
    "value": "core",
    "effect": "NoSchedule"
  }
],

一些思考

其实也没有什么技术上的创新,都是把k8s现有的功能组合起来使用.可能有的同学会说,不打污点,直接标签+nodeSelector可以吗?可以;标签也不打,直接使用nodeSelector选择一组节点可以吗?可以;那为什么在你的实现中,非要弄这么一个复杂的组合呢?因为我维护的已经是有一定规模的k8s集群,里面跑着小二百的服务,小六百的pod.当我要实施一个方案是不可能把整个集群推倒重来的.所以设污点,让先前的服务不要过来,兼容污点,让指定的服务富起来.

转载请注明: 转自Rainbird的个人博客
   本文链接: K8S|划分资源池的碎碎念


相关博文

About rainbird

IOS攻城狮
This entry was posted in K8S and tagged , , , , , , , . Bookmark the permalink.

发表评论