簡體   English   中英

用於提取 kubernetes pod 名稱的 Grep 命令

[英]Grep command to extract a kubernetes pod name

我目前正在編寫一個bash腳本,以減少我為項目構建db所需的時間。 目前我有幾個數據庫在同一個命名空間中運行,我只想提取特定的 pod 名稱。

我運行kubectl get pods

NAME                        READY   STATUS    RESTARTS   AGE
elastic                     1/1     Running   0          37h
mysql                       1/1     Running   0          37h

現在我想保存其中一個 pod 名稱。

我目前正在運行這個foo=$(kubectl get pods | grep -e "mysql")並且它返回mysql 1/1 Running 0 37h這是命令的預期結果。 現在我只想能夠提取 pod 名稱作為該變量,以便我可以在以后傳遞它。

kubectl已經允許您只提取名稱:

kubectl get pods -o=jsonpath='{range .items..metadata}{.name}{"\n"}{end}' | fgrep mysql

這應該適合你

foo=$(kubectl get pods | awk '{print $1}' | grep -e "mysql")

如果我沒記錯的話,您只需要獲取 pod 名稱即可在以后重用這些名稱。

kubectl get --help提供了很多關於您可以使用kubectl實現什么的好信息,而無需調用其他重炮,如awksed等。

以 JSON 輸出格式列出單個 pod。

kubectl get -o json pod web-pod-13je7

在自定義列中列出資源信息。

kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

僅返回指定 pod 的相位值。 kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

在這種特殊情況下,我看到至少 2 個解決方法:

1) 自定義列。 您幾乎可以獲得任何輸出(然后您可以根據需要使用grep / tr / awk ):

$ kubectl get pods --no-headers=true -o custom-columns=NAME_OF_MY_POD:.metadata.name

mmmysql-6fff9ffdbb-58x4b
mmmysql-6fff9ffdbb-72fj8
mmmysql-6fff9ffdbb-p76hx
mysql-tier2-86dbb787d9-r98qw
nginx-65f88748fd-s8mgc

2)jsonpath(@vault 提供的那個):

kubectl get pods -o=jsonpath='{.items..metadata.name}'

希望能闡明您必須選擇的選項。 如果這有幫助,請告訴我們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM