Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes: основные точки отказа и способы пов...

Kubernetes: основные точки отказа и способы повышения надежности платформы

Виртуальные среды и контейнеры все больше и больше проникают в Enterprise, и если раньше они были востребованы лишь в dev-среде, то сейчас уже многие компании запускают свои продукты и приложения в виде docker-контейнеров и в Production. Но можно ли доверить критические сервисы такой новой и на первый взгляд нестабильной и сложной платформе как Kubernetes?

В основе доклада лежит опыт инфраструктурной команды, обслуживающей кластер Kubernetes, в котором регулярно создаются и удаляются сотни различных наборов сервисов, ежедневно работают десятки продуктовых команд и все обеспечивается за счет тонкой настройки open-source решений.

Спикер: Руслан Гайнанов, тимлид DevOps-команды в ИТ-Холдинге Т1

Смотреть полностью:
https://youtu.be/O32cW69iKSw

Ruslan Gainanov

February 26, 2025
Tweet

More Decks by Ruslan Gainanov

Other Decks in Programming

Transcript

  1. KUBERNETES: ОСНОВНЫЕ ТОЧКИ ОТКАЗА Или способы повышения надежности платформы Руководитель

    команды разработки, Группа «Иннотех» Руслан Гайнанов 30.11.2022
  2. РУСЛАН ГАЙНАНОВ Руководитель команды разработки Управления технологических решений, Группа «Иннотех»

    Telegram: @gainanovrus Стек: Kubernetes (CKA/CKAD), Python, GitLab CI/CD Достижения: обеспечил оперативный запуск сервисов для диагностики заболеваний с использованием решений на базе алгоритмов ИИ во время пандемии COVID-19 в 43 регионах России Хобби: хожу в походы, хочу посетить Алтай следующим летом, мечтаю объехать Крым на велосипеде и подняться на Эльбрус
  3. ТЕХНОЛОГИЧЕСКАЯ ПЛАТФОРМА Business applications INFRASTRUCTURE VPS, BM, NAS, etc SYSTEM

    SOFTWARE Event Streaming, IMDB, DB, DCS, etc SYSTEM SOFTWARE ТЕХНОЛОГИЧЕСКАЯ ПЛАТФОРМА Event Streaming DB Business applications IMDB DCS K8S SECURITY NOTIFICATION CENTRE APPL SERVICES DOCUMENT CENTRE AUTHENTICATION & AUTHORIZATION SECURITY BUSINESS PROCESS CENTER MDM API PLATFORM OBSERVABILITY KUBERNETES
  4. ЦЕЛЬ ПРОБЛЕМА ЦЕЛЬ ПРОБЛЕМА Рассказать про сценарии применения платформы Kubernetes

    для ваших микросервисов Нет доверия к новой технологии и нет желания отказываться от старых подходов по управлению сервисами
  5. ЦЕЛЬ ПРОБЛЕМА ЦЕЛЬ ПРОБЛЕМА Передать наш опыт построения надежной инфраструктуры

    на базе Kubernetes, и описать проблемы, с которыми мы столкнулись
  6. ПЛАТФОРМА KUBERNETES 11 Это расширяемая платформа с открытым исходным кодом

    для управления контейнеризованными рабочими нагрузками и сервисами
  7. КАКИЕ ПРЕИМУЩЕСТВА ЭТО ДАЕТ 36 Декларативное описание сервисов В формате

    YAML описываем желаемое состояние Обновления без downtime За счет проверок Readiness/Liveness сервисы обновляются незаметно для клиента (Rollout стратегия) Автоматический перезапуск сервисов В случае сбоев поды мигрируют на другой узел Балансировка и готовность к масштабированию Балансировка на 3 уровнях: DNS+Ingress, несколько реплик приложений и несколько реплик мастеров
  8. КОГДА ОРКЕСТРАЦИЯ НЕ НУЖНА 38 Небольшое количество сервисов/хостов Не требуется

    масштабирование Разрешен вынужденный простой работы Не требуется доп. функционал
  9. КОГДА ОРКЕСТРАЦИЯ НЕ НУЖНА 39 Небольшое количество сервисов/хостов Не требуется

    масштабирование Разрешен вынужденный простой работы Не требуется доп. функционал
  10. УРОВЕНЬ CONTROL PLANE 44 ETCD § Быстрые диски (fsync latency

    <10ms, highest priority) § 3 реплики + снапшоты § Мониторинг LeaderChanges + NoLeader
  11. ETCD § Быстрые диски (fsync latency <10ms, highest priority) §

    3 реплики + снапшоты § Мониторинг LeaderChanges + NoLeader API Server § OpenID + RBAC rules + LDAP (dex+rbac-operator) § 3 реплики + балансировщик (keepalived+haproxy) § Мониторинг latency/rps (GAP Stack) УРОВЕНЬ CONTROL PLANE 45
  12. УРОВЕНЬ CONTROL PLANE 46 ETCD § Быстрые диски (fsync latency

    <10ms, highest priority) § 3 реплики + снапшоты § Мониторинг LeaderChanges + NoLeader API Server § OpenID + RBAC rules + LDAP (dex+rbac-operator) § 3 реплики + балансировщик (keepalived+haproxy) § Мониторинг latency/rps (GAP Stack) Scheduler § Request/Limit + мониторинг OOMKilled и CPUThrottling § VPA/HPA (keda): когда usage << request == allocatable § Affinity/Toleration: «чтобы отделить зерна от плевел»
  13. УРОВЕНЬ CONTROL PLANE 47 ETCD § Быстрые диски (fsync latency

    <10ms, highest priority) § 3 реплики + снапшоты § Мониторинг LeaderChanges + NoLeader API Server § OpenID + RBAC rules + LDAP (dex+rbac-operator) § 3 реплики + балансировщик (keepalived+haproxy) § Мониторинг latency/rps (GAP Stack) LoadBalancer + ingress § Отказались от MetalLB § ingress-nginx + hostNetwork=true + round-robin DNS § ServiceMesh: начали внедрять Istio § Policies: контроль за Ingress Path Scheduler § Request/Limit + мониторинг OOMKilled и CPUThrottling § VPA/HPA (keda): когда usage << request == allocatable § Affinity/Toleration: «чтобы отделить зерна от плевел»
  14. УРОВЕНЬ WORKER NODES 48 Container Runtime + kubelet § Docker

    мёртв: используйте cri-o/containerd § Зеркало DockerHub: Nexus (+CleanPolicies), без latest § Мониторинг: диск под докер-образы (node_exporter)
  15. Container Runtime + kubelet § Docker мёртв: используйте cri-o/containerd §

    Зеркало DockerHub: Nexus (+CleanPolicies), без latest § Мониторинг: диск под докер-образы (node_exporter) Container Network + kube-proxy § Calico Operator (+ Calico Typha) § Мониторинг рестартов сервисов (CrashLoopBackOff) § Overcommit ресурсов: свести к минимуму УРОВЕНЬ WORKER NODES 49
  16. Container Runtime + kubelet § Docker мёртв: используйте cri-o/containerd §

    Зеркало DockerHub: Nexus (+CleanPolicies), без latest § Мониторинг: диск под докер-образы (node_exporter) Container Network + kube-proxy § Calico Operator (+ Calico Typha) § Мониторинг рестартов сервисов (CrashLoopBackOff) § Overcommit ресурсов: свести к минимуму УРОВЕНЬ WORKER NODES 50 Container Storage § Динамическое создание дисков (Dynamic Provisioning) § NFS-сервер: NFSv3, опции soft, reclaim policy (limitations) § А лучше сразу взять кластерную сетевую ФС: Ceph, LINSTOR
  17. KUBERNETES ЭТО… 53 Kubernetes нужен не всем и не всегда

    – это факт! Kubernetes – это не всего 5 бинарей!
  18. KUBERNETES ЭТО… 54 Kubernetes нужен не всем и не всегда

    – это факт! Kubernetes – это не всего 5 бинарей! но…
  19. KUBERNETES ЭТО НЕ ROCKET SCIENCE 55 Kubernetes позволяет строить сложные

    и надежные системы Kubernetes нужен не всем и не всегда – это факт! Kubernetes – это не всего 5 бинарей! но…
  20. KUBERNETES ЭТО НЕ ROCKET SCIENCE 56 Kubernetes позволяет строить сложные

    и надежные системы Kubernetes использует для этого понятный декларативный язык Kubernetes нужен не всем и не всегда – это факт! Kubernetes – это не всего 5 бинарей! но…
  21. KUBERNETES ЭТО НЕ ROCKET SCIENCE 57 Kubernetes позволяет строить сложные

    и надежные системы Kubernetes использует для этого понятный декларативный язык Kubernetes нужен не всем и не всегда – это факт! Kubernetes – это не всего 5 бинарей! но… Kubernetes расширяем за счет дополнительных модулей (open-source)
  22. СПАСИБО ЗА ВНИМАНИЕ СПАСИБО ЗА ВНИМАНИЕ «Мало кто находит выход,

    некоторые не видят его, даже если найдут, а многие даже не ищут» (с) «Алиса в стране чудес» Льюис Кэрролл @gainanovrus Telegram