Благодаря собственному стеку планировщиков и контроллеров Kubernetes может восстанавливаться после незначительных сбоев, сбоев узлов или приложений изнутри своих модулей. Однако, если происходит много сбоев, это может не иметь ничего общего с инфраструктурой, а все, что связано с вашим приложением, которое Kubernetes может пытаться перезапускать снова и снова, но поскольку код неисправен, ошибка будет сохраняться и может даже остаться незамеченной.
Ошибки, которые в большинстве случаев остаются незамеченными, - это те, при которых приложения не дают сбоев, а в конечном итоге чрезмерно используют системные ресурсы и снижают производительность кластеров. Это особенно неприятные случаи, и Kubernetes Metrics Server может быть полезным инструментом для отслеживания их.
Проект официально является частью проекта Kubernetes, но не включен в большинство сертифицированных Kubernetes дистрибутивов. Он состоит из двух важных частей, которые стоит обсудить: Metrics API и сам Metrics Server. Но сначала давайте настроим его на наш кластер Kubernetes (K8).
Экспериментальная установка Kubernetes
По состоянию на июль 2018 года Docker для Mac и Windows поставляются с сертифицированной Kubernetes реализацией самого K8. Сделать это так же просто, как установить K8 в дистрибутив Linux. Вы можете перейти в настройки Docker, и, если экземпляр Docker обновлен, вы найдете вкладку Kubernetes в меню. Просто включите Kubernetes вместо Docker Swarm, и у вас будет готовый к экспериментам кластер с одним узлом.
Затем нам нужно запустить и запустить простой набор приложений для нашего варианта использования. Создайте папку Deployments и внутри нее создадим nginx-развертывание.ямл файлы, которые будут развертывать модули Nginx без сохранения состояния.
apiVersion: apps / v1 # для версий до 1.9.0 использовать приложения / v1beta2вид: Развертывание
метаданные:
имя: nginx-развертывание
спецификация:
селектор:
matchLabels:
приложение: nginx
Replicas: 2 # указывает развертыванию запустить 2 модуля, соответствующие шаблону
шаблон:
метаданные:
ярлыки:
приложение: nginx
спецификация:
контейнеры:
- имя: nginx
изображение: nginx: 1.7.9
порты:
- containerPort: 80
Сохраните файл и в том же каталоге, где находится этот файл, выполните команду:
$ kubectl create -f nginx-развертывание.ямлВозможно, нам придется подождать несколько минут, чтобы Kubernetes загрузил образы контейнеров, подготовил контейнеры и выполнил небольшую разную бухгалтерию. Как только это будет сделано, вы увидите список модулей:
$ kubectl получить поды
Как видите, у нас есть два экземпляра модуля, так как .yaml файл прописал.
Теперь, когда у нас есть что отслеживать, нам нужно включить Metrics Server. Сначала проверьте версию Kubernetes, которую вы используете. Если версия 1.8 или выше, мы бы запустили другое развертывание, и если оно равно 1.7, затем мы возвращаемся к устаревшему:
версия $ kubectlВы можете получить официальный образ и начать работу, клонировав этот репозиторий GitHub, а затем в корне репозитория запустите kubectl create -f с соответствующими .yaml в зависимости от версии K8, которую вы используете.
$ git clone https: // github.com / кубернетес-инкубатор / метрик-сервер.мерзавец$ cd metrics-server
# Если вы используете Kubernetes версии 1.8 или выше
$ kubectl create -f развертывание / 1.8 + /
# Если версия 1.7, то
$ kubectl create -f развертывание / 1.7 /
Дайте кубернетам время загрузить изображения и запустить сервер метрик. Это может занять несколько минут. Как только это будет сделано, вы готовы запустить сервер метрик. Основная команда основана на вершина команда, которая часто запускается для мониторинга системы Linux. Но у него есть два варианта: один для проверки использование ресурсов на вычислении узлы а во-вторых, чтобы оценить потребленный ресурс развернутыми стручки и. Вот как можно увидеть эти две детали:
верхний узел $ kubectl$ kubectl top pod
Вы можете увидеть, насколько модуль нагружает вашу систему с точки зрения памяти или процессорного времени, и, используя Metrics API, вы также можете настроить оповещения в соответствии с.
Куда это пойдет отсюда?
Новые сценарии использования сервера метрик будут иметь решающее значение в будущем Kubernetes. Этот проект все еще находится в версии 0.2.x, когда он созреет и будет интегрирован в основную архитектуру Kubernetes, он будет собирать важные данные для планировщика, помогая ему более эффективно распределять поды по узлам.
Точно так же Horizontal Pod Autoscaler получит большую выгоду от проекта и поможет вам увеличить или уменьшить масштаб, чтобы ресурсы оптимально использовались приложениями.
Рекомендации
- Развертывания Nginx
- Сервер метрик Kubernetes
- Документацию по дизайну для Metrics API можно найти здесь, и аналогичную информацию о Metrics Server можно найти здесь.