Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 20(232)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7, скачать журнал часть 8, скачать журнал часть 9, скачать журнал часть 10, скачать журнал часть 11, скачать журнал часть 12, скачать журнал часть 13

Библиографическое описание:
Радюшин В.С. ПРОВЕРКА СОСТОЯНИЯ КЛАСТЕРА KUBERNETES // Студенческий: электрон. научн. журн. 2023. № 20(232). URL: https://sibac.info/journal/student/232/291840 (дата обращения: 20.11.2024).

ПРОВЕРКА СОСТОЯНИЯ КЛАСТЕРА KUBERNETES

Радюшин Вадим Станиславович

магистрант, кафедра математического обеспечения вычислительных комплексов и информационных систем, Саратовский государственный университет,

РФ, г. Саратов

CHECKING THE KUBERNETES CLUSTER HEALTH

 

Vadim Radyushin

Masters’s student, Department of Mathematical Support of Computer and Information Systems, Saratov State University,

Russia, Saratov

 

АННОТАЦИЯ

В 2022-23 годах резко выросло использование различными компаниями платформы для управления контейнерами Kubernetes. Однако данное средство представляет собой сложную систему с множеством компонентов, каждое из которых может выйти из строя. Поэтому важным навыком для DevOps инженеров является умение проверять состояние кластера Kubernetes.

ABSTRACT

In 2022-23, the use of the Kubernetes container management platform by various companies has grown dramatically. However, this tool is a complex system with many components, each of which can fail. Therefore, an important skill for DevOps engineers is the ability to check the status of a Kubernetes cluster.

 

Ключевые слова: Kubernetes, etcd, мониторинг, DevOps.

Keywords:  Kubernetes, etcd, monitoring, DevOps.

 

Kubernetes [1] может в любой момент выйти из строя по различным причинам. Например, из-за проблем с гипервизором может выключиться один из узлов кластера, что повлечет за собой простой приложений внутри кластера. Рабочие нагрузки, критичные для компании, могут не запуститься после неудачного обновления. Или, что еще хуже, могут выйти из строя системные компоненты, такие как API сервер или внутреннее хранилище etcd [2], что в свою очередь повлечет за собой деградацию кластера.

Таким образом, для контроля состояния Kubernetes необходимо проверять:

·Работоспособность узлов;

·Рабочие нагрузки в кластере;

·Доступность API серверов;

·Состояние хранилища etcd.

Работоспособность узлов можно проверить с помощью клиента kubectl и инструмента командной строки grep:

·kubectl get node | grep –v Ready

Данная команда выведет список всех узлов Kubernetes, которые в данный момент имеют статус не “Ready”, то есть не готовы запускать поды.

Рабочие нагрузки также можно проверить с помощь команды:

·kubectl get pods –n <namespace> | grep –v Running

Эта команда выведет список всех подов в определенном пространстве имен, которые не запущены в данный момент. Проверять каждое пространство имен по отдельности может занять много времени и ручной работы. Автоматизировать данный процесс можно с помощью выбора пространств имен по какому-либо селектору меток и передачи его на вход утилите xargs, заранее вычленив его имя из таблицы с помощью команды awk и очистки его от лишних символов через утилиту tr:

·kubectl get namespaces --selector=monitored=yes --no-headers | awk '{print $1}' | tr '\n' ' ' | xargs -t -n1 kubectl get pods –n | grep –v Running

Работоспособность API серверов Kubernetes можно проверить, отправив запрос по адресу “<api-server-ip>/healthz”. Любой ответ кроме “ok” считается негативным. Все поды API сервера находятся в пространстве имен “kube-system” и имеют метку “component=kube-apiserver” и содержат IP-адрес в аннотации “ kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint”. Ее значение можно получить с помощью утилиты yq. Полная команда будет выглядеть следующим образом:

·kubectl get pods -n kube-system --selector=component=kube-apiserver -o yaml | yq '.items[].metadata.annotations."kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint"' | xargs -i{} -t -n1 curl -k https://\{\}/healthz

Она должна выполняться с какого-либо узла кластера, так IP-адрес находится в локальной сети Kubernetes.

Состояние кластера etcd проверяется с помощью клиента etcdctl, передав ему пути, по которому находятся сертификаты для подключения к нему. Перед этим необходимо получить список IP-адресов членов etcd из аннотации подов "kubeadm.kubernetes.io/etcd.advertise-client-urls". Поды etcd находятся в пространстве имен “kube-system” и имеют метку “component=etcd”. Таким образом необходимо выполнить две команды:

·kubectl get pods -n kube-system --selector=component=etcd -o yaml | yq '.items[].metadata.annotations."kubeadm.kubernetes.io/etcd.advertise-client-urls"'

·etcdctl --cert <path-to-server-cert> --key <path-to-server-key> --cacert <path-to-ca-cert> --endpoints <comma-separated-list-of-endpoints> endpoint status -w table

Она должна выполняться с какого-либо узла кластера, так IP-адрес находится в локальной сети Kubernetes. Данная команда выведет таблицу с информацией о членах etcd, в том числе о наличии лидера, размере базы данных, ошибках и т.д.

Проводя время от времени такие проверки, можно получить представление о состоянии кластера Kubernetes. Однако в ручном виде они отнимают много времени. Поэтому целесообразно автоматизировать их с помощью приложения, реализованного, например, на языке программирования Go [3], являющимся родным для Kubernetes, которое будет запущено в кластере и по расписанию запускать их.

 

Список литературы:

  1. Kubernetes [электронный ресурс] URL: https://kubernetes.io (дата обращения 20.05.2023).
  2. etcd [электронный ресурс] URL: https://etcd.io (дата обращения 20.05.2023).
  3. Golang [электронный ресурс] URL: https://go.dev (дата обращения 21.05.2023).

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.