首页 > 其他分享 >实战 k8s----标签

实战 k8s----标签

时间:2024-07-10 09:51:51浏览次数:7  
标签:-- 标签 ---- busyb learnK8s pod k8s iZ2ze3bpa0o5cw6gp42ry2Z

如果你对k8s还不了解,可以看下前文
k8s 实战 1 ---- 初识 (https://www.cnblogs.com/jilodream/p/18245222)
k8s 实战 2 ---- pod 基础 (https://www.cnblogs.com/jilodream/p/18284282)

什么是标签?
标签也就是Label,是作用在k8s的资源上的,用来记录的资源的状态,或元数据的一组数据。
label本质上就是一组键值对。
我们可以将其作用在pod,deployment、node等等资源上。
这一点和java语言中的注解非常像。我们可以通过注解来标记类或者方法或者属性,这些注解并不会直接改变类或者方法什么特性。而是由其它的方法
分析这些注解,从而做出符合需要的判断。
举个例子,假若我们的pod,由于某种需要,分别需要标记出是由谁在维护当前pod,我们就可以通过标签来记录这些信息。
话不多说,来看代码:
1、首先我们按照如下yaml模板,创建一个pod。
注意看metadata 标签下,新加了labels ,表示要添加的标签及其值。
我们这里增加用户(user)和模块 (module)两个标签,yaml文件如下:

 1 apiVersion: v1
 2 kind: Pod
 3 metadata:
 4   name: busyb-p
 5   labels: 
 6     user: happy
 7     module: order
 8 spec:
 9   containers: 
10     - image: docker.io/library/kuard-amd64:blue
11       name: bb-c
12       ports: 
13         - containerPort: 8080
14           name: http
15           protocol: TCP

创建好之后,我们可以追加参数的形式,查看pod中包含的标签
kubectl get xx --show-labels xx表示资源类型

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
2 NAME                              READY   STATUS    RESTARTS   AGE    LABELS
3 busyb-p                           1/1     Running   0          11s    module=order,user=happy

注意看,LABELS列即为我们添加的标签:module 和user
我们还可以在pod运行期时,手动的增删标签:
kubectl label xx xxx "标签key=标签value" xx表示资源类型 xxx表示资源名称
如先动态新增version标签,再修改version标签。注意修改时,需要追加参数( --overwrite),否则会修改不成功

 1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "version=dev"
 2 pod/busyb-p labeled
 3 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
 4 NAME                              READY   STATUS    RESTARTS   AGE    LABELS
 5 busyb-p                           1/1     Running   0          35m    module=order,user=happy,version=dev
 6 
 7 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "version=test" --overwrite
 8 pod/busyb-p labeled
 9 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
10 NAME                              READY   STATUS    RESTARTS   AGE    LABELS
11 busyb-p                           1/1     Running   0          47m    module=order,user=happy,version=test

如果要删除某个标签,kubectl label pod busyb-p "标签key-",如下:

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k label pod busyb-p "level-"
2 pod/busyb-p unlabeled
3 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# k get pods --show-labels
4 NAME                              READY   STATUS    RESTARTS   AGE    LABELS
5 busyb-p                           1/1     Running   0          71m    module=order,user=happy,version=product

在shell界面,如果标签太多,我们除了可以用管道追加grep的传统过滤办法,也可以使用k8s的过滤参数
kubectl get pods --selector="标签key=标签value"
也可以用-l 代替--selector

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods --selector="user=happy,module=order"
2 NAME      READY   STATUS    RESTARTS   AGE
3 busyb-p   1/1     Running   0          74m
4 
5 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods -l "user=happy,module=order"
6 NAME      READY   STATUS    RESTARTS   AGE
7 busyb-p   1/1     Running   0          76m

如果要显示某个指定的标签:
-L "标签key"

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z learnK8s]# kubectl get pods  -L "version" 
2 NAME                              READY   STATUS    RESTARTS   AGE    VERSION
3 busyb-p                           1/1     Running   0          78m    product

以上就是标签的基本操作,那么他除了用户的普通标记还有什么用呢?
其实标签的作用非常之大,k8s整体是一个解耦的系统,组件之间是独立运行的。但是组件之间又互相需要通信或者是标记来感知状态。
此时就需要标签作为媒介,进行信息的传输,比如:
1、我们在启动pod时,要限制pod在哪些节点上运行,此时就需要在节点上打好标签。接着在pod的yaml模板中,限制好要启动节点的标签。
2、deployment要固定pod的副本数,此时就需要通过标签进行过滤,如果筛选出的标签多了,就删除,如果少了就创建。

标签就相当于是一个粘合剂,把不同的资源组件通过标签进行关联。使k8s的资源和各个组件可以完整的整合到一起,形成一套完整的系统。

标签:--,标签,----,busyb,learnK8s,pod,k8s,iZ2ze3bpa0o5cw6gp42ry2Z
From: https://www.cnblogs.com/jilodream/p/18293278

相关文章

  • 计算机基础
    计算机基础黄俊人一、什么是编程什么是编程语言:人与计算机交流的介质什么是编程:用编程语言写出一个个文件,这堆文件会达到一个目的编程有什么用:让计算机帮我们干活二、计算机组成原理CPU中央处理器:功能帮我们控制四肢运算+判断控制器:控制构成计算机的一大堆......
  • 分享红旗出版社《家庭藏书集锦》bug修正版
    有些人觉得这套电子书一文不值,纯属垃圾。有些人则认为这套电子书不错,就算是bug成堆也要尽量恢复,readfree论坛就曾多次讨论过对它的修复问题。鉴于这套电子书的bug实在是太多,大家也没有必要辛苦重复造轮子,所以把我修复的版本在我的网盘中分享出来,有兴趣的自取,网盘地址在这里发布:ht......
  • 洛谷 P1853 投资的最大效益 蒟蒻题解
    洛谷P1853投资的最大效益蒟蒻题解题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息。当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而......
  • 【转】-并发下的集合
    高并发下的Java数据结构(List、Set、Map、Queue)本文转载至​薛勤的博客​的​高并发下的Java数据结构(List、Set、Map、Queue)由于并行程序与串行程序的不同特点,适用于串行程序的一些数据结构可能无法直接在并发环境下正常工作,这是因为这些数据结构不是线程安全的。本节将着重......
  • Java中的线程池详解
    Java中的线程池详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!1.理解线程池的概念在Java中,线程池是一种管理和复用线程的机制,它能够有效地控制并发线程数量,提高系统性能和资源利用率。使用线程池可以避免反复创建和销毁线程的开销,同时能够管理大量......
  • 晒风
    能吹风晒太阳吗_快速问医生_免费咨询陈朝主治医师扬州市中医院三甲回答时间:2012年05月12日 您好,所以为了不传染给其他孩子,建议您需要隔离治疗,尽量少带孩子去公共场合,更不要让患者到户外吹风。......
  • 获取用户IP
    /***@returnarray|mixed|string|string[]*/publicfunctiongetClientIP(){if(@$_SERVER["HTTP_ALI_CDN_REAL_IP"]){$ip=$_SERVER["HTTP_ALI_CDN_REAL_IP"];}elseif(@$_SERVER["HTTP_......
  • 【转】-Java锁解析
    不可不说的Java“锁”事**该博客转载自美团技术团队的不可不说的Java“锁”事**前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK8和Netty3.10.6)、使用场景进行举例,为读者介绍主流锁的知识......
  • Springboot - [12] Question & Answer
    题记部分 一、PublicKeyRetrievalisnotallowed百度翻译:不允许进行公钥检索(1)报错信息java.sql.SQLNonTransientConnectionException:PublicKeyRetrievalisnotallowed atcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)~[mys......
  • 【转】-java多线程读写锁ReadWriteLock
    Java多线程中读写锁ReadWriteLock的使用该博客转载自​lavimer​的​Java多线程中读写锁ReadWriteLock的使用1.概念读写锁分为读锁和写锁,多个读锁之间是不需要互斥的(读操作不会改变数据,如果上了锁,反而会影响效率),写锁和写锁之间需要互斥,也就是说,如果只是读数据,就可以多个线程......