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



Это сообщение в блоге поможет вам узнать, как публиковать данные о событиях кластера Kubernetes в Amazon Elastic Search с помощью агента ведения журнала Fluentd.

В этой статье вы узнаете, как публиковать данные о событиях кластера Kubernetes в Amazon. с помощью агента ведения журнала Fluentd. Затем данные будут просматриваться с помощью , инструмент визуализации с открытым исходным кодом для Elasticsearch. Amazon ES состоит из интегрированной интеграции Kibana.

Мы проведем вас через следующий процесс:





Шаг 1. Создание кластера Kubernetes

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

Мы начнем с создания кластера Kubernetes, и я покажу вам шаг за шагом, как установить и настроить Kubernetes в CentOS 7.



один. Настроить хосты

    • vi / etc / hosts
    • внесите изменения в соответствии с данными вашего хоста в файл hosts

IMG1 - Elasticsearch - Edureka

2. Отключите SELinux, выполнив следующие команды



    • setenforce 0
    • sed -i –follow-symlinks ‘s / SELINUX = enforcing / SELINUX = disabled / g’ / etc / sysconfig / selinux

3. Включить модуль ядра br_netfilter

Модуль br_netfilter необходим для установки Kubernetes. Выполните приведенную ниже команду, чтобы включить модуль ядра br_netfilter.
    • modprobe br_netfilter
    • эхо «1»> / proc / sys / net / bridge / bridge-nf-call-iptables

Четыре. Отключите SWAP, выполнив следующие команды.

    • swapoff -a
    • Затем отредактируйте / etc / fstab и прокомментируйте строку подкачки

5. Установите последнюю версию Docker CE.Установите зависимости пакета для docker-ce, выполнив следующие команды.

    • yum install -y yum-utils устройство-сопоставитель-постоянные-данные lvm2
Добавьте в систему репозиторий docker и установите docker-ce с помощью команды yum.

6. Установите Kubernetes

Используйте следующую команду, чтобы добавить репозиторий kubernetes в систему centos 7.
    • yum install -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https: //packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled = 1 gpgcheck = 1 repo_gpgcheck = 1 gpgkey = https: //packages.cloud.google. com / yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
Установите пакеты kubeadm, kubelet и kubectl, используя команду yum ниже.
  • systemctl start docker && systemctl enable docker

После завершения установки перезапустите все эти серверы.После перезапуска запускаем докер сервисов и кубелет

  • systemctl start docker && systemctl enable docker
  • systemctl start kubelet && systemctl включить kubelet
7. Инициализация кластера Kubernetes Войдите на главный сервер и запустите следующую команду
  • systemctl start kubelet && systemctl включить kubelet
После завершения инициализации Kubernetes вы получите результаты.Скопируйте команды из полученных результатов и выполните их, чтобы начать использовать кластер. Запишите команду kubeadm join из результатов. Команда будет использоваться для регистрации новых узлов в кластере kubernetes. 8. Разверните фланелевую сеть в кластере Kubernetes kubectl apply -f

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Фланелевая сеть развернута в кластере Kubernetes. Подождите некоторое время, а затем проверьте узел и поды кубернетов, используя приведенные ниже команды.
    • kubectl получить узлы
    • kubectl get pods –all-namespaces
И вы получите узел «k8s-master», работающий как «главный» кластер со статусом «готов», и вы получите все модули, необходимые для кластера, включая «kube-flannel-ds» для сетевого модуля. конфигурация.

9. Добавление узлов в кластерПодключитесь к серверу node01 и запустите команду kubeadm join

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831fc29a8c4a0

Подключитесь к серверу node02 и запустите команду kubeadm join

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831fc29a8c4a0

Подождите некоторое время и проверьте главный сервер кластера «k8s-master», проверьте узлы и модули, используя следующую команду.

      • kubectl получить узлы

Теперь вы получите worker1, а worker2 был добавлен в кластер со статусом «готово».

      • kubectl get pods –all-namespaces

Инициализация и настройка мастера кластера Kubernetes завершены.

Шаг 2. Создание кластера Amazon ES

Elasticsearch - это поисковая и аналитическая система с открытым исходным кодом, которая используется для анализа журналов и мониторинга приложений в реальном времени. Amazon Elasticsearch Service (Amazon ES) - это сервис AWS, который позволяет развертывать, использовать и масштабировать Elasticsearch в облаке AWS. Вы можете использовать Amazon ES для анализа событий отправки электронной почты из Amazon SES.

Мы создадим кластер Amazon ES, а затем развернем агент ведения журнала Fluentd в кластере Kubernetes, который будет собирать журналы и отправлять их в кластер Amazon ES.

В этом разделе показано, как использовать консоль Amazon ES для создания кластера Amazon ES.

