Pages - Menu

2022年4月11日 星期一

[k8s]kubernetes 批次檢查yaml特定字元

前言

因為dockershim的問題,
這次要搬cluster的node了。
但我根本忘記有哪個yaml有寫到 nodeSelector了,
一個一個看又好懶…怎麼辦?

此時,我們要知道『科技,始終來自於人類的惰性』,

來寫程式吧。


正文

想起來之前在檢查 docker.sock的時候,有用指令檢查過這個yaml (1)裡面,
有沒有 /docker.sock

kubectl get pods --all-namespaces \
-o=jsonpath='{range .items[*]}{"\n"}{.metadata.namespace}{":\t"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.hostPath.path}{", "}{end}{end}' \
| sort \
| grep '/var/run/docker.sock'

這段最後面兩個就不用看了,sort 跟 grep 是 linux的指令。

主要針對 -o jsonpath 來看,詳細指令  參考(2)

當要取得複數資料時,用 range 來取資料。
然後…參考 pod的yaml看要取得哪些欄位來用吧。

下面範例為取得 全部的 nodeSelectord

kubectl get pods -A  \
-o=jsonpath='{range .items[*]}{"\n"}{.metadata.namespace}{":\t"}{.metadata.name}{":\t"}{.spec.nodeSelector}{end}'




再排序一下,就可以很快的知道有哪些yaml有用到 nodeSelector了。

ref.
1. 從 dockershim 遷移遙測和安全代理
2. JSONpath 幫助

沒有留言:

張貼留言