Bash - access oc节点属性



这个问题很简单,但我正在努力理解在哪里甚至寻找解决方案。我想迭代我从openshift检索的pod列表,然后输出它的一些属性。

换句话说,我想做的是:

for node in $(oc get nodes);
do
echo  ${node.name}
echo  ${node.role}
done

不幸的是,这会导致错误"第67行:${node.name}: bad substitution"

使用echo node对节点进行迭代就可以了,但是它只是列出了所有的属性,每个属性值一行。

仅oc个get节点的输出为:

NAME                                    STATUS   ROLES    AGE   VERSION
avaloq-abcde-master-0-xyz               Ready    master   38d   v1.xx
avaloq-abcde-master-1-dfs               Ready    master   38d   v1.xx
avaloq-abcde-master-2-gsd               Ready    master   38d   v1.xx

的输出
for node in $(oc get nodes -o name);
do
echo  ${node}
done

node/avaloq-abcde-master-0-xyz
node/avaloq-abcde-master-1-dfs
node/avaloq-abcde-master-2-gsd

如果我尝试通过-o(输出格式?)添加另一个属性,它会抛出以下错误:

error: unable to match a printer suitable for the output format "roles", allowed formats are: custom-columns,custom-columns-file,go-template,go-template-file,json,jsonpath,jsonpath-as-json,jsonpath-file,name,template,templatefile,wide,yaml

我期望的是以下输出

node/avaloq-abcde-master-0-xyz
master
node/avaloq-abcde-master-1-dfs
master
node/avaloq-abcde-master-2-gsd
master

我想这就是我的理解不足之处。是对象/表的数组。通过"获取节点"返回;不是一个对象数组,而只是一个由制表符和返回字符分隔的文本列表?

如果您只需要oc get node中的特定列,则可以使用这样的内容命令

oc get nodes | awk '{print $1, $3}'

将输出像

这样的输出
avaloq-abcde-master-0-xyz master 
avaloq-abcde-master-1-dfs master
avaloq-abcde-master-2-gsd master

最新更新