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环境 ...
随机推荐
- Jmeter(三十九) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 上篇(详解教程)
------------------------------------------------------------------- 转载自:北京-宏哥 https://www.cnblogs.co ...
- android HttpURLConnection ,HttpClient设置Cookie
上一阶段项目设计使用cookie信息实现登录访问功能,在实现过程遇到一些问题,下面整理一下: 首先,client想使用cookie,必须访问一次server从会话中获取cookie信息,然后在设置回去 ...
- [NepCTF2022]中学数学
中学数学 p.q挣扎很久没分解出来,wp出来了赶紧复现试试. 题目 from gmpy2 import * from Crypto.Util.number import * from secret i ...
- vue基础 · 过滤器(3)
过滤器:filter Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以使用在2个地方:{{ }} 插值 和 v-bind 表达式(后者从 2.1.0+ 开始支持) 过滤器分为 ...
- vue界面显示无效的token
返回登陆界面,重新登陆 登陆成功
- GitLab + Rainbond 打造Devops流程
GitLab + Rainbond 打造Devops流程 流程 预设项目有两个分支,dev和master dev分支对应dev环境 master分支对应test环境和prod环境 开发在dev中编写代 ...
- Software--电商平台系统--P2 支撑基础设施 Infrastructure
2018-01-11 18:19:49 架构 客户体验 Ajax 交互技术. 网站快速加载且响应灵敏,则应该缓存商品数据. 灵活的缓存机制,以支持任何类型的存储(即分布式存储或内存中存储). 日志功 ...
- RMAN架构
关于 RMAN 环境 Recovery Manager 环境由在备份和恢复策略中发挥作用的各种应用程序和数据库组成. RMAN 环境的组件 组件 描述 RMAN 客户端 管理目标数据库的备份和恢复操作 ...
- C# 调用https接口 安全证书问题 解决方法
原文链接: https://blog.csdn.net/lizaijinsheng/article/details/127321758 说明: 如果是用https的话,由于没有证书,会报错:基础连接已 ...
- C# 俩个字符串数据进行对比取出不同的数据
string sel_JD = "电冰箱,电热水壶,客厅空调,饮水机,"; string Operation_JD = "电冰箱,电热水壶,电动汽车,"; Li ...