Рубрики
Uncategorized

Избегание отключений кластера Kubernetes с помощью синтетического мониторинга

Что такое синтетический мониторинг? Синтетический мониторинг состоит из предварительно определенных проверок на … Помечено Kubernetes, Syntheticmonitoring, Kuberhealthy, DevOps.

Что такое синтетический мониторинг?

Синтетический мониторинг состоит из предварительно определенных проверок для активного мониторинга критических элементов в вашей инфраструктуре. Эти проверки имитируют функциональность элементов. Мы также можем имитировать связь между элементами, чтобы обеспечить сквозное соединение. Непрерывный мониторинг этих проверок также помогает измерить общую производительность с точки зрения доступности и времени отклика.

Мы сократим объем синтетических проверок для кластеров Kubernetes, а остальная часть поста будет основана на том же.

Синтетические проверки могут помочь SRES определить проблемы и определить медленные ответы и время простоя, прежде чем это повлияет на фактический бизнес. Это может помочь активно обнаружить сбои сети, неправильные конфигурации, потерю сквозного соединения и т. Д. Во время обновлений, крупных архитектурных изменений или любых выпусков функций.

Почему синтетические проверки важны в Kubernetes?

Kubernetes — это коллекция распределенных процессов, работающих одновременно. Таким образом, определение доменов сбоя в кластере Kubernetes может быть проблемной задачей. Хорошо описанная синтетическая проверка может уменьшить/избежать возможного простоя из-за этих доменов отказа путем воспроизведения предполагаемого рабочего процесса и измерения его производительности. Некоторые домены сбоев можно описать следующим образом:

  • Проблемы с узлами (Docker Daemon/Kubelet в неудачном состоянии, нераспределенный IP -адрес из -за сбоев CNI и т. Д.).
  • Проблемы с стручками (неудачные проверки здоровья, стручки не в состоянии управления и т. Д.)
  • Проблемы пространства имен (стручки не могут запланировать в пространстве имен)
  • Проблемы с разрешением DNS (сбои в поисках COREDNS)
  • Проблемы сети (изменения в сетевых политиках и т. Д.)
  • И еще много …

Инструменты, доступные для Kubernetes, синтетические проверки/мониторинг

Есть Несколько инструментов, доступных для синтетического мониторинга, такие как Appdynamics, New Relic, Dynatrace и т. Д. Для этого поста давайте сосредоточимся на нативных синтетических проверках Kubernetes.

На момент написания этого поста у двух инструментов есть нативные синтетические проверки Kubernetes, а именно Kuberhealthy и Графана Облако Анкет Kuberhealthy является инструментом синтетического мониторинга на основе операторов, который использует пользовательские ресурсы, называемые Kuberhealthy проверки (KHChecks), в то время как Grafana Cloud использует агенты для сбора данных из зондов, которые периодически проверяют предварительно определенные конечные точки. Kuberhealthy обеспечивает гораздо больше синтетических проверок по сравнению с облаком Grafana, а также это также вариант с открытым исходным кодом. Таким образом, мы рассмотрим синтетический мониторинг в кластерах Kubernetes с помощью Kuberhealthy.

Что такое Kuberhealthy?

Kuberhealthy является оператором для проведения синтетических проверок. Каждая синтетическая проверка представляет собой тестовый контейнер (штука для контроля), созданный пользовательским ресурсом под названием Khcheck/Khjob (Kuberhealthy Check/Kuberhealthy Job). Как только чеки созданы, Kuberhealthy планирует все чеки с данным интервалом и в течение данного тайм -аута. Синтетические проверки определены в форме кхчека или кхджоб. Оба пользовательских ресурса почти одинаковы в функциональности, за исключением того, что KHJOB работает один раз, тогда как KHCHECK работает через регулярные промежутки времени.

Проверка развертывания [предоставлено: Kuberhealthy]

Kuberhealthy Provisions Checker Pods, соответствующие конкретному кхчеку. Шекер -капсул уничтожается после того, как цель обслуживается. Цикл создания/удаления повторяется через регулярные промежутки времени в зависимости от продолжительности RunInterval / Тайм -аут соответственно в конфигурации кхчека. Результат затем отправляется в Kuberhealthy, который, в свою очередь, отправляет его в метрики и конечные точки статуса. Для мониторинга мы можем интегрировать его с Prometheus или просмотреть его на странице статуса на основе JSON. Эта страница дает консолидированный статус всех кхчеков.

Чеки доступны с Kuberhealthy

Доступны предварительно определенные проверки, которые проверяют функции Core Kubernetes. Мы можем использовать чеки, предоставленные непосредственно Kuberhealthy, или мы также можем написать наши собственные проверки в соответствии с вариантом использования.

Вот один пример кхчека. Любое приложение, выполняющее операции CRUD в базе данных/хранилище, должно иметь постоянное соединение с ним. Kuberhealthy HTTP -проверка помогает проверить подключение к конечным точкам HTTP/HTTPS. Например, следующие проверки кххека на достижение Minio Cluster. Для моделирования реалистичного сценария Minio выставлен через NGROK. Если соединение будет успешным, оно покажет ОК: правда иначе, если соединение сломается, оно покажет ОК: ложь Анкет

apiVersion: comcast.github.io/v1
kind: KuberhealthyCheck
metadata:
  name: a-minio-reachable
  namespace: kuberhealthy
