Kubectl 命名空间脚本仅过滤名称

Kubectl Namespace script to filter only name

我正在尝试使用 Kubectl get namespaces 命令获取数据。

kubectl get namespace
NAME              STATUS   AGE
default           Active   1d
kube-node-lease   Active   1d
kube-public       Active   1d
kube-system       Active   1d

但我只想用名称过滤它。所以当你 运行 脚本时,它应该像这样显示。

kubectl get namespace
NAME              
default           
kube-node-lease  
kube-public       
kube-system    

我已经尝试了一些 powershell 命令,但它对我不起作用。 Anykinda 帮助将不胜感激。谢谢!

我假设 kubectrl 的输出是纯文本,因此要对其进行操作,您需要进行文本解析(error-prone,这并不好玩),或者您需要将数据导入 PowerShell对象。

ConvertFrom-SourceTable

这将允许您读取 text/string 数据并将其解析为 PowerShell 对象。然后您可以简单地 Select-Object name 仅获取名称列。

第二个选项是使用 text/string 解析,但为此,您必须使用长度检测来提取列。 .

就是一个例子

这段代码对我有用:

kubectl get ns | awk '{print }'

尝试任一命令

kubectl get namespace --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
kubectl get namespace | awk '{print }'
kubectl get namespace --no-headers -o custom-columns=":metadata.name"
kubectl get namespace -o=name |  sed "s/^.\{10\}//"