You are viewing documentation for Kubernetes version: v1.30

Kubernetes v1.30 документація більше не підтримується. Версія, яку ви зараз переглядаєте, є статичною. Для перегляду актуальної документації дивіться остання версія.

Shutdown of interactive tutorials

The interactive tutorials previously on this website have been shut down.

Kubernetes is grateful to O'Reilly and Katacoda for many years of helping people take their first steps in learning Kubernetes.

The shutdown followed O'Reilly Media's 2019 acquisition of Katacoda.


The tutorials ceased to function after the 31st of March, 2023. You are seeing this notice because this particular page has not yet been updated following that shutdown.

Привіт Minikube

З цього навчального матеріалу ви дізнаєтесь, як запустити у Kubernetes простий Hello World застосунок на Node.js за допомогою Minikube і Katacoda. Katacoda надає безплатне Kubernetes середовище, що доступне у вашому браузері.

Цілі

  • Розгорнути Hello World застосунок у Minikube.
  • Запустити застосунок.
  • Переглянути логи застосунку.

Перш ніж ви розпочнете

У цьому навчальному матеріалі ми використовуємо образ контейнера, зібраний із наступних файлів:

var http = require('http');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD [ "node", "server.js" ]

Більше інформації про команду docker build ви знайдете у документації Docker.

Створення Minikube кластера

  1. Натисніть кнопку Запуск термінала

    
    
    
    
  1. Відкрийте Kubernetes дашборд у браузері:

    minikube dashboard
    
  1. Тільки для Katacoda: у верхній частині вікна термінала натисніть знак плюс, а потім -- Select port to view on Host 1.
  1. Тільки для Katacoda: введіть 30000, а потім натисніть Display Port.

Створення Deployment

Pod у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes Deployment перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів.

  1. За допомогою команди kubectl create створіть Deployment, який керуватиме Pod'ом. Pod запускає контейнер на основі наданого Docker образу.

    kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
    
  1. Перегляньте інформацію про запущений Deployment:

    kubectl get deployments
    
    У виводі ви побачите подібну інформацію:
    
    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    
  1. Перегляньте інформацію про запущені Pod'и:

    kubectl get pods
    
    У виводі ви побачите подібну інформацію:
    
    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  1. Перегляньте події кластера:

    kubectl get events
    
  1. Перегляньте конфігурацію kubectl:

    kubectl config view
    
    
    
    
    

Створення Service

За умовчанням, Pod доступний лише за внутрішньою IP-адресою у межах Kubernetes кластера. Для того, щоб контейнер hello-node став доступний за межами віртуальної мережі Kubernetes, Pod необхідно відкрити як Kubernetes Service.

  1. Відкрийте Pod для публічного доступу з інтернету за допомогою команди kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    
    Прапорець `--type=LoadBalancer` вказує, що ви хочете відкрити доступ до Service за межами кластера.
    
  1. Перегляньте інформацію про 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`.
    
  1. Виконайте наступну команду:

    minikube service hello-node
    
  1. Тільки для Katacoda: натисніть знак плюс, а потім -- Select port to view on Host 1.
  1. Тільки для Katacoda: запишіть п'ятизначний номер порту, що відображається напроти 8080 у виводі сервісу. Номер цього порту генерується довільно і тому може бути іншим у вашому випадку. Введіть номер порту у призначене для цього текстове поле і натисніть Display Port. У нашому прикладі номер порту 30369.

    Це відкриє вікно браузера, в якому запущений ваш застосунок, і покаже повідомлення "Hello World".
    

Увімкнення розширень

Minikube має ряд вбудованих розширень, які можна увімкнути, вимкнути і відкрити у локальному Kubernetes оточенні.

  1. Перегляньте перелік підтримуваних розширень:

    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
    
  1. Увімкніть розширення, наприклад metrics-server:

    minikube addons enable metrics-server
    
    У виводі ви побачите подібну інформацію:
    
    metrics-server was successfully enabled
    
  1. Перегляньте інформацію про 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
    
  1. Вимкніть 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

Що далі

Змінено May 19, 2024 at 10:54 AM PST: [uk] Ready Hello, Minikube page for vanilla Docsy (73b9cbee74)