如何根据Kubernetes中的节点订购Pods

14

我有一个运行完美的kubernetes集群,有5个工作节点。我正在使用以下命令获取pod的状态。

kubectl get pod -o wide --namespace=machines

以下是结果展示:

NAME                  READY     STATUS              RESTARTS   AGE       IP        NODE
deployment-26hfn      0/4       ContainerCreating   0          5m        <none>    machine003
deployment-782mk      0/4       Pending             0          5m        <none>    machine001
deployment-7kcc7      0/4       Pending             0          5m        <none>    machine002
deployment-8fzqs      0/4       ContainerCreating   0          5m        <none>    machine004
deployment-zfzts      0/4       ContainerCreating   0          5m        <none>    machine005

如您所见,上述结果并非按 machine001machine005 的顺序排列。是否有可能输出结果如下:

NAME                  READY     STATUS              RESTARTS   AGE       IP        NODE
deployment-26hfn      0/4       Pending   0          5m        <none>    machine001
deployment-782mk      0/4       Pending             0          5m        <none>    machine002
deployment-7kcc7      0/4       ContainerCreating   0          5m        <none>    machine003
deployment-8fzqs      0/4       ContainerCreating   0          5m        <none>    machine004
deployment-zfzts      0/4       ContainerCreating   0          5m        <none>    machine005
2个回答

44

你可以将 kubectl 命令的输出内容通过管道传递给 sort 命令:

kubectl get pods -o wide --namespace=machines | sort -k7

或省略第一行

kubectl get pods -o wide --namespace=machines | sed -n '1!p' | sort -k7

此外,您可以通过 kubectl 的 --sort-by 选项来实现此操作:

kubectl get pods --all-namespaces -o wide --sort-by=.spec.nodeName

第二种方法的优点是除了简单和可能更快地通过减少shell分支外,它还将标题行保留在输出的顶部。 - Josiah

0

我创建了一个扩展KUBEBSORT来简化排序过程。试一试吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接