You are viewing documentation for Kubernetes version: v1.21
Kubernetes v1.21 документация больше не поддерживается. Версия, которую вы сейчас просматриваете, является статической. Актуальную документацию вы можете найти последняя версия.
Привет, Minikube
Это руководство покажет вам, как запустить простое Hello World Node.js приложение на Kubernetes используя Minikube и Katacoda. Katacoda предоставляет бесплатную, встроенную в браузер Kubernetes среду.
Заметка: Вы также можете следовать этому руководству, если вы установили Minikube locally.
Цели
- Разверните hello world приложение в Minikube.
- Запустите приложение.
- Посмотрите логи приложения.
Подготовка к работе
Для этого примера создан образ контейнера, собранный на основе следующих файлов:
var http = require('http');
var handleRequest = function(request, response) {
console.log('Получен запрос на 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 в браузере:
minikube dashboardТолько для окружения Katacoda: В верхней части панели нажмите знак "плюс", а затем на Select port to view on Host 1 (Выберите порт для отображения на хосте 1).
Только для окружения Katacoda: введите
30000, а затем нажмите Display Port (Показать порт).
Создание Deployment
Под Kubernetes - это группа из одного или более контейнеров, связанных друг с другом с целью адмистрирования и организации сети. В данном руководстве под включает в себя один контейнер. Deployment в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае его отказа. Deployment-ы являются рекоммендуемым способом организации создания и масштабирования подов.
Используйте команду
kubectl createдля создание деплоймента для управления подом. Под запускает контейнер на основе предоставленного Docker образа.kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4Посмотреть информацию о Deployment:
kubectl get deploymentsВывод:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 1mПосмотреть информацию о поде:
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.
Создание сервиса
По-умолчанию под доступен только при обращении по его внутреннему IP адресу внутри кластера Kubernetes. Чтобы сделать контейнер hello-node доступным вне виртульной сети Kubernetes, необходимо представить под как сервис Kubernetes.
Сделать под доступным для публичной сети Интернет можно с помощью команды
kubectl expose:kubectl expose deployment hello-node --type=LoadBalancer --port=8080Флаг
--type=LoadBalancerпоказывает, что сервис должен быть виден вне кластера.Посмотреть только что созданный сервис:
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 адрес. В Minikube тип
LoadBalancerделает сервис доступным при обращении с помощью командыminikube service.Выполните следующую команду:
minikube service hello-nodeТолько для окружения Katacoda: Нажмите на знак "Плюс", затем нажмите Select port to view on Host 1.
Только для окружения Katacoda: Введите
30369(порт указан рядом с8080в выводе сервиса), затем нажмите ???.Откроется окно браузера, в котором запущено ваше приложение и будет отображено сообщение "Hello World".
Добавление дополнений
В Minikube есть набор встроенных дополнений, которые могут быть включены, выключены и открыты в локальном окружении Kubernetes.
Отобразить текущие поддерживаемые дополнения:
minikube addons listВывод:
addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled heapster: 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
Что дальше
- Больше об объектах деплоймента.
- Больше о развёртывании приложения.
- Больше об объектах сервиса.