k8s指定node调度
概述
- 在使用过程中,如果希望指定的pod放在自己希望的node节点上可以进行调度,选择对应的node节点。
- 可以看出可以使用节点的ip地址或者是在node节点添加标签,让pod调度器使用selector进行选择,这里我将使用两种方法,将主服务的beego端放在node1上,将判题器的两个judger放在node2上,judger1使用ip选择,judger2使用lable选择。
调度
nodename调度
apiVersion: apps/v1
kind: Deployment
metadata:name: unioj-judger-deploymentnamespace: default
spec:selector:matchLabels:app: unioj-judgerreplicas: 1template:metadata:labels:app: unioj-judgerspec:nodeName: k8s-node2restartPolicy: Alwayscontainers:- name: unioj-judgerimage: registry.cn-beijing.aliyuncs.com/uyistcoj/unioj-judgerimagePullPolicy: Alwaysports:- containerPort: 7999resources:requests:memory: 100Micpu: 400mlivenessProbe:httpGet:path: /healthyport: 7999initialDelaySeconds: 3periodSeconds: 3successThreshold: 1 # 健康阀值
- 问题:直接使用192.168.10.66会导致pending一直无法调度,故而使用node的名字,估摸着是集群不认识ip
lable调度
打标签
- 打标签
kubectl label nodes <node-name> <label-key>=<label-value>
- 查看标签
[root@k8s-master1 pods]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready control-plane,master 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node1 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux
k8s-node2 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux
- 给node2打标签unioj-role: judgers
[root@k8s-master1 pods]# kubectl label nodes k8s-node2 unioj-role=judgers
node/k8s-node2 labeled
[root@k8s-master1 pods]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready control-plane,master 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node1 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux
k8s-node2 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux,unioj-role=judgers
- 修改yaml进行选择
apiVersion: apps/v1
kind: Deployment
metadata:name: unioj-judger-deployment2namespace: default
spec:selector:matchLabels:app: unioj-judger2replicas: 1template:metadata:labels:app: unioj-judger2spec:nodeSelector:unioj-role: judgerscontainers:- name: unioj-judgerimage: registry.cn-beijing.aliyuncs.com/uyistcoj/unioj-judgerimagePullPolicy: Alwaysports:- containerPort: 7999resources:requests:memory: 100Micpu: 400mimagePullPolicy: Alwaysports:- containerPort: 7999resources:requests:memory: 100Micpu: 400mlivenessProbe:httpGet:path: /healthyport: 7999initialDelaySeconds: 3periodSeconds: 3successThreshold: 1 # 健康阀值
- apply之前的分布
[root@k8s-master1 pods]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
unioj-beego-deployment-6874449649-lhjm7 1/1 Running 1 11h 10.100.2.64 k8s-node2 <none> <none>
unioj-judger-deployment-5c596bb8d5-gck6f 1/1 Running 0 7m34s 10.100.2.68 k8s-node2 <none> <none>
unioj-judger-deployment2-78ff65b5fd-99r5j 1/1 Running 0 46m 10.100.1.51 k8s-node1 <none> <none>
- apply
[root@k8s-master1 pods]# kubectl apply -f unioj-judger2.yaml
deployment.apps/unioj-judger-deployment2 configured[root@k8s-master1 pods]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
unioj-beego-deployment-6874449649-lhjm7 1/1 Running 1 11h 10.100.2.64 k8s-node2 <none> <none>
unioj-judger-deployment-5c596bb8d5-gck6f 1/1 Running 0 8m48s 10.100.2.68 k8s-node2 <none> <none>
unioj-judger-deployment2-5fcf476c57-xf8ck 1/1 Running 0 27s 10.100.2.69 k8s-node2 <none> <none>
- 同样的方法把beego调度到node1
[root@k8s-master1 pods]# kubectl label node k8s-node1 unioj-role=beego
node/k8s-node1 labeled[root@k8s-master1 pods]# kubectl get node --show-labels
NAME STATUS ROLES AGE VERSION LABELS
k8s-master1 Ready control-plane,master 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node1 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux,unioj-role=beego
k8s-node2 Ready <none> 30d v1.21.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux,unioj-role=judgers
- yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: unioj-beego-deploymentnamespace: defaultlabels:app: unioj-beego
spec:replicas: 1selector:matchLabels:app: unioj-beegotemplate:metadata:labels:app: unioj-beegospec:nodeSelector:unioj-role: beegocontainers:- name: unoj-beegoimage: registry.cn-beijing.aliyuncs.com/uyistcoj/unioj-beego:latestports:- containerPort: 8000- containerPort: 8666
- apply后
[root@k8s-master1 pods]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
unioj-beego-deployment-dc8986bcb-7mrqv 1/1 Running 0 4m13s 10.100.1.52 k8s-node1 <none> <none>
unioj-judger-deployment-5c596bb8d5-gck6f 1/1 Running 0 15m 10.100.2.68 k8s-node2 <none> <none>
unioj-judger-deployment2-5fcf476c57-xf8ck 1/1 Running 0 7m 10.100.2.69 k8s-node2 <none> <none>
结果
所有的judger到node2上,主控的beego到了node1
常见问题
k8s指定node调度相关推荐
- k8s 指定节点调度标签
nodeSelector 强制匹配 指定pod 调度到标签 ssd [root@k8s-master cka3]# cat ssd.yaml apiVersion: v1 kind: Pod meta ...
- 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo
写在前面 嗯,整理K8s中pod调度相关笔记,这里分享给小伙伴 博文内容涉及: kube-scheduler组件的简述 Pod的调度(选择器.指定节点.主机亲和性)方式 节点的coedon与drain ...
- k8s 部署pod到指定node
k8s指定节点部署 在一些业务场景中,会需要将一些pod部署到指定node,按照默认的调度规则,pod会优先分配到负载较小的node中,难免会出现多个pod资源竞争的情况. k8s有两种常用的方法可以 ...
- k8s ready 不调度_【零基础学云计算】k8s部署---master节点组件部署(三)
kube-APIserver组件介绍 kube-APIserver提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中 ...
- K8S之Scheduler调度器
K8S之Scheduler调度器 kubernetes Scheduler 简介 kubernetes Scheduler 运行在 master 节点,它的核心功能是监听 apiserver 来获取 ...
- k8s(八)—调度因素(nodeName、nodeSelector、亲和与反亲和、Taints 污点)、影响pod调度的指令
1 调度简介 [root@server2 ~]# kubectl get pod -n kube-system 2 影响kubernetes调度的因素 2.1 nodeName(针对节点) [root ...
- OpenShift 4 - 通过DaemonSet在指定Node上运行守护程序
<OpenShift 4.x HOL教程汇总> 文章目录 通过DaemonSet在Worker Node上运行守护程序 通过DaemonSet在指定Node上运行守护程序 通过Daemon ...
- nvm安装流程、使用nvm安装指定node版本
注意:要用nvm管理node版本的前提是要把之前已经下载的node给卸载掉,然后用nvm陆续添加自己所需的node版本,否则会出现nvm中node版本切换过来了,但是再使用的时候还是原来的. 1.下载 ...
- Mac 指定node版本安装
Mac 指定node版本安装 之前一直没有写文章的习惯,经过几次处理技术问题的事情后,发现还是要花点时间记录一下日常遇到的一些问题及解决办法,有助于加深印象和后续再次遇到时,能快速的回忆起来 1.nv ...
最新文章
- [Runtime]-交换方法
- 前端学习(3034):vue+element今日头条管理-markdown补充
- DNS服务器介绍(二)——主从复制和区域转发
- python概率论_概率论中常见分布总结以及python的scipy库使用
- thinkphp5 open_basedir 补充
- mysql 主从手动切换
- 处理日期和时间数据--字符串文字
- mysql 没有三级模式两级映像_数据库三级模式/两级映像
- lammps教程:叠加力场hybrid/overlay设置方法介绍
- 【Android测试】在AndroidStudio中进行单元测试
- DELPHI点在多边形内算法
- html5手机摄像头相册批量,h5调用手机摄像头/相册(示例代码)
- HTML期末学生大作业 响应式动漫网页作业 html+css+javascript (1)
- android室内地图,室内位置-与地图交互-开发指南-Android 室内地图SDK | 高德地图API...
- 这是什么意思admin.php,administratior是什么意思
- 为什么mysql不建议执行超过3表以上的多表关联查询?
- 共享店铺靠谱么?共享店铺哪家好?全方位测评企雀共享店铺,黑谷共享店铺!
- 数据分析报告,就该这么写!超详细攻略奉上
- 讨论数据增强(data augmentation)的有效性
- DbVisualizer破解
热门文章
- TI最新CC2640R2L与CC2640R2F区别详解
- mac DBeaver连接mysql 驱动失败问题
- 深入理解Pytorch负对数似然函数(torch.nn.NLLLoss)和交叉熵损失函数(torch.nn.CrossEntropyLoss)
- java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x0
- Python入门 类型转换
- 分析N沟道MOS管和P沟道MOS管在电路中的详细应用
- 如何在Windows DOS环境下格式化硬盘
- 99、插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法...
- VC6中工具条的新特色 (转)
- WIN键 锁定、解锁