为什么'kubectl get nodes'在 xargs 之后不起作用?



当我在iterm2 (macOS)中尝试时,它工作了。

kubectl get nodes node1 node2 --show-labels

当我尝试这个,它工作。

echo "node1" | xargs -I{} kubectl get nodes {} --show-labels

但是当我尝试这个时,它不工作。

echo "node1 node2" | xargs -I{} kubectl get nodes {} --show-labels

我认为空格有问题,但我不能解决它。你能帮我吗?

默认情况下,xargs将尽可能多地将提供的参数塞进单个命令中。(我在你原来的xargs调用中添加了echo,所以我们看到发生了什么。)

$ echo "node1 node2 node3 node4" | xargs -I{} echo kubectl get nodes {} --show-labels
kubectl get nodes node1 node2 node3 node4 --show-labels

如果您希望每个选择器都是自己的命令,则需要添加-n1:

$ echo "node1 node2 node3 node4" | xargs -n1 -I{} echo kubectl get nodes {} --show-labels
kubectl get nodes node1 --show-labels
kubectl get nodes node2 --show-labels
kubectl get nodes node3 --show-labels
kubectl get nodes node4 --show-labels

老实说,这个解决方案还不够清楚你想要实现什么——你可以很容易地使用基于kubectl的解决方案,而不需要触摸xargs。然而,如果你能说明你真正的问题——也许帮助你解决问题会更容易。


你可以在这里使用两个选项:

  • 与xargs

    echo node1,node2,node3,...nodeN | tr -d 'n' | xargs -I{} -d "," kubectl get nodes {} --show-labels

  • 没有xargs
  • for node in $(kubectl get nodes -o name| cut -d "/" -f2); do kubectl get nodes $node --show-labels; done

相关内容

  • 没有找到相关文章

最新更新