1. pod基礎操作
通過YAML文件創建pod
# kubia.manual.yaml
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual
spec:
containers:
- image: luksa/kubia
name: kubia
imagePullPolicy: Never
ports:
- containerPort: 8080
protocol: TCP
kubectl create -f kubia.manual.yaml
得到運行中pod的完整定義(YAML格式)
kubectl get po kubia-manual -o yaml
得到運行中pod的完整定義(JSON格式)
kubectl get po kubia-manual -o json
在pod列表中查看新創建的pod
kubectl get pods
獲取pod日誌
kubectl logs kubia-manual
獲取pod日誌時指定容器(-c)
kubectl logs kubia-manual -c kubia
將本地網絡端口轉發到pod中的端口
以下命令能夠將本地機器的端口8888轉發到pod的端口8080
kubectl port-forward kubia-manual 8888:8080
2. 標籤相關
創建pod時指定標籤
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual-v2
labels:
creation_method: manual
env: prod
spec:
containers:
- image: luksa/kubia
name: kubia
imagePullPolicy: Never
ports:
- containerPort: 8080
protocol: TCP
kubectl create -f kubia-manual-with-labels.yaml
上述文件中的以下部分將兩個標籤附加到pod上:
labels:
creation_method: manual
env: prod
列出pod時展示標籤
kubectl get po --show-labels
列出pod時只展示部分標籤(以展示creation_method爲例)
kubectl get po -L creation_method,env
給pod添加標籤
kubectl label po kubia-manual creation_method=manual
更改pod的現有標籤(需要使用 - -overwrite選項)
kubectl label po kubia-manual-v2 env=debug --overwrite
通過標籤選擇器列出pod
列舉creation_method=manual的所有pod
kubectl get po -l creation_method=manual
列舉包含env標籤的所有pod
kubectl get po -l env
列舉沒有env標籤的所有pod
kubectl get po -l ‘!env’
使用標籤分類工作節點
向節點添加標籤
kubectl label node xxx gpu=true
通過標籤選擇器列出節點
kubectl get nodes -l gpu=true
使用標籤選擇器將pod調度到特定節點
apiVersion: v1
kind: Pod
metadata:
name: kubia-gpu
spec:
nodeSelector:
gpu: "true"
containers:
- image: luksa/kubia
imagePullPolicy: Never
name: kubia
上述文件中,我們在spec部分添加了一個nodeSelector字段。當我們創建該pod時,調度器將只在包含標籤gpu =true的節點中選擇。
3. 註解pod
添加註解到pod中
kubectl annotate pod kubia-manual mycompany.com/someannotation=“foo bar”
4. 命名空間
列出集羣中的所有命名空間
kubectl get ns
列出指定namespace下的pod
注意當我們使用kubectl命令列出資源時,只是展示default命名空間下的對象。
kubectl get po --namespace kube-system
or
kubectl get po -n kube-system
從YAML文件創建namespace
custom-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: custom-namespace
kubectl create -f custom-namespace.yaml
直接通過命令創建namespace
kubectl create namespace custom-namespace
創建pod時指定namespace
- 在使用 kubectl create 命令創建資源時指定命名空間:
kubectl create -f kubia-manual.yaml -n custom-namespace
- 選擇在YAML文件中的metadata字段添加 一個namespace: custom-namespace屬性。
5. 停止和刪除pod
按名稱刪除pod
kubectl delete po xxx
按標籤選擇器刪除pod
kubectl delete po -l creation_method=manual
通過刪除整個命名空間來刪除pod
kubectl delete ns custom-namespace
刪除命名空間中的(幾乎)所有資源
kubectl delete all --all
命令中的第一個 all 指定正在刪除所有資源類型, 而 --all 選項指定將刪除所有資源實例而不是按名稱指定它們。