首页 > 其他分享 >k8s标签的增删改查和选择器

k8s标签的增删改查和选择器

时间:2024-02-28 23:24:46浏览次数:22  
标签:kubectl Service 标签 app 改查 k8s Pods 选择器

在 Kubernetes(K8s)中,标签(Label)是与资源对象相关联的键值对,用于实现多维度的资源分组管理功能。下面是关于 Kubernetes 标签的增删改查操作的简要说明:

  1. 查询标签 (查)

    要查看资源对象的标签,可以使用 kubectl get 命令并加上 --show-labels 选项。例如,要查看所有节点的标签,可以运行:

    bash复制代码
    
    kubectl get nodes --show-labels
    

    这将列出集群中所有节点的详细信息,包括它们的标签。

  2. 添加标签 (增)

    使用 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 标签。

  3. 更新标签 (改)

    更新标签实际上是通过删除现有标签并添加新标签来实现的。kubectl label 命令同样可以用于更新标签。例如,将 my-podapp 标签的值从 web 更改为 api

    bash复制代码
    
    kubectl label pods my-pod app=api --overwrite
    

    --overwrite 标志确保如果标签已经存在,则将其值更新为新值。

  4. 删除标签 (删)

    使用 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 选择器的一些常见使用场景:

  1. Service 的流量路由:

    • Service 使用选择器来定义哪些 Pods 的流量应该被路由。通过为 Service 指定一个标签选择器,Kubernetes 能够将流量正确地路由到匹配的 Pods。
    • 例如,一个 Service 可能选择所有具有 app=web 标签的 Pods,并将流量路由到这些 Pods。
  2. ReplicaSet 和 Deployment 的管理:

    • ReplicaSet 和 Deployment 控制器使用选择器来管理具有特定标签的 Pod 副本。
    • 通过选择器,控制器能够知道哪些 Pods 属于其管理范围,并根据需要扩展或缩减 Pod 数量。
  3. 资源的过滤和发现:

    • 使用 kubectl 命令行工具时,你可以通过选择器来过滤和发现资源对象。
    • 例如,kubectl get pods -l app=web 命令将只显示具有 app=web 标签的 Pods。
  4. Ingress 的路由配置:

    • Ingress 资源可以使用选择器来配置路由规则和流量转发。
    • 通过选择器,Ingress 能够识别哪些 Service 或 Pods 应该接收特定的外部流量。

选择器的类型

在 Kubernetes 中,有两种类型的选择器:等式选择器(Equality-Based Selector)和集合选择器(Set-Based Selector)。

  • 等式选择器:使用等号 = 来匹配标签的值。例如,app=web 选择所有具有 app 标签且值为 web 的资源对象。
  • 集合选择器:使用 innotinexistsdoesnotexist 等操作符来匹配标签的值。例如,env in (production, staging) 选择所有具有 env 标签且其值为 productionstaging 的资源对象。

选择器的应用

在实际应用中,你通常会在创建资源对象(如 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 应用。

标签:kubectl,Service,标签,app,改查,k8s,Pods,选择器
From: https://www.cnblogs.com/ydswin/p/18042293

相关文章

  • k8s是如何保障滚动升级时下线的pod不被访问
    Kubernetes(k8s)通过一系列机制保障在滚动升级时,下线的Pod不再被访问。以下是一些主要的保障措施:Service抽象:在Kubernetes中,Pod通常不是直接暴露给外部访问的,而是通过Service来抽象和暴露。Service提供一个稳定的网络端点,无论背后的Pod如何变化,Service的IP和端......
  • 记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)
    故事开始第1关:【流量重定向到/】第2关:【应用返回302,重定向到/,引入503错误】第3关:【静态资源访问遇到503问题】第4关:【静态资源访问遇到403问题】第5关:【WebSocketclosewithstatuscode1006】最后效果故事开始如果你配置过Ingress,那你一定遇到过......
  • k8s hpa自定义指标
    参考链接 https://blog.csdn.net/fly910905/article/details/105375822这个大佬写的挺好的。不再搬运了,仅不不懂的地方记录一下。哈哈哈模拟增加memory的脚本解释一下,因为我也第一次见到这么玩,命令也是新鲜#!/bin/bashmkdir/tmp/memorymount-ttmpfs-osize=40Mt......
  • K8s Controller 开发指南
    一个Kubernetes控制器是一个主动的协调过程,它会监视某个对象的期望desired状态,并且还会监视实际current状态,然后不断的尝试使当前的实际状态更接近期望的状态。最简单的实现方式是一个循环:for{desired:=getDesiredState()current:=getCurrentState()makeCha......
  • socket io 微服务 k8s 解决方案
    spingboot+socketio依赖对于socketio-client2.x版本<dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</artifactId><version>1.7.19</version></dependency>注册Naco......
  • Mybatis系列之(五)Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿
    Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿绝对路径:可能出现机器中没有D盘的情况,需要修改代码相对路径:部署项目后src就不存在了,需要修改代码基于以上两点,读取配置文件仅通过图中的两种方式进行读取构建者模式:专业的事儿由专业的人来做工厂模式:需要新的类的对......
  • 在K8S中,Pod优雅终止过程是什么?
    在Kubernetes(K8s)中,Pod的优雅终止过程是一个有序的过程,旨在确保Pod中运行的应用程序能够平滑关闭,释放资源,并尽可能减少因突然关闭带来的数据丢失和服务中断。以下是Pod优雅终止的一般步骤:删除Pod请求用户或控制器发出删除Pod的请求,比如通过kubectldeletepod<pod-name>......
  • 在K8S中,helm是什么?如何使用?
    在Kubernetes(K8s)中,Helm是一个用于简化Kubernetes应用程序部署和管理的包管理工具。它采用了声明式配置和模板化的概念,使得Kubernetes资源的打包、安装、升级、回滚等操作变得更加方便和高效。Helm主要由两个核心组件构成:HelmCLI(命令行接口):提供了一系列命令,让用户能够在本......
  • 在K8S中,etcd数据库中数据如何更改?
    在Kubernetes(K8s)中,etcd中的数据更改主要发生在以下几个场景中:创建、更新和删除Kubernetes资源对象:当用户在Kubernetes中创建(POST)、更新(PUT)或删除(DELETE)一个资源对象(如Pod、Service、Deployment等)时,KubernetesAPI服务器会将这些更改转换为对etcd的相应操作。API服务器会将更改......
  • 在K8S中,etcd是什么类型数据库?
    在Kubernetes(K8s)中,etcd是一个高度可靠、分布式的键值存储数据库,用于存储集群的共享配置和服务发现信息。etcd在Kubernetes架构中扮演着核心组件的角色,是集群状态数据的关键存储后端。1.etcd的类型:键值存储(Key-ValueStore):etcd最基本的功能是作为键值存储,它允许用户存储和......