內容摘要
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
結果截圖如下:
註解常用操作
添加註解
命令為:
kubectl annotate pod apppod5 company=hadoop
修改註解
命令為:
kubectl annotate pod apppod5 company=spark --overwrite
刪除註解
命令為:
kubectl annotate pod apppod5 company-
命名空間
命名空間用於對資源進行分組。和標籤和註解不同,命名空間可以將應用做一定程度的隔離。比如,不同命名空間中的資源名稱可以重複。
下面我們通過實驗來認識下命名空間。
查詢
查詢下系統的命名空間,命令如下:
kubectl get namespace
可以看到有3個namespace,它們是系統默認創建的,主要用於系統組件。
查詢下我們前面創建的Pod,觀察namespace,如下圖:
可以看到namespace為default,如果我們不指定命名空間,那麼默認會使用default。
查詢default命名空間詳情,信息如下:
namespace的信息比較簡潔,注意下面的信息,quota和limits這裡不詳解,後面會專門講解這個問題。
在查詢Pod的時候,可以使用 --namespace 參數查詢指定命名空間下的Pod,命令如下:
kubectl get pod --namespace 命名空間
比如:查詢default下所有的Pod:
查詢kube-system下所有的Pod:
創建
創建namespace的yaml文件,配置內容為:
apiVersion : vl
kind : Namespace
metadata :
name: namespace1
使用 kubectl create -f 命令創建namespace,結果為:
下面我們在該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,查詢結果為:
從結果可以看出,沒有查詢到apppod6,原因在於當前namespace為default。重新使用 --namespace namespace1 查詢Pod,結果如下:
查詢成功。
也可以使用命令創建namespace,命令為:
kubectl create namespace namespace2
不同namespace中可以創建同名的Pod,下面我們在namespace2下創建apppod6,將namespace改為namespace2。結果如下:
創建成功。
刪除Pod
1、按照名稱刪除
命令為:
kubectl delete pod Pod名稱1 Pod名稱2...... --namespace 命名空間
apppod1的狀態變為Terminating。
可以跟多個Pod名稱,使用空格隔開,一次刪除多個Pod。
2、使用標籤刪除
命令為:
kubectl delete pod -l 標籤鍵值對
3、通過刪除整個命名空間刪除Pod
kubectl delete namespace 命名空間名稱
4、刪除命名空間下所有Pod,但是不刪除namespace
命令為:
kubectl delete pod --all --namespace namespace名字
5、刪除命名空間下幾乎所有資源
命令為:
kubectl delete all --all --namespace 命名空間名字
命令中第1個all表示刪除所有資源,第2個all表示刪除所有資源實例。
kubectl explain
該命令可以用來查詢資源的配置參數。下面查詢下Pod的參數,命令為:
kubectl explain pod
結果顯示了pod的所有參數。但是metadata,spec,status等數據沒有完全展示屬性,可以繼續使用kubectl explain查詢,結果如下:
內容比較多,這裡只給出一部分。
同樣,可以使用 kubectl explain 查詢其他屬性組下的具體信息。
大家可以自己嘗試查詢spec,status等屬性組下的屬性。
實驗
1、創建帶有註解的Pod;
2、測試註解常用操作;
3、創建命名空間,測試常用操作;
4、測試刪除Pod方法;
5、使用kubectl explian命令查詢Pod屬性配置;
閱讀更多 HandFirstDocker 的文章