Kubernetes: перелічіть усі стручки та їх вузли


81

У мене 3 вузли, на яких запущені всі види стручків. Я хотів би створити список вузлів і стручків, наприклад:

NODE1 POD1
NODE1 POD2
NODE2 POD3
NODE3 POD4

Як цього можна досягти?

Дякую.


kubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .metadata.name'
Adiii,

Відповіді:


157

Це можна зробити за допомогою спеціальних стовпців :

kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces

або просто:

kubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces

1
Дякую. Це те, що я шукав. Це спрацювало, але потрібно було додати до команди --all-namespaces, щоб з'являлися стручки. Напр .:kubectl get pod --all-namespaces -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
testTester

3
Мені було корисно додати | sortв кінці другої команди, щоб результати групувалися за вузлами.
jwadsack

Це відмінна відповідь для пошуку та групування стручків за вузлами. Корисно знайти, які вузли містять, які стручки
Радість

1
Параметр -o = wide за замовчуванням також покаже вам вузол. kubectl get pods -o=wide
Майкл

84

kubectl має простий, але корисний розширений формат виводу, який ви можете використовувати як

kubectl get pod -o wide

тому, хоча користувацькі формати, наведені в інших відповідях, хороші, це може бути зручним ярликом.


1
Це набагато простіше, ніж інші відповіді.
Далміро Гранас,

1
Повною командою буде kubectl get pod --all-namespaces -o wide, це дасть усі деталі, включаючи інформацію про вузол. Перерахувати стручки для певного простору імен kubectl get pod -n YOUR_NAMESPACE -o wide. Сподіваюся, це допомагає.
iamabhishek

полегшив мені життя
Абдулла Даніал

6

Ви можете використовувати kubectl get pods --all-namespacesдля переліку всіх стручків з усіх просторів імен та kubectl get nodesдля переліку всіх вузлів.


Добре, дякую. Поки ваші команди працюють, і це було наче те, що я використовував до цього часу, мета полягає в тому, щоб мати одну команду, яка виводить відношення pod / nodes. Сподіваюся, ви можете допомогти. Ще раз спасибі!
testTester

1
Можливо, це допоможе вам: kubectl отримує стручки -o широкий, але він надрукує багато інформації.
Діна Богдан

5

Наступна команда робить більш-менш те, що ви хотіли. Однак це швидше jqфокус, ніж kubectlфокус:

kubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .status.podIP'


Дякую! Після встановлення "jq", на жаль, я отримую "помилку синтаксичного аналізу: недійсний числовий літерал у рядку 1, стовпець 10" з вашою командою вище.
testTester

Це дає лише IP-імена вузлів та стручків
Амін Зайн

@AmineZaine замінює .status.podip наkubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .metadata.name'
Adiii

4

Не зовсім так, як ви хотіли, бо він описує набагато більше, але ви можете використовувати

kubectl describe nodes

він виставить кожен стручок на вузол кластера з наступною інформацією

Простір імен | Назва | Запити процесора | Обмеження процесора | Запити пам'яті | Обмеження пам’яті


Дуже дякую! Чи знаєте ви, чи можливо видалити всю зайву інформацію та, можливо, представити деталі у спрощеній таблиці, як відповідає на запитання вище? Ще раз спасибі!
testTester

2

Це дає вам: "nodeName prostor простору імен pod" у кластері:

kubectl get pods --all-namespaces --output 'jsonpath={range .items[*]}{.spec.nodeName}{" "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.