Цей посібник показує, як запустити зразковий застосунок у середовищі Kubernetes за допомогою minikube. Посібник надає образ контейнера, який використовує NGINX для відповіді на всі запити.
Цей застосунок передбачає, що у вас вже є встановлений minikube. Дивіться Крок 1 в minikube start для інструкцій щодо встановлення.
Вам також потрібно встановити kubectl. Дивіться Встановлення інструментів для інструкцій щодо встановлення.
minikube start
Перевірте стан кластера minikube, щоб переконатися, що всі компоненти працюють.
minikube status
Результат виконання вищевказаної команди повинен показувати, що всі компоненти працюють або налаштовані, як показано в прикладі нижче:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
Відкрийте інформаційну панель 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.
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.53 -- /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
Стандартно, Pod доступний лише за його внутрішньою IP-адресою в межах Kubernetes-кластера. Щоб зробити контейнер hello-node доступним назовні віртуальної мережі Kubernetes, вам потрібно експонувати Pod як Service Kubernetes.
/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
У хмарних провайдерів, які підтримують балансувальники навантаження, для доступу до Service буде надано зовнішню IP-адресу. В minikube команда minikube service створює Service типу LoadBalancer.
Виконайте наступну команду:
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:
minikube addons disable metrics-server
Вивід має бути схожим на:
metrics-server was successfully disabled
Тепер ви можете видалити ресурси, які ви створили в кластері:
kubectl delete service hello-node
kubectl delete deployment hello-node
Зупиніть кластер minikube:
minikube stop
Необовʼязково, ви можете видалити кластер minikube:
# Необовʼязково
minikube delete
Якщо ви бажаєте використовувати minikube знову для продовження вивчення Kubernetes, ви можете не видаляти його.
Ця сторінка містить базові аспекти використання minikube для розгортання простого кластера Kubernetes та запуску тестового застосунку. Тепер ви готові до розгортання власних застосунків.