Архив метки: Kubernetes

Helm: dependencies aka subcharts — обзор и пример

14 августа 2020
 

 Имеется Helm chart, который запускает API-бекенд нашего приложения, для работы которого требуется memcached. Что бы не создавать отдельный деплоймент и не добавлять в Jenkins вторую джобу с helm install — добавим memcached как dependency для нашего чарта: тогда при установке самого приложения, Helm загрузит архив с чартом memcached, и установит его вместе с чартом нашего… Читать далее »

Instana: мониторинг Kubernetes-кластера

12 августа 2020
 

 В дополнение к нашему Prometheus, который осуществляет общий мониторинг всех ресурсов, веб-разработчики попросили подключить им Instana. Из того, что нам сейчас интересно — Instana умеет мониторить Kubernetes кластера, и отдельные веб-сайты. Для мониторинга кластера будем запускать DaemonSet, который создаст поды с Instana-агентами на каждой рабочей ноде. А для мониторига веб-сайта — разработчики подключат библиотеку в… Читать далее »

Kubernetes: HorizontalPodAutoscaler — обзор и примеры

11 августа 2020
 

 Kubernetes HorizontalPodAutoscaler, как видно из названия, предназначен для автоматического скейлинга Kubernetes Pods в кластере, которые управляются ReplicationController, Deployment или ReplicaSet контроллерами, основываясь на их метриках потребления ресурсов — CPU, память и т.д. Кратко его рассматривали в посте Kubernetes: запуск metrics-server в AWS EKS для Kubernetes Pod AutoScaler, теперь разберёмся с доступными метриками. Для HPA доступны… Читать далее »

Neo4j: запуск в Kubernetes

5 августа 2020
 

 В предыдущем посте — Neo4j: graph database — запуск в Docker и примеры работы с Cypher QL — мы запустили Neo4j в Docker, и познакомлись с его архитекторой и языком запросов CQL. Следующая задача — запустить сервер баз данных в Kubernetes. Используем Neo4j Community Edition, запускать будем в виде одного инстанса (т.к. поддержка кластеризации только… Читать далее »

Kubernetes: PersistentVolume и PersistentVolumeClaim — обзор и примеры

31 июля 2020
 

 Для работы с дисками для данных, которые должны храниться постоянно, Kubenetes предоставляет два типа ресурсов — PersistentVolume и PersistentVolumeClaim. PersistentVolume — непосредственно система хранения, раздел на жёстком диске, например AWS EBS, подключенном к одному из AWS EC2, и с точки зрения этого кластера является таким же ресурсом как, например, Kubernetes Worker Node. PersistentVolumeClaim — запрос… Читать далее »

Kubernetes: перезапустить Cron Job вручную

27 июля 2020
 

 Имеется Cron Job, которая при последнем выполнении сфейлилась. Найдём причину ошибки, а зачем перезапустим задачу вручную. Проверяем имеющиеся задачи: [simterm] $ kk -n eks-prod-1-bttrm-apps-ns get cronjobs NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE bttrm-apps-backend-reccuring-payment-cron 0 10 * * * False 1 22m 45d [/simterm] Проверяем поды крон-задач: [simterm] $ kk -n eks-prod-1-bttrm-apps-ns get pod |… Читать далее »

Kubernetes: мониторинг кластера с Prometheus Operator

18 июня 2020
 

 В продолжение поста Kubernetes: мониторинг с Prometheus, в котором мы настроили мониторинг вручную, и более-менее разобрались с тем, как оно всё внутри работает — теперь попробуем прикрутить Prometheus Operator из Helm-репозитория. Напомню, задача — поднять Prometheus и все необходимые експортёры в AWS Elastic Kubernetes Cluster, и с него через /federation передавать метрики на наш «центровой»… Читать далее »

Kubernetes: 503 no endpoints available for service — причины и решения

15 июня 2020
 

 Имеется Redis, для которого создан Service типа ClusterIP. К этому Редису должны ходить поды этого неймспейса (Gorush).   Проблема в том, что поды с Gorush подключиться к Redis по адресу gorush-server-redis-svc:6379 не могут — отваливаются с ошибкой «Can’t connect redis server: connection refused«: [simterm] $ kk -n gorush-test logs gorush-server-55cd659dff-9wfbw time=»2020/06/12 — 13:44:02″ level=debug msg=»Init… Читать далее »

Kubernetes: ClusterIP vs NodePort vs LoadBalancer, Services и Ingress — обзор, примеры

4 июня 2020
 

 Для сетевого взаимодействия Kubernetes предоставляет четыре типа Service-ресурсов — ClusterIP (дефолтный), NodePort, LoadBalancer и ExternalName, плюс ресурс Ingress. В этом посте разберём каждый из них, и попробуем их в работе. Документация по типам — Publishing Services (ServiceTypes). Рассматривается в основном AWS, потому учитываем, что сеть у нас — AWS VPC, балансировщики нагрузки — AWS ALB/CLB,… Читать далее »

Helm: helm-secrets — шифрование sensitive данных с AWS KMS и деплой из Jenkins

15 мая 2020
 

 В продолжение поста Helm: пошаговое создание чарта и деплоймента из Jenkins — теперь нам надо добавить шифрование данных, что бы не хранить пароли и различные приватные ключи в открытом виде в Github-репозиториях — даже пусть и приватных. Судя по гуглу, чуть ли не единственный вариант — это использование helm-secrets (а подскажите в комментариях — кто… Читать далее »