Архив рубрики: Virtualization

In computing, virtualization refers to the act of creating a virtual version of something, including virtual computer hardware platforms, storage devices, and computer network resources.

Kubernetes: namespace висит в Terminating и неочевидности с metrics-server

23 марта 2021
 

 Столкнулся с весьма интересной проблемой при удалении Kubernetes Namespace. При попытке удалить неймспейс — он зависает в статусе Terminating, и никакие попытки его удалить не помогали. Рассмотрим варианты удаления, и докопаемся до причины. Создаём тестовый namespace: [simterm] $ kubectl create namespace test-ns namespace/test-ns created [/simterm] Пробуем его удалить — и удаление зависает: [simterm] $ kubectl… Читать далее »

Opsgenie: интеграция с AWS RDS и алерты

15 марта 2021
 

 Настроим интеграцию Opsgenie с AWS RDS. Идея заключается в том, что бы отправлять в Opsgenie сообщения о события в RDS, а Opsgenie в свою очередь будет отправлять уведомления в Slack. Для этого нам потребуются AWS Simple Notification Service и AWS RDS Event subscriptions. Документация тут>>>. Настройка Opsgenie Тут всё просто — переходим в Integrations list,… Читать далее »

Windows: Windows Subsystem for Linux и установка Ubuntu Linux

14 марта 2021
 

  Windows Subsystem for Linux (WSL) — подсистема Windows, с помощью которой можно запускать различные дистрибутивы Linux прямо в Windows. WSL версии 2, которая сейчас является версией по-умолчаю, под капотом использует систему виртуализации от Microsotf — Hyper-V, с помощью которой и выполняет запуск Linux и совместный доступ к файлам и устройствам. Windows Subsystem for Linux… Читать далее »

Kubernetes: что такое Endpoints

13 марта 2021
 

 Практически все знают, что такое Kubernetes Service, но не все могут быть в курсе, что такое Endpoint, так как обычно он работает «за кулисами», и мы его не видим, аналогично тому, как мы пользуемся Deployment, но редко видим ReplicaSet-ы. Kubernetes Service Итак, Service — это абстракция Kubernetes, которая, используя labels, выбирает поды, на которые следует… Читать далее »

AWS: InvalidSignatureException: Signature not yet current и Kubernetes AWS ALB Ingress controller

4 марта 2021
 

 Одним прекрасным утром девелоперы пожаловались, что не создаются AWS LoadBalancer из Ingress нашего Dev-кластера Kubernetes (AWS EKS). Балансеры создаются через AWS ALB Controller, см. AWS Elastic Kubernetes Service: запуск ALB Ingress controller. Сама ошибка в лога контроллера выглядела так: E0304 07:12:38.595113       1 controller.go:217] kubebuilder/controller «msg»=»Reconciler error» «error»=»no object matching key \»test-namespace/test-ingress\» in local store»  «controller»=»alb-ingress-controller»… Читать далее »

Jenkins: запуск slaves в Kubernetes и билд Docker-образов

26 февраля 2021
 

 Имеется у нас Jenkins, который запускает в Docker-контейнерах свои задачи. Со временем столкнулись с тем, что инстанс t2.2xlarge (8 CPU, 32 RAM) при пиковых нагрузках уже не справляется — забиваются и память, и процессорное время. Варианты — либо продолжать вертикальный скейлинг одного мастер-инстанса, и на нём дальше в Docker запускать джобы — или вынести запуск… Читать далее »

Kubernetes: NGINX/PHP-FPM graceful shutdown — избавляемся от 502 ошибок

24 февраля 2021
 

 Имеется PHP-приложение, работает в Kubernetes в подах с двумя контейнерами — NGINX и PHP-FPM. Проблема: во время скейлинга приложения начинают проскакивать 502 ошибки. Т.е. при остановке подов — некорректно отрабатывает завершение подключений. Рассмотрим процесс остановки подов вообще, и особенности NGINX и PHP-FPM в частности. Тестировать будем приложение в AWS Elastic Kubernetes Service с помощью Yandex.Tank.… Читать далее »

Logz.io: сбор логов из Kubernetes — fluentd vs filebeat

27 января 2021
 

 У нас для сбора логов из Kubernetes-кластера и их просмотра используется Logz.io (есть и локальный Loki). Конкретно сбором и отправкой логов занимается Fluentd-под на каждой WorkerNode, которые деплоятся из DaemonSet в его дефотной конфигурации, см. документацию logzio-k8s. Столкнулся с проблемой, что эти поды используют слишком много CPU — до 3000 millicpu, при том, что на… Читать далее »

ArgoCD: CIOps vs GitOps и деплой приложения из TravisCI

28 ноября 2020
 

 Штош, пришло время подумать о том, как мы будем деплоить наши приложения. Сейчас у нас используются Github-репозитории с кодом и Helm-шаблонами, и Jenkins. Билд в Jenkins в большинстве проектов запускается вручную, после чего: Jenkins-джоба клонирует репозиторий с кодом и манифестами, билдит Docker-образ пушит его в Docker Hub вызывает helm upgrade —install, которому через —set передаёт… Читать далее »

Ansible: модуль community.kubernetes и установка Helm-чарта с ExternalDNS

24 ноября 2020
 

 В посте Kubernetes: обновление DNS в Route53 при создании Ingress выполнили ручную установку ExternalDNS, и посмотрели, как он работает — пора добавить автоматизацию его установки на кластера. В роли Configuration Management Tool у нас используется Ansible, для которого существует модуль community.kubernetes — используем его. Вообще, есть много модулей для работы с Helm, например — helm… Читать далее »