近期一直在思索天人之道,缺少大塊的時間,決定將學習博客改爲以小短文爲主。本文主要內容:
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的註解和命名空間。