Kubernetes學習筆記-Pod常用命令總結

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

  1. 在使用 kubectl create 命令創建資源時指定命名空間:

kubectl create -f kubia-manual.yaml -n custom-namespace

  1. 選擇在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 選項指定將刪除所有資源實例而不是按名稱指定它們。

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