傲视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中的其他对象也可以用标签进行标记。本文先到这,下一篇学习注解和命名空间。

posted on 2020-12-23 23:12  淡墨痕  阅读(440)  评论(0编辑  收藏  举报