Это руководство покажет вам, как запустить простое Hello World Node.js приложение на Kubernetes используя Minikube и Katacoda. Katacoda предоставляет бесплатную, встроенную в браузер Kubernetes среду.
Заметка: Вы также можете следовать этому руководству, если вы установили Minikube locally.
Для этого примера создан образ контейнера, собранный на основе следующих файлов:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
Чтобы получить больше информации по запуску команды docker build
, ознакомьтесь с документацией по Docker.
Нажмите Запуск Терминала
Заметка: Если у вас локально установлен Minikube, выполнитеminikube start
.
Откройте веб-панель Kubernetes в браузере:
minikube dashboard
Только для окружения Katacoda: В верхней части панели нажмите знак “плюс”, а затем на Select port to view on Host 1 (Выберите порт для отображения на хосте 1).
Только для окружения Katacoda: введите 30000
, а затем нажмите Display Port (Показать порт).
Под Kubernetes - это группа из одного или более контейнеров, связанных друг с другом с целью адмистрирования и организации сети. В данном руководстве под включает в себя один контейнер. Deployment в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае его отказа. Deployment-ы являются рекоммендуемым способом организации создания и масштабирования подов.
Используйте команду kubectl create
для создание деплоймента для управления подом. Под запускает контейнер на основе предоставленного Docker образа.
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Посмотреть информацию о 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
Была ли эта страница полезной?
Спасибо за отзыв! Если у вас есть конкретный вопрос об использовании Kubernetes, спрашивайте Stack Overflow. Сообщите о проблеме в репозитории GitHub, если вы хотите сообщить о проблеме или предложить улучшение.