Навчальні матеріали
    
      
У цьому розділі документації Kubernetes зібрані навчальні матеріали. Кожний матеріал показує, як досягти окремої мети, що більша за одне завдання. Зазвичай навчальний матеріал має декілька розділів, кожен з яких містить певну послідовність дій. До ознайомлення з навчальними матеріалами вам, можливо, знадобиться додати у закладки сторінку з Глосарієм для подальшого консультування.
Основи
Конфігурація
Застосунки без стану (Stateless Applications)
Застосунки зі станом (Stateful Applications)
Кластери
Сервіси
Що далі
Якщо ви хочете написати навчальний матеріал, у статті
Використання шаблонів сторінок
ви знайдете інформацію про тип навчальної сторінки і шаблон.
 
 
  
  
  
  
  
  
  
    
    
	
    
    
	1 - Привіт Minikube
    
	
З цього навчального матеріалу ви дізнаєтесь, як запустити у Kubernetes простий Hello World застосунок на Node.js за допомогою Minikube і Katacoda. Katacoda надає безплатне Kubernetes середовище, що доступне у вашому браузері.
Примітка:
Також ви можете навчатись за цим матеріалом, якщо встановили 
Minikube локально.
Цілі
- Розгорнути 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 кластера
- 
Натисніть кнопку Запуск термінала 
Примітка:Якщо Minikube встановлений локально, виконайте командуminikube start.
 
- 
Відкрийте Kubernetes дашборд у браузері: 
- Тільки для Katacoda: у верхній частині вікна термінала натисніть знак плюс, а потім -- Select port to view on Host 1.
- Тільки для Katacoda: введіть 30000, а потім натисніть Display Port.
Створення Deployment
Pod у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes Deployment перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів.
- 
За допомогою команди 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: У виводі ви побачите подібну інформацію:
 NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-node   1/1     1            1           1m
 
- 
Перегляньте інформацію про запущені Pod'и: У виводі ви побачите подібну інформацію:
 NAME                          READY     STATUS    RESTARTS   AGE
hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
 
- 
Перегляньте події кластера: 
- 
Перегляньте конфігурацію kubectl:
 
 
Створення Service
За умовчанням, 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, який ви щойно створили: У виводі ви побачите подібну інформацію:
 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: натисніть знак плюс, а потім -- Select port to view on Host 1.
- 
Тільки для Katacoda: запишіть п'ятизначний номер порту, що відображається напроти 8080у виводі сервісу. Номер цього порту генерується довільно і тому може бути іншим у вашому випадку. Введіть номер порту у призначене для цього текстове поле і натисніть Display Port. У нашому прикладі номер порту30369.
 Це відкриє вікно браузера, в якому запущений ваш застосунок, і покаже повідомлення "Hello World".
 
Увімкнення розширень
Minikube має ряд вбудованих розширень, які можна увімкнути, вимкнути і відкрити у локальному Kubernetes оточенні.
- 
Перегляньте перелік підтримуваних розширень: У виводі ви побачите подібну інформацію:
 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:
Що далі