- Kubernetes
- Документація
- Блог
- Навчання
- Карʼєра
- Партнери
- Спільнота
- Версії
- Інформація про випуск
- v1.35
- v1.34
- v1.33
- v1.32
- v1.31
- Українська (Ukrainian)
- English
- বাংলা (Bengali)
- 中文 (Chinese)
- Deutsch (German)
- हिन्दी (Hindi)
- Bahasa Indonesia (Indonesian)
- 日本語 (Japanese)
- 한국어 (Korean)
- Polski (Polish)
- Português (Portuguese)
- Русский (Russian)
Запуск кількох екземплярів вашого застосунку
Цілі
- Масштабування застосунку вручну за допомогою kubectl.
Масштабування застосунку
Ви можете створити Deployment з декількома екземплярами з самого початку за допомогою параметра
--replicas команди kubectl create deployment.Раніше ми створили Deployment, а потім робили його загальнодоступним за допомогою Service. Deployment створив лише один Pod для запуску нашого застосунку. Зі збільшенням трафіку, нам потрібно масштабувати застосунок, щоб відповідати зростаючим вимогам користувачів.
Якщо ви ще не працювали над попередніми розділами, почніть з Використання minikube для створення кластера.
Масштабування досягається зміною кількості реплік в Deployment..
Примітка:
Якщо ви спробуєте це після попереднього розділу, то, можливо, ви видалили Service, який створили, або створили Service з type: NodePort. У цьому розділі припускається, що для Deployment kubernetes-bootcamp створено Service з type: LoadBalancer.
Якщо ви не видалили Service, створений у попередньому розділі, спочатку видаліть цей Service, а потім запустіть наступну команду для створення нового Service з параметром type встановленим на LoadBalancer:
kubectl expose deployment/kubernetes-bootcamp --type="LoadBalancer" --port 8080
Огляд масштабування
Масштабування здійснюється шляхом зміни кількості реплік у Deployment.
Масштабування Deployment гарантує створення нових Podʼів і їх призначення на Вузли з вільними ресурсами. Масштабування збільшить кількість Podʼів до нового бажаного стану. Kubernetes також підтримує автоматичне масштабування Podʼів, але це виходить за рамки цього посібника. Також можливе масштабування до нуля, і це призведе до завершення всіх Podʼів вказаного Deployment.
Запуск кількох екземплярів застосунку вимагає засобів для розподілу трафіку між ними. У Service є вбудований балансувальник навантаження, який розподілить мережевий трафік на всі Podʼи, які експонує Deployment. Service будуть постійно відстежувати робочі Podʼи, використовуючи точки доступу, щоб гарантувати, що трафік направляється лише на доступні Podʼи.
Після того, як ви запустите кілька екземплярів застосунку, ви зможете виконувати Rolling-оновлення без простоїв. Ми розглянемо це у наступному розділі підручника. Тепер перейдемо до термінала і масштабуємо наш застосунок.
Масштабування Deployment
Щоб переглянути свій Deployment, використовуйте команду get deployments:
kubectl get deployments
Вивід повинен бути схожий на:
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 1/1 1 1 11m
Маємо 1 Pod. Якщо його немає, виконайте команду ще раз. Тут маємо:
- NAME показує імена Deploymentʼів у кластері.
- READY показує співвідношення поточних/бажаних реплік
- UP-TO-DATE показує кількість реплік, які були оновлені для досягнення бажаного стану.
- AVAILABLE показує, скільки реплік застосунку доступно вашим користувачам.
- AGE показує кількість часу, протягом якого працює застосунок.
Щоб переглянути ReplicaSet, створений Deployment, виконайте:
kubectl get rs
Зверніть увагу, що назва ReplicaSet завжди форматується як pod-template-hash як основу для створення.
Два важливі стовпці цього виводу:
- DESIRED — показує бажану кількість реплік застосунку, яку ви визначаєте під час створення Deployment. Це бажаний стан.
- CURRENT — показує, скільки реплік в цей час працюють.
Далі масштабуймо Deployment до 4 реплік. Ми використаємо команду kubectl scale, за якою слідує тип Deployment, назва та бажана кількість екземплярів:
kubectl scale deployments/kubernetes-bootcamp --replicas=4
Щоб знову переглянути свої Deployment, використовуйте get deployments:
kubectl get deployments
Зміни були застосовані, і у нас є 4 екземпляри застосунку. Далі перевірмо, чи змінилася кількість Podʼів:
kubectl get pods -o wide
Тепер є 4 Podʼа з різними IP-адресами. Зміна була зареєстрована в журналі подій Deployment. Щоб перевірити це, використовуйте команду describe:
kubectl describe deployments/kubernetes-bootcamp
Ви також можете побачити, що у виводі цієї команди тепер є 4 репліки.
Балансування навантаження
Перевіримо, чи Service балансує трафік. Щоб дізнатися зовнішній IP та порт, ми можемо використовувати команду describe service, як ми дізнались в попередній частині посібника:
kubectl describe services/kubernetes-bootcamp
Створіть змінну середовища з іменем NODE_PORT, яка має значення як порт Вузла:
export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"
echo NODE_PORT=$NODE_PORT
Далі ми запустимо curl з зовнішньою IP-адресою та портом. Виконайте команду кілька разів:
curl http://"$(minikube ip):$NODE_PORT"
Ми потрапляємо на різні Podʼи при кожному запиті. Це демонструє, що балансування навантаження працює.
Вивід має бути схожим на:
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-644c5687f4-wp67j | v=1
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-644c5687f4-hs9dj | v=1
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-644c5687f4-4hjvf | v=1
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-644c5687f4-wp67j | v=1
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-644c5687f4-4hjvf | v=1
Примітка:
Якщо ви використовуєте minikube з Docker Desktop як драйвер контейнера, потрібен тунель minikube. Це через те, що контейнери всередині Docker Desktop ізольовані від вашого компʼютера-хосту.
В окремому вікні термінала виконайте:
minikube service kubernetes-bootcamp --url
Вивід виглядає так:
http://127.0.0.1:51082
! Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
Потім використовуйте наданий URL для доступу до застосунку:
curl 127.0.0.1:51082
Зменшення масштабу розгортання
Щоб зменшити Deployment до 2 реплік, знову запустіть команду scale:
kubectl scale deployments/kubernetes-bootcamp --replicas=2
Перевірте Deployment, щоб переконатися, що зміни були застосовані, за допомогою команди get deployments:
kubectl get deployments
Кількість реплік зменшилася до 2. Перегляньте кількість Podʼів за допомогою get pods:
kubectl get pods -o wide
Це підтверджує, що роботу двох Podʼів було завершено.
Що далі
- Підручник Виконання поступового оновлення.
- Дізнайтесь більше про ReplicaSet.
- Дізнайтесь більше про Автоматичне масштабування.
Змінено December 30, 2025 at 9:49 AM PST: [uk] Ukrainian translation (all-in-one) (976e26f53c)