Showing posts with label devops. Show all posts
Showing posts with label devops. Show all posts

Wednesday, September 23, 2020

Разворачивание Elastic Cloud on Kubernetes

 Привет всем. 

 ЕСК - это сбор, анализ и корреляция журналов, метрик и трассировок из контейнеров, приложений и служб, работающих поверх 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

Успехов!

Friday, September 13, 2019

Docker installation(Установка Докера)

Докер(Docker) - открытая (open) платформа для разработчиков и админов, помогающая проектировать и запускать "контейнеризированные" приложения, главный плюс которого - упаковать приложение со всеми зависимостями в отдельный контейнер(можно даже опубликовать в хабе). Контейнеры не создают такой нагрузки как виртуальные машины, поэтому более эффективно используют ресурсы системы.
"Из википедии: программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы; позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, а также предоставляет среду по управлению контейнерами".

Установка Docker'a на CentOS.
1. Для начала нужно удалить старые версии, если они существуют:
#sudo yum remove docker

2. Далее устанавливаем необходимые утилиты и добавляем репозиторий с докером
#yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

 #yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo


3.Далее устанавливаем Docker Engine
#yum install docker-ce docker-ce-cli containerd.io
Установщик предлагает принять PGP-key, проверяем, что ключ совпадает с указанным на сайте:
 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
Принимаем.

4. Запускаем Докер
#systemctl start docker
5. Установка завершена, можно запустить первое приложение. 
#docker run hello-world 
 
6. Не забудьте добавить пользователю docker права рута, а то будет неудобно запускать команды используя sudo. И да, я делал все под рутом, что не очень правильно:)
 
Успехов!