Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
З цього навчального матеріалу ви дізнаєтесь, як запустити у Kubernetes простий Hello World застосунок на Node.js за допомогою Minikube і Katacoda. Katacoda надає безплатне Kubernetes середовище, що доступне у вашому браузері.
Примітка: Також ви можете навчатись за цим матеріалом, якщо встановили Minikube локально.
У цьому навчальному матеріалі ми використовуємо образ контейнера, зібраний із наступних файлів:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
Більше інформації про команду docker build
ви знайдете у документації Docker.
Натисніть кнопку Запуск термінала
Примітка: Якщо Minikube встановлений локально, виконайте командуminikube start
.
Відкрийте Kubernetes дашборд у браузері:
minikube dashboard
30000
, а потім натисніть Display Port.Pod у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes Deployment перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів.
За допомогою команди kubectl create
створіть Deployment, який керуватиме Pod'ом. Pod запускає контейнер на основі наданого Docker образу.
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
Перегляньте інформацію про запущений Deployment:
kubectl get deployments
У виводі ви побачите подібну інформацію:
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
Перегляньте інформацію про запущені 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
Примітка: Більше про командиkubectl
ви можете дізнатися зі статті Загальна інформація про kubectl.
За умовчанням, Pod доступний лише за внутрішньою IP-адресою у межах Kubernetes кластера. Для того, щоб контейнер hello-node
став доступний за межами віртуальної мережі Kubernetes, Pod необхідно відкрити як Kubernetes Service.
Відкрийте Pod для публічного доступу з інтернету за допомогою команди kubectl expose
:
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
Прапорець --type=LoadBalancer
вказує, що ви хочете відкрити доступ до Service за межами кластера.
Перегляньте інформацію про 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, тип LoadBalancer
робить Service доступним ззовні за допомогою команди minikube service
.
Виконайте наступну команду:
minikube service hello-node
Тільки для Katacoda: запишіть п'ятизначний номер порту, що відображається напроти 8080
у виводі сервісу. Номер цього порту генерується довільно і тому може бути іншим у вашому випадку. Введіть номер порту у призначене для цього текстове поле і натисніть Display Port. У нашому прикладі номер порту 30369
.
Це відкриє вікно браузера, в якому запущений ваш застосунок, і покаже повідомлення "Hello World".
Minikube має ряд вбудованих розширеньResources that extend the functionality of Kubernetes. , які можна увімкнути, вимкнути і відкрити у локальному 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
У виводі ви побачите подібну інформацію:
metrics-server was successfully 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
:
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