Kubernetes как платформа
для микросервисов
Опыт внедрения в Avito
Сергей
Орлов
Ведущий разработчик,
лидер юнита Архитектура
Михаил
Прокопчук
Разработчик,
юнит Архитектура
Avito
В TOP-5 площадок Рунета
В TOP-3 мировых классифайдов
35 миллионов пользователей ежемесячно
План доклада
Микросервисы в Avito
Проблемы микросервисной архитектуры
Выбор платформы
Как мы используем платформу
Микросервисы в Avito
Проблемы микросервисной архитектуры
Эксплуатация
Порог вхождения
Документация
Выбор платформы
Мы выбрали
Kubernetes
Почему Kubernetes
Развертывание, масштабирование, failover
Service Discovery
Балансировка нагрузки
Разграничение ресурсов
Управление конфигурацией
А также
Встроенный мониторинг
Логирование
Разграничение прав
Проверки работоспособности
Гибкое развертывание
Kubernetes vs. Docker Swarm
Docker Swarm Kubernetes
Масштабирование,
failover
Политики
развертывания
Шаблонизация
Разграничение
ресурсов
Централизованное
логирование
Мониторинг
Архитектура Kubernetes
Использование платформы
Логическая схема
Pod
Deployment
Service
ConfigMap
Pod
Атомарная единица развертывания
Один или несколько контейнеров
Общая сеть и диск
Разграничение ресурсов
Deployment
Количество реплик
Шаблон пода
Стратегия развертывания
Пример: deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ubuntu-sshd-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: ubuntu-sshd
spec:
containers:
- name: ubuntu-sshd
image: rastasheep/ubuntu-sshd:latest
ports:
- containerPort: 22
Service
Маршрутизация
Service discovery
Пример: service
apiVersion: v1
kind: Service
metadata:
name: ubuntu-sshd-service
spec:
selector:
app: ubuntu-sshd
ports:
- protocol: TCP
port: 22
targetPort: 22
Ingress: балансировка L4/L7
DaemonSet - по копии на сервер
Ingress Controller: nginx
Virtual hosts
ConfigMap
Key-value хранилище настроек
Настройки отделены от кода
Можно пробросить как файл или ENV
Логическая схема
CI/CD
Cборка образов
Развертывание
Разное :)
Helm
Пакетный менеджер для Kubernetes
Переиспользование конфигурации
Поддержка окружений
Heapster
Мониторинг ресурсов
Берет метрики из kubelet
Поддержка разных хранилищ
Kubernetes в Avito
Все новые сервисы в Kubernetes
Конфигурация по шаблонам
Развертывание через CI/CD
Ресурсы
Официальный блог Kubernetes: clck.ru/As2WY
Moscow Kubernetes Meetup: clck.ru/As2XM
Видеозаписи Kubernetes Meetup: clck.ru/As2XZ
Блог автора Helm: clck.ru/As2Xf
Children's Guide to Kubernetes: clck.ru/As2YP
Спасибо за внимание!
github.com/theairkit
Прокопчук Михаил
Вопросы?
Орлов Сергей
github.com/marrrvin
mike.prokopchuk@gmail.com foobar@list.ru
facebook.com/marrrrrrrvinfacebook.com/mike.prokopchuk

Сергей Орлов