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.
Это руководство покажет вам, как запустить простое 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