Початок роботи з Kubernetes: вступ для початківців

Kubernetes — найпопулярніше програмне забезпечення з відкритим кодом, яке автоматизує процеси розробки контейнерів.

Відповідно до щорічного дослідження Cloud Native Computing Foundation (CNCF), 96% організацій або використовують K8, або розглядають їх використання. Якщо ви уважно стежите, 5,8 мільйона розробників у всьому світі використовують Kubernetes, а це 31% розробників серверних програм у всьому світі.

Йому віддається перевага через його здатність використовувати технології завдяки покращеній масштабованості, доступності та короткому часу розгортання. У той час як багато розробників запускають траєкторію своїх контейнерів за допомогою Docker (комплексного інструменту, який покладається на CLI для взаємодії з контейнерами, по одному), K8s надає вам абстракції високого рівня, щоб ви могли визначати програми та їхню інфраструктуру за допомогою схем, які ви можете співпрацювати.

Якщо ви вперше користуєтеся Kubernetes, ця стаття спеціально розроблена, щоб допомогти вам ознайомитися з новими деталями та поділитися ідеєю, яка допоможе вам почати роботу. Ви дізнаєтеся, як K8s може допомогти вам, як розробнику, розширити цифрові продукти.

Що таке Kubernetes і навіщо він потрібен?

Kubernetes — це механізм (фреймворк) координації з відкритим кодом, який використовується для автоматизації розгортання, масштабування та керування контейнерними програмами; це включає передбачуваність і доступність обробки.

Простіше кажучи, давайте подумаємо про програму, яку ви контейнеризували. Щоб обслуговувати користувачів програми, вам потрібно запустити кілька контейнерів. Занепокоєння виникає, коли вам потрібно керувати цими контейнерами. Контейнери можуть не обов’язково бути на одній машині, що ускладнює процес. Отже, яке рішення цієї проблеми?

Kubernetes приходить вам на допомогу, надаючи ефективний спосіб безперебійної обробки всіх цих процесів. Хоча ви можете порівняти K8s із контейнерним механізмом, таким як Docker, це контейнерний оркестратор. Як починаючому розробнику, вам не потрібно турбуватися про те, як K8s виконує оркестровку. Навряд чи ви налаштуєте кластер K8s для своєї програми; докладніше про це незабаром.

Однак ви будете взаємодіяти з кластерами, створеними вашою командою інфраструктури. Важливо ознайомитися з об’єктами, з якими ви будете взаємодіяти. Але перш ніж це зробити, вам знадобиться глибоке розуміння його архітектури, щоб зрозуміти, що відбувається під ним.

Особливості Kubernetes

