什么是label

Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node, RC(ReplicationController)/RS(ReplicaSet)等。
一个资源如果需要找到其它关联的资源比如rc匹配pod、deployment匹配rs都是通过selector选择对应的lable达到关联其它对象的目的。

k8s对象的label在资源的metadata定义,例如之前学习过的deplyment定义文件

标签的增删改查

label查询

  1. #查询某一类资源或者指定某个资源查询其label信息
  2. [root@k8s-01 ~]# kubectl get deployment --show-labels
  3. NAME READY UP-TO-DATE AVAILABLE AGE LABELS
  4. nginx-d 3/3 3 3 2d21h app=nginx
  5. wordpress 1/1 1 1 49d app=wordpress,tier=frontend
  6. wordpress-mysql 1/1 1 1 49d app=wordpress,tier=mysql
  7. You have new mail in /var/spool/mail/root
  8. [root@k8s-01 ~]# kubectl get deployment nginx-d --show-labels
  9. NAME READY UP-TO-DATE AVAILABLE AGE LABELS
  10. nginx-d 3/3 3 3 2d21h app=nginx
  11.  
  12. [root@k8s-01 ~]# kubectl get pods --show-labels
  13. NAME READY STATUS RESTARTS AGE LABELS
  14. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684
  15. nginx-d-659bf7c684-9l9jk 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684
  16. nginx-d-659bf7c684-tmtkl 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684
  17. wordpress-69c467c658-r7c45 1/1 Running 11 49d app=wordpress,pod-template-hash=69c467c658,tier=frontend-pod
  18. wordpress-mysql-6c696cddc9-r6dvx 1/1 Running 15 42d app=wordpress,pod-template-hash=6c696cddc9,tier=mysql-pod
  19. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  20. NAME READY STATUS RESTARTS AGE LABELS
  21. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684

label的增加  删除  修改

  1. #指定对象label的添加和删除,添加使用key=value,删除keu-,修改key=value --overwrite
  2. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  3. NAME READY STATUS RESTARTS AGE LABELS
  4. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684
  5. [root@k8s-01 ~]#
  6. [root@k8s-01 ~]# kubectl label pods nginx-d-659bf7c684-22nc8 test=label
  7. pod/nginx-d-659bf7c684-22nc8 labeled
  8. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  9. NAME READY STATUS RESTARTS AGE LABELS
  10. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684,test=label
  11. [root@k8s-01 ~]# kubectl label pods nginx-d-659bf7c684-22nc8 test-
  12. pod/nginx-d-659bf7c684-22nc8 labeled
  13. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  14. NAME READY STATUS RESTARTS AGE LABELS
  15. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684
  16. [root@k8s-01 ~]# kubectl label pods nginx-d-659bf7c684-22nc8 test=label1
  17. pod/nginx-d-659bf7c684-22nc8 labeled
  18. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  19. NAME READY STATUS RESTARTS AGE LABELS
  20. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684,test=label1
  21. [root@k8s-01 ~]# kubectl label pods nginx-d-659bf7c684-22nc8 test=label2
  22. error: 'test' already has a value (label1), and --overwrite is false
  23. [root@k8s-01 ~]# kubectl label pods nginx-d-659bf7c684-22nc8 test=label2 --overwrite
  24. pod/nginx-d-659bf7c684-22nc8 labeled
  25. [root@k8s-01 ~]# kubectl get pods nginx-d-659bf7c684-22nc8 --show-labels
  26. NAME READY STATUS RESTARTS AGE LABELS
  27. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d20h app=nginx,pod-template-hash=659bf7c684,test=label2

一般建议k8s对象的label在定义文件中进行定义和修改

nodeselector

nodeselector是pod的专有的选择器,在资源定义文件中可以指定pod在哪些node节点上创建。不配置该参数的话k8s会根据自身算法选择相应的node来部署pod

不配置nodeselector情况下pod的分布,如果有多个node则pod一定分布在多个pod上。

  1. [root@k8s-01 ~]# kubectl get deployment -o wide
  2. NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
  3. nginx-d 3/3 3 3 2d21h nginx nginx:1.18 app=nginx
  4. [root@k8s-01 ~]# kubectl get pod -o wide|grep nginx-d
  5. nginx-d-659bf7c684-22nc8 1/1 Running 1 2d21h 10.244.2.52 k8s-03 <none> <none>
  6. nginx-d-659bf7c684-9l9jk 1/1 Running 1 2d21h 10.244.2.53 k8s-03 <none> <none>
  7. nginx-d-659bf7c684-tmtkl 1/1 Running 1 2d21h 10.244.1.71 k8s-02 <none> <none>

查询环境node信息,给node打上label

  1. [root@k8s-01 ~]# kubectl get nodes --show-labels
  2. NAME STATUS ROLES AGE VERSION LABELS
  3. k8s-01 Ready master 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
  4. k8s-02 Ready <none> 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-02,kubernetes.io/os=linux
  5. k8s-03 Ready <none> 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-03,kubernetes.io/os=linux
  6. [root@k8s-01 ~]# kubectl label nodes k8s-02 selectortest=k8s-02
  7. node/k8s-02 labeled
  8. [root@k8s-01 ~]# kubectl get nodes --show-labels
  9. NAME STATUS ROLES AGE VERSION LABELS
  10. k8s-01 Ready master 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
  11. k8s-02 Ready <none> 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-02,kubernetes.io/os=linux,selectortest=k8s-02
  12. k8s-03 Ready <none> 61d v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-03,kubernetes.io/os=linux