Чтобы создать кластер Amazon ES

    1. Войдите в Консоль управления AWS и откройте консоль Amazon Elasticsearch Service по адресу https://console.aws.amazon.com/es/
    2. Выбрать Создайте новый домен и выберите тип развертывания в консоли Amazon ES.
    3. В разделе Версия оставьте значение по умолчанию для поля Версия Elasticsearch.
    4. Выбрать Далее
    5. Введите имя для своего эластичного поискового домена в настроить кластер страница под Настроить домен.
    6. На странице «Настройка кластера» выберите следующие параметры в разделе «Экземпляры данных».
      • Тип экземпляра - Выберите t2.micro.elasticsearch (доступен бесплатный уровень).
      • Количество экземпляров - один
    7. ПодВыделенные мастер-экземпляры
      • Включить выделенного мастера - Не включайте эту опцию.
      • Включить осведомленность о зоне - Не включайте эту опцию.
    8. В разделе «Конфигурация хранилища» выберите следующие параметры.
      • Тип хранилища - Выберите EBS. Для настроек EBS выберите тип тома EBS общего назначения (SSD) и размер тома EBS.& thinspиз 10.
    9. Под шифрованием - Не включайте эту опцию
    10. В конфигурации снимка
      • Час начала автоматического снимка - Выберите час начала автоматических снимков 00:00 UTC (по умолчанию).
    11. Выберите Далее
    12. В разделе «Конфигурация сети» выберите «Доступ к VPC» и укажите сведения о вашем VPC, как показано ниже.При аутентификации Kibana: - Не включайте эту опцию.
    13. Чтобы установить политику доступа, выберите Разрешить открытый доступ к домену.Примечание: - В производственной среде вы должны ограничить доступ к определенному IP-адресу или диапазонам.
    14. Выберите 'Далее'.
    15. На странице «Обзор» проверьте свои настройки, а затем выберите «Подтвердить» и «Создать».

Примечание. Для развертывания кластера потребуется до десяти минут. Запишите свой URL-адрес Kibana, как только вы щелкнете по созданному эластичному поисковому домену.

Шаг 3. Разверните агент ведения журнала Fluentd в кластере Kubernetes

Fluentd - это сборщик данных с открытым исходным кодом, который позволяет унифицировать сбор и использование данных для лучшего использования и понимания данных. В этом случае мы развернем ведение журнала Fluentd в кластере Kubernetes, который будет собирать файлы журналов и отправлять их в Amazon Elastic Search.

Мы создадим ClusterRole, который предоставляет разрешения для модулей и объектов пространства имен, чтобы делать запросы на получение, перечисление и наблюдение в кластер.

Во-первых, нам нужно настроить разрешения RBAC (управление доступом на основе ролей), чтобы Fluentd мог получить доступ к соответствующим компонентам.

1.fluentd-rbac.yaml:

apiVersion: v1 kind: ServiceAccount metadata: name: fluentd namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: fluentd namespace: kube-system rules: - apiGroups: - ' 'ресурсы: - pods - глаголы пространств имен: - get - list - watch --- вид: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 метаданные: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io темы: - kind: ServiceAccount name: fluentd namespace: kube-system

Создать: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Теперь мы можем создать DaemonSet.

2. fluentd-daemonset.yaml

apiVersion: extension / v1beta1 kind: DaemonSet metadata: name: fluentd namespace: kube-system labels: k8s-app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: template: metadata: labels: k8s -app: fluentd-logging версия: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd допуски: - ключ: node-role.kubernetes.io/master эффект: контейнеры NoSchedule: - имя: fluentd image: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - name: FLUENT_ELASTICSEARCH_HOST значение: 'elasticsearch.logging' - name: FLUENT_ELASTICSEARCH_PORT значение: '9200' - name: 'FLUENT_ELASTICEARCH' - значение name: FLUENT_UID значение: '0' ресурсы: ограничения: память: 200Mi запросов: cpu: 100m память: 200Mi volumeMounts: - name: varlog mountPath: / var / log - name: varlibdockercontainers mountPath: / var / lib / docker / контейнеры только для чтения : true terminationGracePeriodSeconds: 30 томов: - имя: varlog hostPath: путь: / var / log - имя: varlibdockercontainers hostPath: путь: / var / lib / docker / container

Обязательно определите FLUENT_ELASTICSEARCH_HOST и FLUENT_ELASTICSEARCH_PORT в соответствии с вашей эластичной поисковой средой.

Развернуть:

$ kubectl create -f kubernetes / fluentd-daemonset.yaml

Проверить журналы

$ kubectl журналы fluentd-lwbt6 -n kube-system | grep Connection

Вы должны увидеть, что Fluentd подключается к Elasticsearch в журналах:

Шаг 4. Визуализируйте данные кубернетов в Kibana

  1. Подключитесь к URL-адресу панели управления kibana, чтобы получить из консоли Amazon ES
  2. Чтобы просмотреть журналы, собранные Fluentd в Kibana, нажмите «Управление», а затем выберите «Шаблоны индекса» в разделе «Kibana».
  3. выберите шаблон индекса по умолчанию (logstash- *)
  4. Нажмите «Далее», установите «Имя поля временного фильтра» (@timestamp) и выберите «Создать шаблон индекса».
  5. Нажмите 'Обнаружить', чтобы просмотреть журналы приложений.
  6. Нажмите «Визуализировать», выберите «Создать визуализацию» и выберите «Круговая диаграмма». Заполните следующие поля, как показано ниже.
    • Выберите индекс Logstash- * и щелкните разделенные фрагменты.
    • Агрегация - важные условия
    • Поле = Kubernetes.pod_name.keyword
    • Размер - 10

7. И применить изменения

Это оно! Вот как вы можете визуализировать Kubernetes Pod, созданный в Kibana.

Резюме :

Мониторинг с помощью анализа журналов - важный компонент любого развертывания приложения. Вы можете собирать и объединять журналы по всему кластеру в Kubernetes, чтобы отслеживать весь кластер с единой панели управления. В нашем примере мы увидели, что fluentd выступает в качестве посредника между кластером Kubernetes и Amazon ES. Fluentd объединяет сбор и агрегацию журналов и отправляет журналы в Amazon ES для анализа журналов и визуализации данных с помощью kibana.

В приведенном выше примере показано, как добавить ведение журнала поиска AWS Elastic и мониторинг кибаны в кластер Kubernetes с помощью fluentd.

во власти Java

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

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.