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

Kubernetes: AWS ALB Ingress Controller — добавление редиректа на другой домен

7 октября 2020
 

 Имеется приложение двух версий — старое и новое, и два домена — старый, и новый. Работает  в AWS Elastic Kubernetes Service, за AWS LoadBalancer, который создаётся из AWS ALB Ingress Controller. Задача — добавить редирект на LoadBalancer со старого домена на новый: старый: dev.api.old-example.com новый: dev.api.new-example.com В самом AWS LoadBalancer это делается через Listener Rules,… Читать далее »

Kubernetes: Evicted поды и Quality of Service для подов

3 октября 2020
 

 Имеется Kubernetes кластер, работает на AWS Elastic Kubernetes Service. В кластере запущено приложение, которое в целом работает без проблем, но система мониторинга периодически сообщает, что: Проверяем поды: Два пода оказались в Evicted статусе — начинаем разбираться. Kubernetes requests и limits В Kubernetes мы имеем возможность ограничить используемые контейнерами ресурсы двумя способами — requests и limits:… Читать далее »

Redis: Master-Slave репликация и запуск в Kubernetes

23 сентября 2020
 

 Задача — запустить Redis в Kubernetes. Используем Master-Slave репликацию и Sentinel для мониторинга и failover. См. Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel. Redis cluster vs Redis replication См. Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis и Choose between Redis Helm Chart and Redis Cluster… Читать далее »

Kubernetes: нагрузочное тестирование и high-load тюнинг — проблемы и решения

25 августа 2020
 

 Вообще, этот пост планировался в виде небольшой заметки о том, как использовать NodeAffinity для Kubernetes Pod: Но, как это часто бывает — за одним потянулось другое, за другим третье — и в результате вышел очередной длиннопост в свободном стиле. Итак, собирался я написать про NodeAffinity, как вдруг подумал — а как будет себя вести Kubernetes… Читать далее »

Helm: secrets плагин не дешифрует данные

18 августа 2020
 

 Имеется токен аутентификации для Gitlab, используя который Kubernetes должен вытянуть образы из приватного Docker registry в Gitlab. Однако, поды остаются в статусе ErrImagePull, а в events записывается событие об ошибке логина в Gitab: Warning Failed 7m37s (x4 over 8m57s) kubelet, ip-10-3-47-58.us-east-2.compute.internal Failed to pull image «registry.gitlab.com/[…]:178662158»: rpc error: code = Unknown desc = Error response… Читать далее »

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 — запрос… Читать далее »