Kubernetes 中按年齡對 Pod 進行排序
1. 概述
在本教程中,我們將學習如何按 Kubernetes Pod 的年齡來對 Kubernetes Pod 進行排序。按年齡對 pod 進行排序有助於調試和解決 Kubernetes 中的問題。我們將使用kubectl
命令來實現此目的。
2.使用–sort-by
選項
kubectl get
指令用來列出 Kubernetes 中的資源。
以年齡為 Pod 排序最簡單的方法是使用–sort-by
標誌以及kubectl get pods
指令:
$ kubectl get pods --sort-by=.metadata.creationTimestamp
NAME READY STATUS RESTARTS AGE
ubuntu-pod-1 2/2 Running 0 26m
ubuntu-pod-2 2/2 Running 0 13m7s
ubuntu-pod-3 2/2 Running 0 5m17s
上面的指令根據 Pod 建立時間戳記按升序列出 Pod,這有效地按年齡對 Pod 進行排序,最舊的 Pod 出現在清單中的第一個位置。
值得注意的是,我們使用creationTimestamp
進行排序。因此,最近建立的 pod 將具有最高的creationTimestamp
值和最小的age 。
2.1.按降序排序
讓我們按降序對 pod 進行排序,即最新的 pod 首先出現:
$ kubectl get pods --sort-by=.metadata.creationTimestamp --no-headers | tail -r
ubuntu-pod-3 2/2 Running 0 5m17s
ubuntu-pod-2 2/2 Running 0 13m7s
ubuntu-pod-1 2/2 Running 0 26m
在這裡,我們透過將–no-headers
標誌傳遞給kubectl get pods
指令來忽略標頭。此外,我們使用tail
指令的-r
選項來反轉輸出中的行順序。
我們也可以使用tac
指令來實現這一點:
$ kubectl get pods --sort-by=.metadata.creationTimestamp --no-headers | tac
如前所述,指令的第一部分kubectl get pods –sort-by=.metadata.creationTimestamp,
按升序列出 pod。 | 的|
然後使用(管道)字元獲取上一個命令的輸出並將其作為輸入傳遞給tac
命令。 tac
與cat
相反,用於反轉輸出中的行順序。
3. 取得最舊和最近創建的 Pod
到目前為止,我們已經討論了按建立時間的升序/降序來取得 pod 清單的不同方法。現在,我們只尋找最近建立的 pod,而不是整個 pod 清單。
我們可以透過新增 JsonPath 過濾來實現這一點:
$ kubectl get pods --sort-by=.metadata.creationTimestamp -o=jsonpath='{.items[-1].metadata.name}'
ubuntu-pod-3
在這裡,我們使用-1
索引來過濾 pod 名稱清單中的最後一項。
同樣,我們可以使用索引0
來取得最舊的 pod:
$ kubectl get pods --sort-by=.metadata.creationTimestamp -o=jsonpath='{.items[0].metadata.name}'
ubuntu-pod-0
當我們有許多 Pod 運行,但我們希望只獲得一些最近/最舊的 Pod 時,這對我們很有幫助。
4。結論
在本文中,我們學習如何按照創建時間的升序和降序順序來取得 Kubernetes Pod 詳細資訊。此外,我們討論了使用 JsonPath 過濾來取得最舊的 pod 和最新的 pod。