☸️ Получение подробной информации об нодах Kubernetes для быстрого анализа воркер нод

Как починить worker ноды

by itisgood

Несмотря на кажущуюся незначительность, использование kubectl CLI может стать решающим фактором для устранения неполадок или понимания конфигурации рабочих нод без необходимости входить в консоль.

Этот мощный инструмент позволяет без особых усилий получить подробную информацию о рабочих нодах.

Недавно пришлось искать команду, чтобы перечислить все рабочие ноды вместе с их AMI-идентификаторами с помощью kubectl.

Потребовалось некоторое время, чтобы найти именно ту команду, которая отвечала этимтребованиям.

Хотя описание нод предоставляет необходимые сведения, представьте себе сложность, когда речь идет о сотнях нод в кластере.

Именно здесь и проявляется мощь kubectl – он выходит за рамки пользовательского интерфейса или eksctl/awscli, предлагая универсальный инструмент для глубокого анализа и изучения вашей среды Kubernetes”.

Хотя изначально нужно было перечислить все узлы вместе с их AMI ID с помощью kubectl, вскоре было обнаружено его универсальность в предоставлении большого количества информации.

Этот мощный инструмент может помочь в различных сценариях, например, перечислить рабочие ноды Kubernetes на основе определенных типов инстансов, определить ноды, работающие на SPOT или On-Demand инстансов, определить ноды в определенном регионе или зоне, отфильтровать по шаблону запуска или версии и даже сузить результаты на основе пользовательских лейблов, назначенных при создании инстанса.

Это комплексное решение для разнообразного анализа и управления нодами в вашем кластере Kubernetes.

Это небольшая статья, но она может сэкономить вам время.

Изначально для сбора необходимых данных мы прибегаем к использованию цикла for с помощью kubectl describe.

Однако со временем мы обнаружили более простой подход к получению нужных сведений.

Показать ноды с данными об их AMI.

Способ 1: Изначально я выполнял describe в цикле for и получал детали.

Например, я создавал список узлов в файле и передавал его для поиска деталей AMI.

Сохраним ноды в текстовый файл

kubectl get nodes | grep -v NAME| awk {'print $1'} > nodes.txt

Затем получите сведения об AMI, выполнив kubectl describe в цикле

for i in $(cat nodes.txt); do echo "Node: $i and its AMI is: $(kubectl describe nodes $i | grep "eks.amazonaws.com/nodegroup-image"| cut -d "=" -f 2) "; done

Однако у нас есть несколько лучших способов сделать это.

Способ 2: Используя kubectl напрямую

kubectl get nodes -o custom-columns=NAME:.metadata.name,AMI:'{.metadata.labels.eks\.amazonaws\.com/nodegroup-image}'

Мы можем использовать лейблы для получения подробной информации о рабочих нодах из CLI.

EKS по умолчанию добавляет несколько лейблов, а также включает те, которые мы передаем при создании групп хостов.

Поэтому мы можем использовать эти метки для анализа рабочих узлов из CLI.

Добавим несколько других примеров ниже:

Пример 1: Составление списка рабочих нод, использующих экземпляры SPOT / ON DEMAND, с помощью kubectl

kubectl get nodes -o custom-columns=NAME:.metadata.name,TYPE:'{.metadata.labels.eks\.amazonaws\.com/capacityType}'

Пример 2: Вывод списка рабочих нод с типом инстанса EC2 с помощью kubectl

kubectl get nodes -o custom-columns=NAME:.metadata.name,TYPE:'{.metadata.labels.node\.kubernetes\.io/instance-type}'

Пример 3: Вывести список рабочих хостов, работающих в зависимости от зоны доступности, с помощью kubectl

kubectl get nodes -o custom-columns=NAME:.metadata.name,TYPE:'{.metadata.labels.failure-domain\.beta\.kubernetes\.io/zone}'

Вы можете описать один рабочий хост и проверить доступные лейблов и вывести на основе ваших конкретных требований.

Вы можете направить и провести дальнейший анализ grep/awk/sort для ваших требований.

Это поможет вам создать быструю инвентаризацию рабочих узлов EKS с помощью этой информации.

см. также:

 

You may also like

Leave a Comment