马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如果你对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模板中,限制好要启动节点的标签。(节点就是k8s集群中各个呆板,也就是node)
2、deployment要固定pod的副本数,此时就须要通过标签进行过滤,如果筛选出的标签多了,就删除,如果少了就创建。(deployment 是一种更高级的资源,也称之为“部署”,可以简单的明白为批量对一批pod进行管理和部署,后文会专门先容)
标签就相当于是一个粘合剂,把不同的资源组件通过标签进行关联。使k8s的资源和各个组件可以完整的整合到一起,形成一套完整的体系。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |