一,为什么要为node指定label?

通常scheduler会把pod调度到所有可用的Node,有的情况下我们希望能把 Pod 部署到指定的 Node,
例如:
有的Node上配备了速度更快的SSD磁盘
有的Node上配备了性能更强的GPU,
这样pod中的应用才能更好的发挥node的硬件优势
 

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,用label让pod在指定的node上运行:

1,查看各个node的label:
[root@kubemaster k8s]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
kubemaster Ready master 27h v1.18.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubemaster,kubernetes.io/os=linux,node-role.kubernetes.io/master=
node1 Ready <none> 72m v1.18.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux

说明:各node的label都是系统默认的,还没有我们手动添加的

 
2,给一个node添加label
格式:   
kubectl label nodes <node-name> <label-key>=<label-value>

添加

[root@kubemaster k8s]# kubectl label node kubemaster apptype=web1
node/kubemaster labeled
[root@kubemaster k8s]# kubectl label node node1 apptype=web2
node/node1 labeled
查看效果:
[root@kubemaster k8s]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
kubemaster Ready master 28h v1.18.3 apptype=web1beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubemaster,kubernetes.io/os=linux,node-role.kubernetes.io/master=
node1 Ready <none> 75m v1.18.3 apptype=web2,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
3,修改label
[root@kubemaster k8s]# kubectl label node node1 apptype=noweb --overwrite
node/node1 labeled

查看效果:

[root@kubemaster k8s]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
kubemaster Ready master 28h v1.18.3 apptype=web1,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubemaster,kubernetes.io/os=linux,node-role.kubernetes.io/master=
node1 Ready <none> 85m v1.18.3 apptype=noweb,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
4,删除label
#格式:
kubectl label nodes <node-name> <label-key>-

删除

[root@kubemaster k8s]# kubectl label nodes node1 apptype-
node/node1 labeled

三,如何把Pod 部署到指定label的 Node:

在yaml文件中添加:
    spec:段下面
      nodeSelector:
apptype: web
看一个例子:
[root@kubemaster k8s]# more nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-demo
spec:
replicas: 2
selector:
app: nginx-demo
template:
metadata:
labels:
app: nginx-demo
spec:
nodeSelector:
apptype: web
containers:
- name: nginx-demo
image: nginx
ports:
- containerPort: 80
查看当前node的label
[root@kubemaster k8s]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
kubemaster Ready master 28h v1.18.3 apptype=noweb,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubemaster,kubernetes.io/os=linux,node-role.kubernetes.io/master=
node1 Ready <none> 107m v1.18.3 apptype=web,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
运行:
[root@kubemaster k8s]# kubectl apply -f nginx-rc.yaml
replicationcontroller/nginx-demo created
查看效果:
[root@kubemaster k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-demo-b5vwt 1/1 Running 0 15m 172.16.166.136 node1 <none> <none>
nginx-demo-j8n7d 1/1 Running 0 15m 172.16.166.135 node1 <none> <none>

四,查看kubernetes的版本

[root@kubemaster ~]# kubelet --version
Kubernetes v1.18.3
[root@kubemaster ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40",
GitTreeState:"clean", BuildDate:"2020-05-20T12:49:29Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64”}

五,查看linux的版本

[root@kubemaster ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@kubemaster ~]# uname -r
4.18.0-193.el8.x86_64

kubernetes:用label让pod在指定的node上运行(kubernetes1.18.3)的更多相关文章

  1. centos7下kubernetes(9。kubernetes中用label控制pod得位置)

    Kubernetes通过label实现将pod运行在指定得node上. 默认配置下,Schesuler将pod调度到所有可用得node,有时候我们希望将pod部署到指定得node,比如将有大量磁盘I/ ...

  2. kubernetes 利用label标签来绑定到特定node运行pod

    利用label标签来绑定到特定node运行pod: 不如将有大量I/O的pod部署到配置了ssd的node上或者需要使用GPU的pod部署到某些安装了GPU的节点上 查看节点的标签: kubectl ...

  3. Kubernetes对Pod调度指定Node以及Node的Taint 和 Toleration

    由于博客园不支持markdown,推荐以下url阅读: 原创url:https://blog.csdn.net/weixin_42495873/article/details/103364868 ## ...

  4. kubernetes进阶之三:Pod

    一:Pod 是什么 Pod是Kubernetes的最重要最基本的概念.它是能够被创建,调度和管理的最小部署单元.一个Pod代表集群中一个运行的进程. 二:Pod的组成 一个Pod由一个特殊的根容器Pa ...

  5. 三、Kubernetes之深入了解Pod

      1.yaml格式的Pod配置文件内容及注解 深入Pod之前,首先我们来了解下Pod的yaml整体文件内容及功能注解. 如下: # yaml格式的pod定义文件完整内容: apiVersion: v ...

  6. kubernetes 实践四:Pod详解

    本篇是关于k8s的Pod,主要包括Pod和容器的使用.Pod的控制和调度管理.应用配置管理等内容. Pod的定义 Pod是k8s的核心概念一直,就名字一样,是k8s中一个逻辑概念.Pod是docekr ...

  7. 用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)

    默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Nod ...

  8. kubernetes yaml格式的Pod配置文件

    kubernetes yaml文件解析 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必 ...

  9. 用 label 控制 Pod 的位置

    默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Nod ...

随机推荐

  1. 【GDKOI2004】汉诺塔

    题目描述 古老的汉诺塔问题是这样的:用最少的步数将N个半径互不相等的圆盘从1号柱利用2号柱全部移动到3号柱,在移动的过程中小盘要始终在大盘的上面. 现在再加上一个条件:不允许直接把盘从1号柱移动到3号 ...

  2. Django 中 a href标签 使用方法 跳转页面(Django四)

    上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...

  3. 浅谈Charles —— 青花瓷

    Charles -- 青花瓷 网络抓包工具 可以拦截 iPhone/Android 手机中 App 的非加密网络请求数据 使用 手机&电脑在同一个局域网 确保电脑能够通过路由器访问互联网 电脑 ...

  4. 再不迁移到Material Design Components 就out啦

    翻译自国外文档加自己理解 原文 我们最近宣布了 Material Design Components(MDC)1.1.0 ,这是一个库更新,为您的 Android 应用程序带来了 Material T ...

  5. 被喷了!聊聊我开源的RPC框架那些事

    前段时间利用业余时间写了一个简单的 RPC 框架,花费了不少精力.开源出来之后,少部分不太友好的技术人站在上帝视角说了风凉话.就很难受,兄弟,谁还没有一个玻璃心. 简单吐槽一波,给大家聊聊关于 gui ...

  6. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

  7. Book of Shaders 02 - 矩阵:二维仿射变换练习

    0x00 一些废话 如果要深入学习 CG (Computer Graphics,计算机图形学),必然要学习相关的数学知识.CG 涉及到多个不同的领域,根据所研究领域的不同,也会涉及到不同的数学分支.但 ...

  8. jenkins结合cygwin软件实现从centos发布代码rsync到windows server2019的过程

    jenkins结合cygwin软件实现从centos发布代码rsync到windows server2019的过程 1.下载cygwin这个软件打开https://cygwin.com/install ...

  9. 如何使用 C# 中的 ValueTask

    在 C# 中利用 ValueTask 避免从异步方法返回 Task 对象时分配 翻译自 Joydip Kanjilal 2020年7月6日 的文章 <How to use ValueTask i ...

  10. 提效工具-python解析xmind文件及xmind用例统计

    现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...