[英]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
實現什么的好信息,而無需調用其他重炮,如awk
、 sed
等。
以 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.