傲視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中的其他對象也可以用標籤進行標記。本文先到這,下一篇學習pod的註解和命名空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章