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

Kubernetes: Service, балансировка нагрузки, kube-proxy и iptables

30 октября 2020
 

 Задался я вопросом — а как вообще в Kubernetes происходит балансировка нагрузки между подами? Т.е, есть у нас внешний Load Balancer. За ним — Service. За ним — Pod. Что происходит, когда мы из мира получаем пакет, а у нас несколько подов — как пакеты между ними распределяются? kube-proxy За правила маршрутизации пакетов между Service… Читать далее »

Jenkins: деплой Redis и Helm subchart values

29 октября 2020
 

 Задача — содать Jenkins джобу, которая будет деплоить Redis на Dev/Stage/Prod кластера. В посте Redis: Master-Slave репликация и запуск в Kubernetes сделали это вручную, посмотрели что и как вообще запускается и работает — теперь надо автоматизировать. Главный вопрос — как вообще деплоить и передавать параметры? Хочется использовать уже готовый чарт, но в тоже время —… Читать далее »

Kubernetes: запуск SQL-миграций — Kubernetes Job и Helm hook

26 октября 2020
 

 Имеется проект, которому во время деплоя надо выполнить SQL-миграции. Для запуска миграций надо склонировать репозиторий из Github, и затем выполнить собственно миграции, которые в нём хранятся. Сейчас у нас для этого используются Kubernetes initContainers, причём два — сначала один, с git, клонирует репозиторий с миграциями в Kubernetes Volume, второй с sql-migrate — запускает из этого… Читать далее »

Helm: reusable чарт — named templates, и общий чарт для нескольких приложений

18 октября 2020
 

 Проект активно развивается, Kubernetes прижился, и всё больше наших сайтов запускается в нём. И со временем возникла вполне ожидаемая проблема, которая уже озвучивалась в самом начале нашего «путешествия» в Helm: пошаговое создание чарта и деплоймента из Jenkins — как быть с манифестами Kubernetes и шаблонами Helm для нескольких приложений? Особенно остро она встала сейчас, когда… Читать далее »

Kubernetes: дебаг Init containers при запуске SQL-миграций

15 октября 2020
 

 Имеется приложение в Kubernetes. Деплоится из Helm-чарта. При очередном деплое — новые поды не стартуют, а сам деплой падает со стандартной ошибкой «Upgrade «CHARTNAME» failed: timed out waiting for the condition«: wait.go:225: [debug] Deployment is not ready: eks-dev-1-community-api-ns/community-api. 0 out of 3 expected pods are ready upgrade.go:367: [debug] warning: Upgrade «community-api» failed: timed out waiting… Читать далее »

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… Читать далее »