Привет всем.
ЕСК - это сбор, анализ и корреляция журналов, метрик и трассировок из контейнеров, приложений и служб, работающих поверх Docker и Kubernetes, — все это в одном месте.
Установим ЕСК на работающий кластер кубернетеса. В моем примере кубернетес работает под управлением Rancher'a.
Elastic Cloud on Kubernetes (ECK) построен на шаблоне оператора Kubernetes.
Оператор ECK расширяет базовые возможности оркестрации Kubernetes для поддержки, настройки и управления Elasticsearch, Kibana и APM-сервером.
Операторы - программные расширения Kubernetes, которые используют пользовательские ресурсы для управления приложениями и их компонентами. Другими словами -это метод упаковки, развертывания и управления приложением Kubernetes.
Для установки оператора необходим работающий кластер Kubernetes с поддержкой RBAC и наличие командной утилиты kubectl, подключенной к кластеру.
Установка:
kubectl apply -f https://download.elastic.co/downloads/eck/1.2.1/all-in-one.yaml
Elasticsearch
С помощью kubectl выполним команду
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 7.9.1
nodeSets:
- name: default
count: 1
config:
node.master: true
node.data: true
node.ingest: true
node.store.allow_mmap: false
EOF
Kibana
cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
spec:
version: 7.9.1
count: 1
elasticsearchRef:
name: quickstart
EOF
Для примера созданы 2 модуля, посмотрим их в ранчере.
Для доступа из вне к кибане и эластику пробросим порты:
Готово! Можно подключать агенты сбора логов с приложений.
Ошибки во время установки
1. После установки модуля с кибаной появилась такая ошибка:
Readiness probe failed: Get https://10.41.1.44:5601/login: dial tcp : connect: connection refused
Смысл ее в том, что контейнер не успел задеплоиться из-за HealthCkeck. Поэтому пришлось его отключить через настройки Workload модуля.
Кубер включает в себя 2 типа проб(probes): liveness checks и readiness checks.
- Liveness Check: Проверяет, работает ли отслеживаемый контейнер. Если проба сообщает о сбое, Kubernetes убивает модуль, а затем перезапускает его в соответствии с политикой перезапуска развертывания (deployment restart policy).
- Readiness Check: Проверяет, готов ли контейнер принимать и обслуживать запросы. Если проба сообщает об отказе, модуль изолируется, пока не "починится".
2. Подключение к Elastic'у не выполняется по указаному порту. В логах такая ошибка:
Unable to revive connection: https://quickstart-es-http.default.svc:9200/
Проверьте протокол, скорей всего настроено на https, а не http
3. Для тестов можно отключить TLS. Требуется обновить конфиг эластика.
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 7.9.1
http:
tls:
selfSignedCertificate:
disabled: true
nodeSets:
- name: default
count: 1
config:
node.master: true
node.data: true
node.ingest: true
node.store.allow_mmap: false
EOF
Успехов!