k8s标签的增删改查和选择器
在 Kubernetes(K8s)中,标签(Label)是与资源对象相关联的键值对,用于实现多维度的资源分组管理功能。下面是关于 Kubernetes 标签的增删改查操作的简要说明:
查询标签 (查)
要查看资源对象的标签,可以使用
kubectl get命令并加上--show-labels选项。例如,要查看所有节点的标签,可以运行:bash复制代码 kubectl get nodes --show-labels
这将列出集群中所有节点的详细信息,包括它们的标签。
添加标签 (增)
使用
kubectl label命令可以为资源对象添加标签。例如,给名为my-pod的 Pod 添加一个app=web的标签:bash复制代码 kubectl label pods my-pod app=web
同样,你也可以使用选择器一次性为多个资源对象添加标签:
bash复制代码 kubectl label pods -l env=production version=v1
上述命令将为所有具有
env=production标签的 Pod 添加version=v1标签。更新标签 (改)
更新标签实际上是通过删除现有标签并添加新标签来实现的。
kubectl label命令同样可以用于更新标签。例如,将my-pod的app标签的值从web更改为api:bash复制代码 kubectl label pods my-pod app=api --overwrite
--overwrite标志确保如果标签已经存在,则将其值更新为新值。删除标签 (删)
使用
kubectl label命令的--overwrite=true和不指定新值的方式可以删除标签。例如,删除my-pod上的app标签:bash复制代码 kubectl label pods my-pod app-
注意在标签键
app后面有一个连字符-,这表示删除该标签。同样,你也可以使用选择器删除多个资源对象的标签:
bash复制代码 kubectl label pods -l env=staging app-
这将删除所有具有
env=staging标签的 Pod 上的app标签。
在 Kubernetes 中,选择器(Selector)是一个核心概念,它允许你根据标签(Label)来识别和选择资源对象,如 Pods、Services、Deployments 等。选择器在 Kubernetes 中有多种使用场景,如路由流量、管理副本集、发现服务等。
以下是 Kubernetes 选择器的一些常见使用场景:
Service 的流量路由:
- Service 使用选择器来定义哪些 Pods 的流量应该被路由。通过为 Service 指定一个标签选择器,Kubernetes 能够将流量正确地路由到匹配的 Pods。
- 例如,一个 Service 可能选择所有具有
app=web标签的 Pods,并将流量路由到这些 Pods。
ReplicaSet 和 Deployment 的管理:
- ReplicaSet 和 Deployment 控制器使用选择器来管理具有特定标签的 Pod 副本。
- 通过选择器,控制器能够知道哪些 Pods 属于其管理范围,并根据需要扩展或缩减 Pod 数量。
资源的过滤和发现:
- 使用
kubectl命令行工具时,你可以通过选择器来过滤和发现资源对象。 - 例如,
kubectl get pods -l app=web命令将只显示具有app=web标签的 Pods。
- 使用
Ingress 的路由配置:
- Ingress 资源可以使用选择器来配置路由规则和流量转发。
- 通过选择器,Ingress 能够识别哪些 Service 或 Pods 应该接收特定的外部流量。
选择器的类型
在 Kubernetes 中,有两种类型的选择器:等式选择器(Equality-Based Selector)和集合选择器(Set-Based Selector)。
- 等式选择器:使用等号
=来匹配标签的值。例如,app=web选择所有具有app标签且值为web的资源对象。 - 集合选择器:使用
in、notin、exists、doesnotexist等操作符来匹配标签的值。例如,env in (production, staging)选择所有具有env标签且其值为production或staging的资源对象。
选择器的应用
在实际应用中,你通常会在创建资源对象(如 Service、Deployment 等)时指定选择器。这可以通过在 YAML 或 JSON 配置文件中设置 selector 字段来实现。
例如,在创建一个 Service 时,你可能会有如下的配置:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 9376
在这个例子中,selector 字段定义了哪些 Pods 应该被这个 Service 所选择。在这个例子中,所有具有 app=web 标签的 Pods 将被这个 Service 所选择,并且流量将被路由到这些 Pods 的 9376 端口。
总之,选择器是 Kubernetes 中非常重要的一个概念,它允许你基于标签对资源对象进行精细化的管理和路由。通过合理使用选择器,你可以更加灵活地管理和部署你的 Kubernetes 应用。
k8s标签的增删改查和选择器的更多相关文章
- 使用JS对HTML标签进行增删改查
以下为通过JS对li标签进行简单的增删改查: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
- Mybatis的简单增删改查
刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...
- Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库
一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...
- HTML DOM(二):节点的增删改查
上一篇讲述了DOM的基本知识,从其得知,在DOM眼中,HTML的每个成分都可以看作是节点(文档节点.元素节点.文本节点.属性节点.注释节点,其中,属性节点是属于元素节点),本篇的内容就是通过DOM对这 ...
- 超详细的DOM操作(增删改查)
操作DOM的核心就是增删改查 原文地址:https://jianshu.com/p/b0aa846f4dcc 目录 一.节点创建型API 1.1 createElement 1.2 createTex ...
- DOM的操作(增删改查)
操作DOM的核心就是增删改查 目录 一.节点创建型API 1.1 createElement 1.2 createTextNode 1.3 cloneNode 1.4 createDocumentFr ...
- Batis-iBatis基本操作(增删改查)
Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20 CSDN博客 原文 http://blog.csdn.net/mazhaojuan/article/de ...
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
前言:出于某种原因,需要学习下Knockout.js,这个组件很早前听说过,但一直没尝试使用,这两天学习了下,觉得它真心不错,双向绑定的机制简直太爽了.今天打算结合bootstrapTable和Kno ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
随机推荐
- Win32汇编:字符串浮点数运算过程
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
- MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL
解析全局配置文件 启动流程分析 String resource = "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 read ...
- ChatGPT 火了,一大批开源平替也来了
ChatGPT 凭一己之力让全球为 AI 沸腾,引发了科技巨头之间的聊天机器人军备竞赛. 众所周知,ChatGPT 的背后技术是 GPT(Generative Pre-trained Transf ...
- 深入浅出Java多线程(五):线程间通信
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第五篇内容:线程间通信.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代编程实践中,多线程技术是提高程序 ...
- ESP8266的AT指令模块程序
最新代码可点击下载:ESP8266 模块代码 和以下代码实现方式不一致,更加自由可控 本段代码只是测试了esp8266作为服务器端使用,没有测试作为客户端使用. 没有超长延时等待或死循环等待AT指令反 ...
- Adoquery 简单的事务 编程 超级棒
1.记得 有一次 看 c#视频教程,发现了一个简单事务 处理的绝佳方法,就是 adoquery 其实是可以 同时执行多条 SQL 语句的, 当其中一条 SQL 语句失败了,那么其余 SQL 语句也会失 ...
- 【MFC学习二】CFileDialog导出文件
用CFileDialog导出文件,用户可指定文件名后缀等,感觉操作上比上文的 BROWSEINFO 更加人性化. //将数据项写入CSV文件 int PutCSVItemLine(FILE *file ...
- MySQL-报错提示:ERROR 2002 (HY000): Can't connect to local MySQL
场景:通过mysql -h localhost -u root -p 连接MySQL数据库时报错:ERROR 2002 (HY000): Can't connect to local MySQL ...
- 【framework】View添加过程
1 前言 WMS启动流程 中介绍了 WindowManagerService 的启动流程,本文将介绍 View 的添加流程,按照进程分为以下2步: 应用进程:介绍从 WindowManagerImpl ...
- Oracle Linux6下安装Oracle 12c实战
经过N次安装尝试吐血总结,希望对大家有所帮助,同时做下记录备忘: 总结:安装前的准备工作是关键!!!Check and recheck! 参考:http://docs.oracle.com/cd/E1 ...