spec:
  runInterval: 2m
  timeout: 2m
  podSpec:
    containers:
      - name: a-minio-reachable
        image: kuberhealthy/http-check:v1.5.0
        imagePullPolicy: IfNotPresent
        env:
          - name: CHECK_URL
            value: "http://ff333084d5a0.ngrok.io/login"
          - name: COUNT #### default: "0"
            value: "5"
          - name: SECONDS #### default: "0"
            value: "1"
          - name: PASSING_PERCENT #### default: "100"
            value: "100"
          - name: REQUEST_TYPE #### default: "GET"
            value: "GET"
          - name: EXPECTED_STATUS_CODE #### default: "200"
            value: "200"
        resources:
          requests:
            cpu: 15m
            memory: 15Mi
          limits:
            cpu: 25m
    restartPolicy: Always
    terminationGracePeriodSeconds: 5

Некоторые из важных применений упоминаются в следующем разделе.

Как мы избежали серьезного отключения в кластере Kubernetes?

Мы начали столкнуться с нехваткой IP-адресов, так как кластер Kubernetes развернулся в AWS, когда на борту на борту на нем начали расти большое количество микро-сервисов. Проблема станет более серьезной во время масштабирования или обновления взрыва. Осуществимым решением было включить вторичное решение CIDR, предоставленное AWS. Тем не менее, это потребовало многих изменений в сети. Небольшая ошибка может привести к серьезным отключениям.

Мы хотели решение, которое купит нам некоторое время, чтобы определить неправильные конфигурации (если таковые имеются) во время развертывания решения. Мы определили все конечные точки зависимых услуг для всех микро-сервисов. Мы создали соответствующие TCP и HTTP KHCHECKS и установили Kuberhealthy вместе с манифестом кхчека. Следующее изображение показывает настройку перед выпущением вторичного CIDR. Все стручки могут подключаться к зависимым службам. (Обратите внимание, что диаграмма является минималистичной версией сценария.)

Теперь во время развертывания мы хотели убедиться, что все будет хорошо работать с новым IP -адресом POD (100.64.x.x). Таким образом, мы вручную добавили один новый узел в кластер, который использует вторичный CIDR. KHCheck разместил Daemonset на новый узел и проверил подключение со всеми конечными точками. Мы поняли, что некоторые из конечных точек не смогли подключиться.

Мы проверили необходимые белые списки в группах безопасности, NaCls и WAF, и обнаружили, что новый CIDR не в белом списке в некоторых из WAF. Мы исправили конфигурацию WAF соответственно, и кхчеки показали статус ОК. Затем мы перейдем к фактическому вторичному развертыванию CIDR, и все работало нормально, как показано.

Таким образом, мы охраняли наш кластер Kubernetes от крупного отключения с помощью Kuberhealthy.

Варианты использования для Kuberhealthy Synthetic проверки

Мы исследовали и обнаружили, что Kuberhealthy может помочь в следующих случаях использования, чтобы сделать кластер Kubernetes более надежным:

Сеть изменений

Если существуют серьезные изменения в сети, которые вы должны выполнить, то наличие некоторых проверок на важных конечных точках с использованием HTTP или TCP KHCHECKS может помочь найти какие -либо неправильные конфигурации и избежать простоя.

IAM меняется

У Kuberhealthy есть чеки Kiam, чтобы проверить правильную функциональность Kiam. Эта концепция может быть дополнительно расширена на любой кластер производственного уровня, который должен быть строгим в отношении IAM нагрузки. При укреплении доступа команда безопасности может заблокировать требуемый доступ, что может привести к простоям. Наличие соответствующих чеков IAM помогает минимизировать время простоя (чеки Kiam, если вы используете KIAM в своем кластере).

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

Конечная точка подключение

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

AMI проверка

Существует предопределенная проверка AMI, которая проверяет AMI, используемый в кластере, существует на рынке Amazon. Мы можем изменить проверку AMI, чтобы проверить важные функции в специально выпеченных AMI, таких как синхронизация NTP, структуры каталога, доступ пользователя и т. Д.

Coredns проверяет

Неправильная конфигурация Coredns может препятствовать разрешению DNS при тяжелых нагрузках. Следовательно, проверка DNS может обеспечить статус разрешения DNS как внутреннего, так и внешнего в таких сценариях. Чтобы узнать больше об этом, следуйте этому руководству о том, как эффективно использовать Coredns с Kubernetes.

Проверки квотов ресурсов

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

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

Вывод

Эта статья рассказала о следующих моментах:

  • Что такое синтетический мониторинг и его важность в кластерах производственного уровня?
  • Почему синтетические проверки важны для кластера Kubernetes?
  • Что такое Kuberhealthy?
  • Как мы охраняли кластер Kubernetes от крупного отключения?
  • Каковы некоторые из важных случаев использования синтетических проверок с Kuberhealthy?

Подводя итог, этот пост представил вас с Kuberhealthy Tool для синтетического мониторинга кластера Kubernetes, чтобы избежать отключений и повышения надежности инфраструктуры.

Надеюсь, эта статья была полезна для вас, и в случае, если у вас есть какие -либо дополнительные вопросы, пожалуйста, не стесняйтесь начать разговор со мной на Twitter Анкет Счастливого кодирования:)

Ссылки и дальнейшее чтение

Оригинал: «https://dev.to/infracloud/avoiding-kubernetes-cluster-outages-with-synthetic-monitoring-4o90»