Привіт Minikube
Цей посібник покаже вам, як запустити простий кластер Kubernetes використовуючи minikube. Посібник надає образ контейнера, який використовує NGINX для відклику на всі запити.
Цілі
- Розгортання тестового застосунку в minikube.
- Запуск застосунку.
- Перегляд логів застосунку.
Перш ніж ви розпочнете
Цей застосунок передбачає, що у вас вже є встановлений minikube
. Дивіться Крок 1 в minikube start для інструкцій щодо встановлення.
Примітка:
Виконайте лише інструкції з Кроку 1, Встановлення. Решту розглянуто на цій сторінці.Вам також потрібно встановити kubectl
. Дивіться Встановлення інструментів для інструкцій щодо встановлення.
Створення кластера minikube
minikube start
Відкрийте інформаційну панель
Відкрийте інформаційну панель Kubernetes. Це можна зробити двома різними способами:
Відкрийте новий термінал та виконайте команду:
# Запустіть новий термінал та залиште його працювати.
minikube dashboard
Тепер поверніться до термінала, де ви запустили minikube start
.
Примітка:
Команда dashboard
вмикає додаток інформаційної панелі та відкриває проксі для типового системного вебоглядача. Ви можете створювати ресурси Kubernetes на інформаційній панелі, такі як Deployment та Service.
Щоб дізнатися, як уникнути прямого запуску вебоглядача з термінала та отримати URL-адресу для вебінтерфейсу, дивіться вкладку «Копіювання та вставлення URL-адреси».
Стандартно, інформаційна панель доступна лише з внутрішньої віртуальної мережі Kubernetes. Команда dashboard
створює тимчасовий проксі, щоб інформаційна панель була доступна за межами віртуальної мережі Kubernetes.
Щоб зупинити проксі, натисніть Ctrl+C
, щоб вийти з процесу. Після виходу з команди інформаційна панель залишається запущеною в кластері Kubernetes. Ви можете знову запустити команду dashboard
, щоб створити інший проксі для доступу до інформаційної панелі.
Якщо ви не хочете, щоб minikube відкривав вебоглядач для вас, запустіть підкоманду dashboard
з прапорцем --url
. minikube
виводить URL-адресу, яку ви можете відкрити у вибраному вами вебоглядачі.
Відкрийте новий термінал та виконайте команду:
# Запустіть новий термінал та залиште його працювати.
minikube dashboard --url
Тепер поверніться до термінала, де ви запустили minikube start
.
Створення Deployment
Pod в Kubernetes — це група з одного або більше контейнерів, які повʼязуються один з одним для керування та використання мережевих ресурсів. Pod в цьому посібнику містить тільки один контейнер. Kubernetes Deployment перевіряє життєздатність вашого Podʼа та, якщо він виходить з ладу, перезапускає його. Deployment є рекомендованим способом створення та масштабування Podʼів.
Скористайтесь командою
kubectl create
для створення Deployment, що буде керувати Podʼом. Pod виконує контейнер, який міститься в образі Docker.# Запустіть тестовий образ контейнера, який містить вебсервер kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
Перевірте, чи створено Deployment.
kubectl get deployments
Ви маєте отримати вивід, подібний до такого:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m
(Зачекайте деякий час, поки Pod стане доступним. Якщо ви бачите "0/1", спробуйте ще раз через кілька секунд.)
Перевірте, чи створено Pod.
kubectl get pods
Ви маєте отримати вивід, подібний до такого:
NAME READY STATUS RESTARTS AGE hello-node--5f76cf6ccf-br9b5 1/1 Running 0 1m
Перегляд подій кластера:
kubectl get events
Перегляд конфігурації
kubectl
:kubectl config view
Перегляд логів застосунку з контейнера в Podʼі (замініть назву Podʼа на ту, яку ви отримали з
kubectl get pods
).Примітка:
Замінітьhello-node-5f76cf6ccf-br9b5
у командіkubectl logs
на назву Podʼа, яку ви отримали з виводуkubectl get pods
.kubectl logs hello-node-5f76cf6ccf-br9b5
Вивід має бути подібним до такого:
I0911 09:19:26.677397 1 log.go:195] Started HTTP server on port 8080 I0911 09:19:26.677586 1 log.go:195] Started UDP server on port 8081
Створення Service
Стандартно, Pod доступний лише за його внутрішньою IP-адресою в межах Kubernetes-кластера. Щоб зробити контейнер hello-node
доступним назовні віртуальної мережі Kubernetes, вам потрібно подати Pod як Service Kubernetes.
Попередження:
Контейнер agnhost має точку доступу/shell
, яка корисна для налагодження, але небезпечний для публічного доступу з інтернету. Не запускайте його в кластері, що має вихід до інтернету, або на операційному кластері.Скористайтесь командою
kubectl expose
для експонування Podʼа:kubectl expose deployment hello-node --type=LoadBalancer --port=8080
Прапорець
--type=LoadBalancer
вказує, що ви хочете надати доступ до вашого Serviceʼу назовні кластера.Код застосунку всередині тестового образу контейнера тільки прослуховує порт 8080. Якщо ви використовуєте інший порт в
kubectl expose
, клієнти не зможуть отримати доступ до вашого застосунку.Перевірте, чи створено Service:
kubectl get services
Ви маєте отримати вивід, подібний до такого:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
Хмарні провайдери, які підтримують балансувальники навантаження, зовнішні IP-адреси можуть надаватись для доступу до Serviceʼу. В minikube
LoadBalancer
створює Service, доступний через командуminikube service
.Виконайте наступну команду:
minikube service hello-node
Це відкриє вікно вебоглядача, що показує відповідь застосунку.
Увімкнення надбудов
Інструменти minikube містять набір вбудованих надбудов, які можна увімкнути, вимкнути та відкрити в локальному оточені Kubernetes.
Перегляньте список доступних надбудов:
minikube addons list
Ви маєте отримати вивід, подібний до такого:
addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabled storage-provisioner-gluster: disabled
Увімкніть надбудову, наприклад,
metrics-server
:minikube addons enable metrics-server
Ви маєте отримати вивід, подібний до такого:
The 'metrics-server' addon is enabled
Перегляньте Podʼи та Serviceʼи, які щойно було створено:
kubectl get pod,svc -n kube-system
Вивід має бути подібним до такого:
NAME READY STATUS RESTARTS AGE pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m pod/metrics-server-67fb648c5 1/1 Running 0 26s pod/etcd-minikube 1/1 Running 0 34m pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-apiserver-minikube 1/1 Running 0 34m pod/kube-controller-manager-minikube 1/1 Running 0 34m pod/kube-proxy-rnlps 1/1 Running 0 34m pod/kube-scheduler-minikube 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
Перевірте вивід з
metrics-server
:kubectl top pods
Ви маєте отримати вивід, подібний до такого:
NAME CPU(cores) MEMORY(bytes) hello-node-ccf4b9788-4jn97 1m 6Mi
Якщо ви бачите наступне повідомлення, почекайте та спробуйте ще раз:
error: Metrics API not available
Вимкніть
metrics-server
:metrics-server was successfully disabled
Видалення кластера minikube
Тепер ви можете видалити ресурси, які ви створили в кластері:
kubectl delete service hello-node
kubectl delete deployment hello-node
Зупиніть кластер minikube:
minikube stop
Необовʼязково, ви можете видалити кластер minikube:
minikube delete
Якщо ви бажаєте використовувати minikube знову для продовження вивчення Kubernetes, ви можете не видаляти його.
Підсумки
Ця сторінка містить базові аспекти використання minikube для розгортання простого кластера Kubernetes та запуску тестового застосунку. Тепер ви готові до розгортання власних застосунків.
Що далі
- Посібник Розгортання вашого першого застосунку в Kubernetes за допомогою kubectl.
- Дізнайтесь більше про Розгортання застосунків.
- Дізнайтесь більше про Serviceʼи.