Kubernetes має кілька функцій із широким набором можливостей для запуску контейнерів та іншої пов’язаної інфраструктури. Ось список:

  • Автоматичне розгортання, масштабування та відкат – K8s роботизує створення вказаної вами кількості реплік, розподіл їх між відповідним (найбільш відповідним) обладнанням і перепланування контейнерів, якщо вузол перебуває в стані простою. Ви можете миттєво масштабувати свої копії відповідно до попиту або мінливих потреб, як-от використання ЦП.
  • Виявлення служб, стабілізація навантаження та вхід у мережу – Kubernetes пропонує унікальне мережеве рішення, зокрема виявлення внутрішніх служб і розкриття публічних контейнерів.
  • Програми зі станом і без нього – на початку K8 зосереджувалися переважно на контейнерах без стану. Оскільки технологія розвивається на багатьох фронтах, тепер вона містить вбудовані об’єкти, що представляють програми зі збереженням стану. Ратифіковано, будь-яка програма може працювати на Kubernetes.
  • Регулювання сховища. Незалежно від того, чи використовуєте ви локальну файлову систему, спільний мережевий ресурс чи хмару, Kubernetes надає (абстрактне) постійне сховище для програм, що працюють у контейнерах. А абстракція дозволяє визначати вимоги до сховища незалежно від базової інфраструктури. Хоча це виходить за рамки цієї статті, він працює через такі принципи, як постійний том (PV), постійний том заявки (PVC), класи зберігання та плагіни томів.
  • Декларативний стан – K8s використовує файли Yet Ain’t Markup Language (YAML), які називаються маніфестами об’єктів, для визначення бажаних станів для вашого кластера. Маніфести визначають, як виглядає ваш кластер, включаючи, але не обмежуючись, бажані екземпляри програми та правила мережі, серед інших конфігурацій. Коли ви застосовуєте маніфести, K8s автоматично обробляє всі зміни стану – вам не доведеться писати сценарії для цього.
  • Кілька робочих середовищ – ви не обмежені використанням Kubernetes у хмарі чи робочій станції розробника. Майже кожен дистрибутив доступний відповідно до конкретного випадку використання. Зверніть увагу на основних постачальників хмарних технологій, таких як Amazon Web Services, Google Cloud і Microsoft Azure. Ви зрозумієте, що всі вони пропонують керовані послуги Kubernetes, тоді як дистрибутиви з одним вузлом, такі як Minikube та K3s, доступні для локального використання.
  • Super Extensivity – K8s – це набір багатьох функцій. Наче цього недостатньо, ви можете прискорити його можливості за допомогою розширень. Ви можете створювати власні типи об’єктів, оператори та контролери, щоб оптимізувати робочі навантаження.
  • Архітектура Kubernetes

    За своєю суттю архітектура Kubernetes складається з одного головного вузла та двох робочих вузлів. Головний вузол викликає дії в кластері, тоді як робочі (підлеглі) вузли запускають програми за рішенням головного.

    Джерело: kubernetes.io

    Ось подальша розбивка.

    Головний вузол(и)

    Головний вузол диктує стани кластера та вирішує дії кожного окремого вузла. Для налаштування головного вузла потрібно кілька процесів.

  • Сервер API
    Тут базуються всі комунікації кластера. Це шлюз, який дозволяє всім компонентам кластера обмінюватися інформацією. Він відкриває Kubernetes API. Тут грають дві головні ролі. Перший — це точка входу, яка дозволяє користувачам взаємодіяти з кластером. Наприклад, надсилання запитів під час використання Kubectl. По-друге, контроль воріт для автентифікації та перевірки запитів. У цьому випадку тільки певні користувачі можуть виконувати запити.
  • Планувальник
    Планувальник призначає програми або об’єкти робочого навантаження Kubernetes робочому вузлу. Тут планувальник розміщує модулі на вузлах на основі вимог до ресурсів. А коли ви говорите про модулі, це лише невелика одиниця розгортання в Kubernetes.
  • Менеджер контролера
    Цей блок обслуговує кластери, такі як збої вузлів, щоб підтримувати правильну кількість модулів. Він виявляє зміни стану кластера, як-от загибель контейнерів, і намагається відновити пакет до початкового стану. Наприклад, якщо модуль випадково вмирає, менеджер контролера запитує планувальник ратифікувати, який вузол запускає новий пакет як заміну, і kubelet запускає новий пакет.
  • тощо
    Його також називають кластерним мозком. Одиниця є сховищем ключових значень для конфігурації кластера. Це означає, що всі зміни кластера вносяться тут. Ви можете створити резервну копію кластера, зберігши розподілене сховище значення ключа. Однак зауважте, що тут зберігаються лише дані про стан кластера, а не дані програми. Цей блок спеціально призначений для зберігання інформації про стан кластера та використання її для попередніх процесів, які інформують їх про кластер.
  • Підлеглий вузол(и)

    На кожному підлеглому вузлі встановлено три процеси вузла, які дозволяють K8 взаємодіяти з ним і окремо запускати модулі в кожному вузлі. Необхідні процеси:

  • Кубелет
    Це основна служба Kubernetes, яка запускає виконання для рівня виконання контейнера. Якщо взяти цей модуль, Kubernetes — це не що інше, як API REST, який підтримує сховище ключ-значення. За замовчуванням K8s виконує контейнерну програму. Контейнери завжди ізольовані один від одного та основної системи. Це виявилося аналітичним для відокремлення управління окремими програмами одне від одного та фізичної чи віртуальної інфраструктури.

    У той час як керування допуском API може відхиляти модулі або додавати додаткові обмеження, kubelet є остаточним визначником того, які пакети працюють на певному вузлі, а не планувальники чи набори демонов. Підводячи підсумок, kubelets взаємодіють з вузлом і контейнером. Він також приймає файли конфігурації та запускає модулі за допомогою середовища виконання контейнера.

  • Час виконання контейнера
    Цей розділ запускає контейнери. Наприклад, ви можете використовувати Docker, rkt або conatinered трохи більше про те, як працюють контейнери.
  • Kube-проксі
    Цей блок надає рівень абстракції для груп модулів вузлів відповідно до загальних політик, як у випадку з балансуванням навантаження. Усі вузли застосовують Kube-proxy для надання віртуальної IP-адреси для клієнтів, які отримують доступ до динамічних модулів. Ця структура є рішенням для балансування навантаження, зберігаючи накладні витрати з низькою продуктивністю.
  • Як працює контейнеризація

    Контейнерізація передбачає віртуалізацію всіх необхідних частин програмного додатку в один блок. Під контейнерами є набір бібліотек, двійкових файлів і всіх необхідних конфігурацій програм. Але вони не включають ресурси ядра або віртуалізоване обладнання.

    Зрештою, виконайте «зверху» середовища виконання контейнера, які описують ресурси. Оскільки контейнери містять лише базові компоненти та залежності додатків, вони легкі й, отже, швидші, на відміну від інших віртуальних машин.

    Читайте також: Контейнери проти віртуальних машин: пояснення відмінностей

    Як встановити та налаштувати Kubernetes

    Я витратив стільки часу на теоретику; каскадний розділ буде тактичним і включатиме певний практичний досвід роботи з контейнерами. Цей підручник зокрема стосується встановлення в операційній системі Windows.

    Існує кілька способів інсталяції під час використання Windows; ви можете вибрати командний рядок або графічний інтерфейс користувача. Однак ви повинні переконатися, що ви відповідаєте наступним необхідним специфікаціям.

    Для вашого обладнання потрібен головний вузол із принаймні 2 ГБ пам’яті та 700 МБ для робочого вузла. Щодо програмних вимог, Hype-v, Docker для робочого столу, унікальна адреса Mac і унікальний UUID продукту для кожного вузла. Ось покроковий підхід.

    Встановлення та налаштування Hyper-V

    Hyper-V — це стандартне програмне забезпечення для віртуалізації Windows. По суті, це VirtalBox на стероїдах. Він дозволяє керувати віртуальними машинами за допомогою Microsoft GUI або командного рядка. Щоб увімкнути Hyper-V, виконайте такі дії.

  • Відкрийте Панель керування.
  • Натисніть програми на лівій панелі.
  • Під сторінкою програм і функцій натисніть «Увімкнути або вимкнути функції Windows».
  • Виберіть функції Hyper-V і Hypervisor для Windows.
  • Далі виберіть «ОК» на цьому кроці; щоб активувати нові налаштування, комп’ютер має перезавантажитися.
  • Час від часу ваш комп’ютер може перезавантажуватися кілька разів, щоб переконатися, що все правильно налаштовано. Ви можете перевірити успішність інсталяції, ввівши таку команду в Power Shell.

    Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

    Переконайтеся, що ваш екран заповнений станом «увімкнено».

    Встановлення Docker

    Як ви дізналися, K8s — це інструмент оркестровки контейнерів, створений на основі контейнерів; у цьому випадку Docker є хорошим вибором. K8s спілкується з Docker і керує всім на рівні підприємства. Рухайтеся, завантаживши Docker для Windows. Якщо вам цікаво, чому потрібно використовувати Docker Desktop, це краще для спрощення розробки, доставки та запуску докеризованих (контейнерних) програм.

    Це також найшвидший спосіб створити програми Docker у Windows за допомогою Hyper-V і мережі. Після успішного встановлення Docker завжди доступний на будь-якому терміналі, доки він працює. Щоб отримати детальний посібник із встановлення, ви можете переглянути офіційну документацію Docker. Якщо після встановлення ви зіткнулися з будь-якими проблемами, як-от приховані значки, проблему можна вирішити, перезавантаживши комп’ютер.

    Встановлення Kubernetes

    Графічний інтерфейс Docker дозволяє налаштовувати параметри, інсталювати та вмикати Kubernetes. Щоб установити K8s, виконайте такі дії.

  • Клацніть правою кнопкою миші піктограму Docker у треї та виберіть властивості.
  • Виберіть `Налаштування` зі спадного меню після натискання `Властивості`.
  • На лівій панелі виберіть `Kubernetes` і натисніть `Застосувати`.
  • Потім Docker встановить деякі додаткові пакети та залежності. Процес займає від п’яти до десяти хвилин залежно від швидкості вашого Інтернету. Ви можете використовувати програму Docker, щоб підтвердити, що все працює правильно.

    Оскільки програми Kubernetes можна розгортати за допомогою CLI, вам може знадобитися інсталювати інформаційну панель K8s, оскільки вона не встановлена ​​за замовчуванням. Встановіть приладову панель, виконавши такі кроки.

  • Завантажте конфігурацію YAML.
  • Розгорніть програму за допомогою цього коду: . Kubectl apply -f .recommended.yaml.
  • Переконайтеся, що все налаштовано належним чином: kubectl.exe get -f .recommended.yaml.txt.
  • Щоб отримати доступ до інформаційної панелі, виконайте таку команду в Power Shell (не CMD)

  • Запустіть наступний код ((kubectl -n kube-system describe secret default | select-string “token:”) – розділіть “+”)[1]
    • Скопіюйте згенерований маркер і запустіть проксі kubectl.
  • У своєму браузері відкрийте це посилання.
  • Натисніть `Токен` і вставте свій маркер сюди.
  • Увійти.
  • Якщо ви потрапили сюди, браво, ваш екран повинен бути заповнений панеллю K8s. Тепер ви можете керувати своїми програмами, не виконуючи важкої роботи за допомогою CLI.

    Читайте також: Як встановити Kubernetes на Ubuntu 18

    Як створити та керувати кластером Kubernetes

    Якщо ви продовжили тут, ви повинні були успішно встановити Kubernetes на своєму хості. Далі виконайте такі кроки, щоб створити кластер і виконати просте керування ним:

  • Налаштувати мережу – тут вам потрібно налаштувати мережу між вузлами кластера; дозволяють їм спілкуватися один з одним.
  • Налаштувати автентифікацію кластера – створити механізми автентифікації та авторизації для доступу до кластера.
  • Налаштування основних компонентів; включає сервер API, планувальник і менеджер контролера.
  • Приєднатися до робочих вузлів – підключити робочі вузли до кластера за допомогою файлів конфігурації, наданих у процесі налаштування кластера.
  • Розгортання доповнень – ви можете встановлювати розширення для покращення функціональності кластера.
  • Керуйте робочими навантаженнями – настав час розгортати ваші програми.
  • Хоча це лише огляд процесу створення кластера, він включає багато кроків із залученням кількох команд. Ось офіційний посібник із документації щодо створення кластерів перед розгортанням. Це має бути ваша керівна рука.

    Як розгорнути свою першу програму за допомогою Kubernetes

    Найпоширенішою командою під час використання K8s є kubectl action resource, яка дозволяє вам виконувати певні дії, як-от створення або видалення зазначеного ресурсу.

    Якщо ви застрягли, ви можете скористатися –help після певної підкоманди, щоб отримати додаткову інформацію.

    Наприклад, Kubernetes отримує вузли – довідка. Розгорніть свою першу програму K8s за допомогою команди kubectl create deployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

    Заключні слова

    Цей посібник був точкою входу в технологію Kubernetes. Ви дізналися про переваги, функції та архітектуру Kubernetes. На щастя, вам, можливо, довелося звернутися до кількох вказівок (зовнішніх ресурсів), щоб почати; це пояснило, як все працює під капотом.

    Незважаючи на те, що новачкові може здатися важким осягнути весь набір технологій, ця публікація є зручним посібником, який допоможе вам почати роботу з K8s. Вам знадобиться трохи практики, щоб впевнено користуватися цією технологією, тому я направляю вас до офіційної документації Kubernetes як довідкового матеріалу. Чим більше у вас практики, тим швидше ви станете експертом з K8.

    Далі перегляньте навчальні посібники Kubernetes для початківців.