Как получить стручки из пространств имен с определенной меткой? - PullRequest
1 голос
/ 27 февраля 2020

Можно получить все модули в кластере:

kubectl get pod --all-namespaces -o wide

Также можно получить все модули в кластере с указанием c метки:

kubectl get pod --all-namespaces -o wide --selector some.specific.pod.label

Можно даже получить все модули в указанном c узле кластера:

kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node>

Вопрос в том, как получить все модули из пространств имен с определенной меткой?

например, kubectl get pod --namespace-label some.specific.namespace.label -o wide (псевдокод)

1 Ответ

2 голосов
/ 28 февраля 2020

Эту операцию невозможно выполнить за один снимок, поскольку метки на Namespace объектах не распространяются вниз на их дочерние объекты. Поскольку kubectl просто выполняет GET на /api/v1/whatevers, очевидного способа сделать REST-запрос к двум конечным точкам одновременно и объединить их вместе.

Вам понадобится либо for l oop в оболочке или использование одной из множества привязок API-клиентов для создания программы, выполняющей выборку Namespace, а затем выборку Pod для соответствующих Namespaces; например:

for n in $(kubectl get ns --selector some.specific.namespace.label -o name); do
    # it's possible kubectl -n will accept the "namespace/foo" output of -o name
    # or one can even -o gotemplate="{{ .Name }}"
    n=${n##namespace/}
    kubectl -n "$n" get pods -o wide
done
...