K8S動手教程2.4:Pod註解和命名空間

內容摘要

Pod註解

命名空間


註解和標籤比較類似,都是鍵值對,但是註解不是為了對應用進行分組,保存信息而存在的。

註解主要用於工具,比如當K8S引入新特性時,會使用註解;還可以使用註解為每個K8S資源添加說明。


創建帶有註解的Pod

創建Pod,配置內容為:

apiVersion: v1
kind: Pod
metadata:
name: apppod5
labels:
app: myapp5
annotations:
creator: jack
des: chengdu
spec:
containers:
- image: huqianakls/app1:latest
name: appcon5
ports:
- containerPort: 8080
protocol: TCP

使用annotations設置Pod的註解。

創建該Pod,查詢該Pod,命令為:

 kubectl get pod apppod5 -o yaml 

結果截圖如下:

K8S動手教程2.4:Pod註解和命名空間


註解常用操作

添加註解

命令為:

kubectl annotate pod apppod5 company=hadoop
K8S動手教程2.4:Pod註解和命名空間


修改註解

命令為:

kubectl annotate pod apppod5 company=spark --overwrite
K8S動手教程2.4:Pod註解和命名空間


刪除註解

命令為:

kubectl annotate pod apppod5 company-
K8S動手教程2.4:Pod註解和命名空間


命名空間

命名空間用於對資源進行分組。和標籤和註解不同,命名空間可以將應用做一定程度的隔離。比如,不同命名空間中的資源名稱可以重複。

下面我們通過實驗來認識下命名空間。

查詢

查詢下系統的命名空間,命令如下:

kubectl get namespace
K8S動手教程2.4:Pod註解和命名空間

可以看到有3個namespace,它們是系統默認創建的,主要用於系統組件。

查詢下我們前面創建的Pod,觀察namespace,如下圖:

K8S動手教程2.4:Pod註解和命名空間

可以看到namespace為default,如果我們不指定命名空間,那麼默認會使用default。

查詢default命名空間詳情,信息如下:

K8S動手教程2.4:Pod註解和命名空間

namespace的信息比較簡潔,注意下面的信息,quota和limits這裡不詳解,後面會專門講解這個問題。

在查詢Pod的時候,可以使用 --namespace 參數查詢指定命名空間下的Pod,命令如下:

kubectl get pod --namespace 命名空間

比如:查詢default下所有的Pod:

K8S動手教程2.4:Pod註解和命名空間

查詢kube-system下所有的Pod:

K8S動手教程2.4:Pod註解和命名空間


創建

創建namespace的yaml文件,配置內容為:

apiVersion : vl
kind : Namespace
metadata :
name: namespace1

使用 kubectl create -f 命令創建namespace,結果為:

K8S動手教程2.4:Pod註解和命名空間

下面我們在該namespace下創建Pod,配置為:

apiVersion: v1
kind: Pod
metadata:
name: apppod6
namespace: namespace1
labels:
app: myapp6
spec:
containers:
- image: huqianakls/app1:latest
name: appcon6
ports:
- containerPort: 8080
protocol: TCP

創建該Pod,查詢結果為:

K8S動手教程2.4:Pod註解和命名空間

從結果可以看出,沒有查詢到apppod6,原因在於當前namespace為default。重新使用 --namespace namespace1 查詢Pod,結果如下:

K8S動手教程2.4:Pod註解和命名空間

查詢成功。

也可以使用命令創建namespace,命令為:

kubectl create namespace namespace2
K8S動手教程2.4:Pod註解和命名空間

不同namespace中可以創建同名的Pod,下面我們在namespace2下創建apppod6,將namespace改為namespace2。結果如下:

K8S動手教程2.4:Pod註解和命名空間

創建成功。


刪除Pod

1、按照名稱刪除

命令為:

kubectl delete pod Pod名稱1 Pod名稱2...... --namespace 命名空間 

K8S動手教程2.4:Pod註解和命名空間

apppod1的狀態變為Terminating。

可以跟多個Pod名稱,使用空格隔開,一次刪除多個Pod。

2、使用標籤刪除

命令為:

kubectl delete pod -l 標籤鍵值對
K8S動手教程2.4:Pod註解和命名空間

3、通過刪除整個命名空間刪除Pod

kubectl delete namespace 命名空間名稱
K8S動手教程2.4:Pod註解和命名空間

4、刪除命名空間下所有Pod,但是不刪除namespace

命令為:

kubectl delete pod --all --namespace namespace名字
K8S動手教程2.4:Pod註解和命名空間

5、刪除命名空間下幾乎所有資源

命令為:

kubectl delete all --all --namespace 命名空間名字
K8S動手教程2.4:Pod註解和命名空間

命令中第1個all表示刪除所有資源,第2個all表示刪除所有資源實例。


kubectl explain

該命令可以用來查詢資源的配置參數。下面查詢下Pod的參數,命令為:

kubectl explain pod
K8S動手教程2.4:Pod註解和命名空間

結果顯示了pod的所有參數。但是metadata,spec,status等數據沒有完全展示屬性,可以繼續使用kubectl explain查詢,結果如下:

K8S動手教程2.4:Pod註解和命名空間

內容比較多,這裡只給出一部分。

同樣,可以使用 kubectl explain 查詢其他屬性組下的具體信息。

大家可以自己嘗試查詢spec,status等屬性組下的屬性。


實驗

1、創建帶有註解的Pod;

2、測試註解常用操作;

3、創建命名空間,測試常用操作;

4、測試刪除Pod方法;

5、使用kubectl explian命令查詢Pod屬性配置;



分享到:


相關文章: