k8s中label和selector的基本概念以及使用方法
概述
在k8s中有一个非常核心的概念,就是label(标签),以及对label的使用,label selector
label(标签)
定义:
标签这个概念和现实生活中的标签其实没有什么区别,如,苹果是水果,冰箱是家电,都是一种标签,类似的。在k8s中,一个label就是key/value对如:app:nginx
这个标签可以有使用者自己定义,然后附加到k8s中的资源对象上,比如,pod,node上等等
特性:
label有如下的一些特点:
- label可以被附加到各种资源对象上
- 一个资源对象可以定义任意数量的label
- 同一个label可以被添加到任意数量的资源对象上
label selector(标签选择器):
当我们给一组对象,比如有10个pod,打上不同的标签之后,当我们需要选择期中的部分,或者全部作为使用目标的时候,就可以使用label selector来实现这个操作,标签选择器中指定具体的过滤的条件,然后就能在10个pod中过滤出满足我们要求的这些pod
定义标签:
创建一个pod的定义文件中,指定标签
apiVersion: v1
kind: Namespace
metadata:
name: ns-label
spec: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-label
labels:
app: nginx-label
namespace: ns-label
spec:
replicas: 2
selector:
matchLabels:
app: nginx
env: label
template:
metadata:
labels:
app: nginx
env: label
spec:
containers:
- name: label-nginx
image: nginx:1.15
ports:
- containerPort: 80
restartPolicy: Always
在模板中,通过以下方式来定义label
metadata:
labels:
app: nginx
env: label
创建pod并查看标签,可以看到不同的标签
[root@k8s-master01 ns-slx-study]# kubectl get pod --show-labels -n ns-label
NAME READY STATUS RESTARTS AGE LABELS
nginx-label-c4758cff4-h8bz5 1/1 Running 0 7m2s app=nginx,env=label,pod-template-hash=c4758cff4
nginx-label-c4758cff4-ltkrq 1/1 Running 0 7m2s app=nginx,env=label,pod-template-hash=c4758cff4
[root@k8s-master01 ns-slx-study]#
label selector:
我们可以通过标签选择来筛选出满足我们的要求的对象。所谓的标签选择就是过滤,有几种方式:
#过滤出ns-lanel namespace下所有包含env=label的pod
[root@k8s-master01 ns-slx-study]# kubectl -n ns-label get pod -l env=label --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-label-c4758cff4-h8bz5 1/1 Running 0 11m app=nginx,env=label,pod-template-hash=c4758cff4
nginx-label-c4758cff4-ltkrq 1/1 Running 0 11m app=nginx,env=label,pod-template-hash=c4758cff4
几个常用命令,我就不演示了:
#在ns(命名空间):ns-label下,过滤出包含env=nginx,env=label的pod
kubectl -n ns-label get pod -l 'env=nginx,env=label' --show-labels
#在ns(命名空间):ns-label下,过滤出包含env=ngin或者env=label或者env=ssd的pod
kubectl -n ns-label get pod -l 'env in (nginx,label,ssd)' --show-labels
#在ns(命名空间):ns-label下,过滤出包含env=ngin或者env=label或者env=ssd,同时app=nginx的pod
kubectl -n ns-label get pod -l 'app=nginx,env in (nginx,label,ssd)' --show-labels
#在ns(命名空间):ns-label下,过滤出不包含env=ngin或者env=label或者env=ssd的pod
kubectl -n ns-label get pod -l 'env notin (nginx,label,ssd)' --show-labels
#在ns(命名空间):ns-label下,过滤出不是env=nginx,env=label的pod
kubectl -n ns-label get pod -l 'env!=nginx,env!=label' --show-labels
基于集合匹配的方式:
selector:
matchLabels:
app: nginx
env: online
matchExpressions:
- {key: release, operator: In, values: [stable] }
- {key: app,operator: NotIn, values: [nginx02,nginx03] }
replicas: 1
template:
metadata:
labels:
app: nginx06
env: online
release: stable
语法:
matchExpressions:
- {key: release, operator: In, values: [stable] }
- {key: app,operator: NotIn, values: [nginx02,nginx03] }
k8s中label和selector的基本概念以及使用方法的更多相关文章
- k8s中label和label selector的基本概念及使用方法
1.概述 在k8s中,有一个非常核心的概念,就是label(标签),以及对label的使用,label selector. 本文档中,我们就来看看:1.什么是标签,2.如何定义标签,3.什么是标签选择 ...
- chrome插件编写中需要了解的几个概念和一些方法
1.插件文件结构 1.1.manifest.json 每一个扩展.可安装的WebApp.皮肤,都有一个JSON格式的manifest文件,里面存放重要的插件相关信息. 一个最基本的配置例子: { &q ...
- 在k8s中的基本概念
在k8s中的基本概念 一.Pod1. podk8s下最重要也最基本的概念,由一个根容器Pause和许多用户业务容器组成,是容器的载体. 2. pod的yaml定义格式及字段 apiVersion: v ...
- k8s中几个基本概念的理解,pod,service,deployment,ingress的使用场景
k8s 总体概览 前言 Pod 副本控制器(Replication Controller,RC) 副本集(Replica Set,RS) 部署(Deployment) 服务(Service) ingr ...
- k8s 中的 Pod 细节了解
k8s中Pod的理解 基本概念 k8s 为什么使用 Pod 作为最小的管理单元 如何使用 Pod 1.自主式 Pod 2.控制器管理的 Pod 静态 Pod Pod的生命周期 Pod 如何直接暴露服务 ...
- k8s中yaml文常见语法
在k8s中,所有的配置都是 json格式的.但为了读写方便,通常将这些配置写成yaml 格式,其运行的时候,还是会靠yaml引擎将其转化为json,apiserver 也仅接受json的数据类型. y ...
- 【Kubernetes】在K8s中创建StatefulSet
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个 ...
- 在K8s中创建StatefulSet
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个 ...
- Kubernetes之在k8s中部署Java应用
部署好了k8s以后 部署参考https://www.cnblogs.com/minseo/p/12055731.html 怎么在k8s部署应用 项目迁移到k8s平台是怎样的流程 1,制作镜像 2,控制 ...
- Docker & k8s 系列三:在k8s中部署单个服务实例
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境 ...
随机推荐
- ID生成器实现方式的优缺点比较以及最优的ID生成器原理剖析
引用:https://blog.csdn.net/luoyang_java/article/details/90679456 本文的重点主要是ID发号器相关的知识,介绍了雪花算法,以及他的基本原理和实 ...
- 305-基于XC7Z020的AI 人工智能 可编程相机
基于XC7Z020的AI 人工智能 可编程相机 一.产品概述 本产品为一款基于FPGA soc的支持二次开发的智能相机平台,基于大量已有的图形计算库和我们开发的支持库,用户可以使用python语言,轻 ...
- 手写JS深拷贝
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- t:datagrid 行编辑 类型备份
如编辑文本类型: <t:dgCol extendParams="editor:'text'" /> 如编辑数值类型: <t:dgCol extendParams= ...
- 专业家庭影音服务器-软件平台及安装-Ubuntu+Docker+Portainer+宝塔linux面板
服务器安装什么系统呢? 如果说操作简单考虑和黑群晖(应为没有买群晖的硬件,自己没法装正版系统), 还是各种NAS系统,TrunNAS.URaidn OS,...一查种类还真的不少,简直是选择恐惧症,总 ...
- B - WeirdSort
B - WeirdSort 思路:经过认真的审题,你会发现,这只是个冒泡的变形,我们建立两个数组,然后用一个数组里面的数字确定位置,然后冒泡就行了.最后抖机灵用了个is_sorted,判断数组里面数字 ...
- vue + antV G6 实现流程图完整代码 (antv G6 流程图)
效果如下: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 写入自定义 ASP.NET Core 中间件
中间件是一种装配到应用管道以处理请求和响应的软件. ASP.NET Core 提供了一组丰富的内置中间件组件,但在某些情况下,你可能需要写入自定义中间件. 备注:本主题介绍如何编写基于约定的中间件. ...
- mybatis lombok 报错: java: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor
1. 报错原因:jdk版本太高,lombok版本太低 2. 解决办法:安装更高版本的依赖包,可以去Maven Repository: lombok去查:https://mvnrepository.co ...
- swift 应用内切换语言
1:在project info中的locations添加需要的语言 2:创建Localizable.strings文件 点击右边的localization勾选需要的语言 3:创建InfoPlist.s ...