傲视Kubernetes(四):Pod的创建及标签的使用
近期一直在思索天人之道,缺少大块的时间,决定将学习博客改为以小短文为主。本文主要内容:
1、kubernetes中pod的创建
2、pod上标签的使用
一、kubernetes中pod的创建
在实际使用中,Pod通常是伴随着Deployment等controller的创建而创建的,单独创建Pod的场景很少。推荐使用yaml文件来创建。下面是一个简单的Pod的yaml文件内容:
apiversion: v1 kind: Pod metadata: name: kubia-pod-demo spec: containers: image: nginx name: nginx-demo ports: containerPort: 8080 protocol: TCP
先对上面的yaml文件进行详细说明。kubernetes中创建对象的yaml文件都分为三部分:typedata、metadata和spec。实际查看对象时,还有一个status,这是运行中的对象才有的属性。
typedata对应上面的apiversion和kind,它定义这个yaml文件创建的是什么对象,上面就是创建Pod对象。
metadata对应上面的三四行,它定义这个对象的名字、标签、命名空间等元数据信息。
spec对应上面第五行下面的部分,它定义这个对象的实际属性,比如镜像、存储卷等。注意上面指明的端口8080只是informational展示性的,相当于一个声明,但实际不会起作用。
status在kubernetes中查看对象时才会有,它用来展示对象的状态及IP等信息,内容是变化的。
在kubernetes中只需执行下面创建命令:
kubectl create -f kubia-pod-demo.yaml
就可创建出一个pod,此时可以通过kubectl get pods命令来查看创建出来的pod。-f命令用于从yaml/json文件创建任何资源,即文件中定义了什么对象就创建什么对象。
如果想查看某个Pod的yaml文件,可以用如下命令:
kubectl get pod kubia-pod-demo -o yaml
查看pod中的日志: kubectl logs kubia-pod-demo
二、Pod上标签的使用
上面是创建了一个pod,可以直接通过名字来查看,但如果是实际使用中,系统中会有很多个服务,每个服务有多个pod,这时如果能对每个pod进行分类规整,就会很方便查看和操作。标签就是用来实现该功能的。
首先看标签的使用,在上面创建pod的yaml文件中这样修改:
1 apiversion: v1 2 kind: Pod 3 metadata: 4 name: kubia-pod-demo1 5 labels: 6 usetype: demo 7 spec: 8 containers: 9 image: nginx 10 name: nginx-demo 11 ports: 12 containerPort: 8080 13 protocol: TCP
用这个yaml文件创建的pod就被打上标签了,可以用下面的命令查看:
kubectl get pods --show-labels
还可以用标签来查询特定的pod:
kubectl get pod -l usetype=demo
还可以查询没有特定标签的pod:
kubectl get pod -l '!usetype'
为已有对象新增标签:
kubectl label pod xxpodNamexx usetype=demo
修改对象已有的标签,比新增多了个 --overwrite
kubectl label pod xxpodNamexx usetype=test --overwrite
标签可以筛选pod,这就为对某一类pod进行集中操作提供了可能。而且标签不止可以应用在pod上,kubernetes中的其他对象也可以用标签进行标记。本文先到这,下一篇学习注解和命名空间。