deployment定义文件中pod部分使用nodeselector指定node创建Pod

  1. #pod对象定义中指定nodeSelector后pod调度的效果
  2. [root@k8s-01 ~]# kubectl get deployment
  3. NAME READY UP-TO-DATE AVAILABLE AGE
  4. wordpress 1/1 1 1 49d
  5. wordpress-mysql 1/1 1 1 49d
  6. [root@k8s-01 ~]# kubectl get deployment|grep nginx
  7. [root@k8s-01 ~]# kubectl create -f deployment_demo.yml
  8. deployment.apps/nginx-d created
  9. [root@k8s-01 ~]# kubectl get deployment|grep nginx
  10. nginx-d 0/3 3 0 3s
  11. [root@k8s-01 ~]# kubectl get pods -o wide|grep nginx-d
  12. nginx-d-8668fb97b9-7tw25 1/1 Running 0 43s 10.244.1.75 k8s-02 <none> <none>
  13. nginx-d-8668fb97b9-9hfmb 1/1 Running 0 43s 10.244.1.74 k8s-02 <none> <none>
  14. nginx-d-8668fb97b9-vlzgt 0/1 ContainerCreating 0 43s <none> k8s-02 <none> <none>

k8s入门_label标签、nodeSelector的更多相关文章

  1. K8s 入门

    中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...

  2. 反手来个K8S入门到跑路

    layout: post title: 反手来个K8S入门到跑路 category: linux date: 2019-06-09 tags: linux k8s 反手来个K8S入门到跑路 前言 放假 ...

  3. k8s入门你至少需要会哪些

    body { margin: 0; overflow: auto; font: normal 14px Verdana; background: rgba(255, 255, 255, 1); pad ...

  4. k8s入门系列之guestbook快速部署

    k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...

  5. k8s入门系列之扩展组件(一)DNS安装篇

    DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...

  6. k8s入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  7. k8s 入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  8. k8s入门之集群搭建(二)

    一.准备三台节点 从上篇文章 k8s入门之基础环境准备(一)安装的Ubuntu虚拟机克隆出三台虚拟机,如图所示 启动这三台虚拟机节点,分别做如下配置 虚拟机名称 IP HostName k8sMast ...

  9. 前端入门2-HTML标签

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...

  10. K8S调度之标签选择器

    Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod 应 ...

随机推荐

  1. 手把手教你搭建Windows 搭建Prometheus + Grafana + Jmeter可视化监控平台

    下载安装包 Prometheus windows_exporter Grafana 下载地址:https://share.weiyun.com/D9sdiWoC 工作原理 Exporter 监控工具, ...

  2. fabric学习笔记5

    fabric学习笔记5 20201303张奕博 2023.1.15 fabric中的docker命令 1.查看本机的镜像列表 docker images 2.拉取镜像 docker pull hype ...

  3. Deer_GF之【AssetsHotfix】和【AssetsNative】文件夹的区别

    Hi,今天介绍一下Deer_Gf里的[AssetsHotfix]和[AssetsNative]文件夹的区别:       框架介绍请移步[Deer_GF之框架介绍] 一.[AssetsHotfix] ...

  4. 窗口退出&初始化

    class Test(QtWidgets.QMainWindow, Ui_dlg): def closeEvent(self, e): #to do super().closeEvent(e) def ...

  5. docker容器SSH服务自启动

    使用ubuntu容器,会在容器内安装ssh服务,但是会发现当容器重启后,如何实现ssh服务自动重启呢?可以使用Dockerfile参看此处 ,本文介绍一种在docker容器中进行配置的方法 安装ssh ...

  6. xmind某一天突然打不开了

    某一天发现xmind双击后,应用未启动 感谢博主:https://www.cnblogs.com/helloLuoLuo/p/11926530.html 将安装目录下的两个ini文件 将文件中将App ...

  7. beego框架中的注解路由不生效的问题

    在测试中发现 使用注解路由的话 项目需要在gopath路径下的src下才可以 并且配置文件的 runmode = dev 然后执行bee run 在路由文件夹里才会生成commentRouter文件 ...

  8. make 编译笔记

    make 文件位置 默认的make install指令执行之后,会将程序安装到 /usr/local/bin , /usr/local/lib .也可以通过 参数 --prefix 自定义路径,例如 ...

  9. DP5340:国产兼容替代CS5340立体声音频A/D转换器芯片

    DP5340简介 DP5340 是一款完整的采样.模数音频信号转换. 抗混叠滤波的芯片,在串行格式下以每声道最高 200kHz 采样率高达 24 位宽,并支持大部分的音频 数据格式. DP5340 基 ...

  10. 使用fopen,fscanf等函数报安全性问题的错误,unsafe...

    方法一:项目-属性-C/C++-预处理器定义,添加_CRT_SECURE_NO_WARNINGS. 方法二:使用fopen_s,fscanf_s等安全函数.