Порівняння вартості на Managed Kubernetes (2020)

Прим. перев.: Американський DevOps-інженер Sid Palas, користуючись недавнім анонсом Google Cloud як інфоприводом, провів порівняння вартості послуги Managed Kubernetes (у різних конфігураціях) від провідних світових хмарних провайдерів. Додатковим плюсом його роботи стала публікація відповідного Jupyter Notebook, що дозволяє (за наявності мінімальних знань Python) підкоригувати розрахунки під свої потреби.

TL, д-р: Azure та Digital Ocean не стягують плату за обчислювальні ресурси, що використовуються для керуючого шару (control plane), що робить їх підходящим вибором для розгортання безлічі невеликих кластерів. Для запуску малої кількості великих кластерів найкраще підходить GKE. Крім того, можна серйозно скоротити витрати, використовуючи спотові/витісняються/низькопріоритетні вузли або «підписавшись» на тривале використання тих самих вузлів (це стосується всіх платформ).

Порівняння вартості на Managed Kubernetes (2020)
Розмір кластера (кількість worker'ів)

Загальні відомості

Недавнє оголошення Google Cloud про початок стягування 10 центів за годину роботи кожного кластера в GKE спонукало мене зайнятися аналізом цін на основні пропозиції в галузі керованого Kubernetes.

Порівняння вартості на Managed Kubernetes (2020)
Це оголошення сильно засмутило деякі…

Головними героями статті виступають:

Розбивка витрат

Загальні витрати на використання Kubernetes у кожній з цих платформ складаються з таких компонентів:

  • Збір за керування кластером;
  • Балансування навантаження (для Ingress);
  • Обчислювальні ресурси (vCPU та пам'ять) worker'ів;
  • Egress-трафік;
  • Постійне сховище;
  • Обробка даних балансувальником навантаження.

Крім того, хмарні провайдери пропонують значні знижки, якщо клієнт хоче/може використовувати ті, що витісняються (preemptible), спотові або низькопріоритетні (low-priority) вузли АБО зобов'язується використовувати одні й самі вузли протягом 1-3 років.

Варто підкреслити, що хоча вартість є хорошим базисом для порівняння та оцінки постачальників послуги, слід враховувати й інші фактори:

  • Аптайм (Service Level Agreement);
  • Навколишню хмарну екосистему;
  • Доступні версії K8s;
  • Якість документації/інструментарію.

Однак ці фактори виходять за межі цієї статті/дослідження. У лютневому допису у блозі StackRox детально розглядаються нецінові фактори для EKS, AKS та GKE.

Блокнот Jupyter

Щоб спростити пошук найвигіднішого рішення, я розробив блокнот Jupyter, задіявши в ньому plotly + ipywidgets. Він дозволяє порівнювати пропозиції провайдерів для різних розмірів кластеру та наборів послуг.

Вправлятися з живою версією блокнота можна в Binder:

Порівняння вартості на Managed Kubernetes (2020)
managed-kubernetes-price-exploration.ipynb на mybinder.org

Дайте мені знати, якщо розрахунки або вихідні розцінки неправильні (це можна зробити за допомогою issue або pull request'а в GitHub — ось репозиторій).

Висновки

На жаль, нюансів занадто багато, щоб навести більш конкретні рекомендації, ніж ті, що включені до абзацу TL;DR на самому початку. Втім, деякі висновки все ж таки можна зробити:

  • На відміну від GKE та EKS, AKS та Digital Ocean не стягують плату за ресурси керуючого шару. AKS і DO вигідніше, якщо архітектура включає безліч дрібних кластерів (наприклад, за кластером на кожного розробника або кожного клієнта).
  • Трохи менш дорогі обчислювальні ресурси GKE роблять його вигіднішим зі збільшенням розміру кластерів*.
  • Використання вузлів, що витісняються, або довгострокова прив'язка до вузлів дозволяють знизити витрати більш, ніж на 50%. Примітка: у Digital Ocean таких знижок немає.
  • Плата за вихідний трафік у Google вище, проте визначальним фактором при розрахунку є вартість обчислювальних ресурсів (якщо тільки ваш кластер не є джерелом значного обсягу вихідних даних).
  • Вибір типів машин з урахуванням потреб робочих навантажень по CPU та пам'яті дозволить уникнути зайвої плати за незатребувані ресурси.
  • Digital Ocean вимагає менше за vCPU і більше за пам'ять порівняно з іншими платформами – це може стати вирішальним фактором для деяких типів обчислювальних навантажень.

* Примітка: в аналізі використовуються дані для обчислювальних вузлів загального призначення (General-purpose). Це екземпляри n1 GCP Compute Engine, m5 AWS ec2, віртуальні машини D2v3 Azure та droplet'и DO з виділеними CPU. У свою чергу, можна провести дослідження серед інших типів віртуальних машин (burstable, entry-level). На перший погляд, вартість віртуальних машин лінійно залежить від числа vCPU та об'єму пам'яті, проте я не впевнений, що це припущення залишиться справедливим для нестандартних співвідношень пам'ять/CPU.

У статті The Ultimate Kubernetes Cost Guide: AWS vs GCP vs Azure vs Digital Ocean, опублікованій у 2018 році, використовувався еталонний кластер зі 100 ядрами vCPU та 400 Гб пам'яті. Для порівняння, за моїми розрахунками, подібний кластер на кожній із цих платформ (для on-demand-примірників) обійдеться в таку суму:

  • AKS: 51465 USD/рік
  • EKS: 43138 USD/рік
  • GKE: 30870 USD/рік
  • DO: 36131 USD/рік

Сподіваюся, стаття разом із блокнотом допоможуть вам оцінити основні пропозиції managed Kubernetes та/або заощадити на хмарній інфраструктурі, скориставшись знижками та іншими можливостями.

PS від перекладача

Читайте також у нашому блозі:

Джерело: habr.com

Додати коментар або відгук