В этой статье вы узнаете, как публиковать данные о событиях кластера Kubernetes в Amazon. с помощью агента ведения журнала Fluentd. Затем данные будут просматриваться с помощью , инструмент визуализации с открытым исходным кодом для Elasticsearch. Amazon ES состоит из интегрированной интеграции Kibana.
Мы проведем вас через следующий процесс:
- Создание кластера Kubernetes
- Создание кластера Amazon ES
- Разверните агент ведения журнала Fluentd в кластере Kubernetes
- Визуализируйте свидание Kubernetes в Кибане
Шаг 1. Создание кластера Kubernetes
Kubernetes - это платформа с открытым исходным кодом, созданная Google для управления контейнерными приложениями. он позволяет управлять, масштабировать и развертывать контейнерные приложения в кластерной среде. Мы можем организовать наши контейнеры на разных хостах с помощью Губернаторы , масштабируйте контейнерные приложения со всеми ресурсами на лету и получите централизованную среду управления контейнерами.
Мы начнем с создания кластера Kubernetes, и я покажу вам шаг за шагом, как установить и настроить Kubernetes в CentOS 7.
один. Настроить хосты
- vi / etc / hosts
- внесите изменения в соответствии с данными вашего хоста в файл hosts
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
- yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum install -y docker-ce
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
- systemctl start kubelet && systemctl включить kubelet
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Фланелевая сеть развернута в кластере Kubernetes. Подождите некоторое время, а затем проверьте узел и поды кубернетов, используя приведенные ниже команды.- kubectl получить узлы
- kubectl get pods –all-namespaces
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
- Войдите в Консоль управления AWS и откройте консоль Amazon Elasticsearch Service по адресу https://console.aws.amazon.com/es/
- Выбрать Создайте новый домен и выберите тип развертывания в консоли Amazon ES.
- В разделе Версия оставьте значение по умолчанию для поля Версия Elasticsearch.
- Выбрать Далее
- Введите имя для своего эластичного поискового домена в настроить кластер страница под Настроить домен.
- На странице «Настройка кластера» выберите следующие параметры в разделе «Экземпляры данных».
- Тип экземпляра - Выберите t2.micro.elasticsearch (доступен бесплатный уровень).
- Количество экземпляров - один
- ПодВыделенные мастер-экземпляры
- Включить выделенного мастера - Не включайте эту опцию.
- Включить осведомленность о зоне - Не включайте эту опцию.
- В разделе «Конфигурация хранилища» выберите следующие параметры.
- Тип хранилища - Выберите EBS. Для настроек EBS выберите тип тома EBS общего назначения (SSD) и размер тома EBS.& thinspиз 10.
- Под шифрованием - Не включайте эту опцию
- В конфигурации снимка
- Час начала автоматического снимка - Выберите час начала автоматических снимков 00:00 UTC (по умолчанию).
- Выберите Далее
- В разделе «Конфигурация сети» выберите «Доступ к VPC» и укажите сведения о вашем VPC, как показано ниже.При аутентификации Kibana: - Не включайте эту опцию.
- Чтобы установить политику доступа, выберите Разрешить открытый доступ к домену.Примечание: - В производственной среде вы должны ограничить доступ к определенному IP-адресу или диапазонам.
- Выберите 'Далее'.
- На странице «Обзор» проверьте свои настройки, а затем выберите «Подтвердить» и «Создать».
Примечание. Для развертывания кластера потребуется до десяти минут. Запишите свой 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
- Подключитесь к URL-адресу панели управления kibana, чтобы получить из консоли Amazon ES
- Чтобы просмотреть журналы, собранные Fluentd в Kibana, нажмите «Управление», а затем выберите «Шаблоны индекса» в разделе «Kibana».
- выберите шаблон индекса по умолчанию (logstash- *)
- Нажмите «Далее», установите «Имя поля временного фильтра» (@timestamp) и выберите «Создать шаблон индекса».
- Нажмите 'Обнаружить', чтобы просмотреть журналы приложений.
- Нажмите «Визуализировать», выберите «Создать визуализацию» и выберите «Круговая диаграмма». Заполните следующие поля, как показано ниже.
- Выберите индекс 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 довольных учащихся по всему миру.
Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.