Разработка на Java для Kubernetes

Все о разработке высоконагруженных сервисов на Java в распределенных средах на основе Kubernetes и Istio

Развертывание локального кластера Kubernetes с использованием minikube

 

Для локального тестирования приложений, размещаемых в кластере Kubernetes, наиболее простым вариантом будет установить minikube. Minikube это кластер Kubernetes, состоящий из одной ноды. Установка minikube очень проста и доступна под Linux, MacOS и Windows

Установка minikube

 

Ниже будет описана последовательность шагов по установке minikube под Windows.

Сначала необходимо скачать и установить Oracle Virtual Box отсюда

Далее скачиваем и запускаем запускаем прямую ссылку на установщик с github

После установки необходимо выполнить настройку minikube, указав:

Используемый драйвер виртуальной машины

				
					minikube config set vm-driver virtualbox
				
			

Количество оперативной памяти, доступной кластеру

				
					minikube config set  memory 8G
				
			

Количество ядер процессора, доступных кластеру

				
					minikube config set  cpus 6
				
			

Отключить ненужное расширение metrics-server.  Это необходимо для того, чтобы потом мы без проблем установили в кластер стек мониторинга kube-prometheus

				
					minikube addons disable metrics-server
				
			

Запуск minikube

 

Для запуска minikube используем команду

				
					minikube start
				
			
				
					Microsoft Windows [Version 10.0.22631.4602]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

C:\Windows\System32>minikube start
* minikube v1.28.0 на Microsoft Windows 11 Home Single Language 10.0.22631 Build 22631
* Используется драйвер virtualbox на основе существующего профиля
* Запускается control plane узел minikube в кластере minikube
* minikube 1.34.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.34.0
* To disable this notice, run: 'minikube config set WantUpdateNotification false'

* Перезагружается существующий virtualbox VM для "minikube" ...
! This VM is having trouble accessing https://registry.k8s.io
* To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
* Подготавливается Kubernetes v1.25.3 на Docker 20.10.20 ...
  - kubelet.authentication-token-webhook=true
  - kubelet.authorization-mode=Webhook
  - scheduler.bind-address=0.0.0.0
  - controller-manager.bind-address=0.0.0.0
  - Используется образ gcr.io/k8s-minikube/storage-provisioner:v5
  - Используется образ docker.io/kubernetesui/dashboard:v2.7.0
  - Используется образ docker.io/kubernetesui/metrics-scraper:v1.0.8
* Компоненты Kubernetes проверяются ...
* Some dashboard features require the metrics-server addon. To enable all features please run:

        minikube addons enable metrics-server


* Включенные дополнения: storage-provisioner, default-storageclass, dashboard
* Готово! kubectl настроен для использования кластера "minikube" и "default" пространства имён по умолчанию

C:\Windows\System32>
				
			

Для остановки minikube запускаем

				
					minikube stop
				
			

Для очистки кластера (удаление всех нэймспейсов и конфигураций) выполняем

				
					minikube delete
				
			

Использование встроенной web-консоли

 

Minikube поставляется с набором встроенных расширений, одно из которых представляет из себя web-консоль управления кластером. Для запуска консоли необходимо запустить команду

				
					minikube dashboard
				
			

Через консоль мы можем просматривать содержимое существующих пространств kubernetes (нэймспейсов)

Пересоздавать поды

Заходить в консоль пода и выполнять команды внутри контейнеров

Скачивать и просматривать файлы логов с пода

Редактировать конфигурации deployment-ов и прочие манифесты

Использование kubectl

 

Все действия доступные из Web консоли также можно осуществить из приложения kubectl

Развертываем deployment или другие конфигурации

				
					C:\Windows\System32>kubectl apply -f C:\Work\Projects\SampleOsApp\service-back\os\service-back\kubernetes\service\app_deployment.yaml -n myproject
deployment.apps/service-back-0.01 configured
				
			

Просматриваем список нэймспейсов

				
					
C:\Windows\System32>kubectl get namespaces
NAME                   STATUS   AGE
default                Active   44d
istio-system           Active   44d
kube-node-lease        Active   44d
kube-public            Active   44d
kube-system            Active   44d
kubernetes-dashboard   Active   44d
monitoring             Active   44d
myproject              Active   44d
				
			

Просматриваем список подов в нэймспейсе

				
					C:\Windows\System32>kubectl  get pods -n myproject
NAME                                       READY   STATUS    RESTARTS      AGE
service-back-0.01-95d8d464d-xbn2f          2/2     Running   0             3m22s
service-facade-0.01-76c66cdcfb-mstb2       2/2     Running   8 (22h ago)   2d23h
service-facade-0.01-load-generator-78cqh   0/1     Error     0             25h
				
			

Копируем файл из контейнера пода на локальный компьютер

				
					C:\Windows\System32>kubectl -n myproject cp service-back-0.01-95d8d464d-xbn2f:/opt/app/log/application.log /Work/application.log
Defaulted container "service-back" out of: service-back, logging-app
tar: Removing leading `/' from member names
				
			

Установка Istio

 

Сервисная сетка Istio значительно расширяет стандартные возможности Kubernetes. При ее использовании появляется гораздо больше средств конфигурирования распределенной среды за счет таких конфигов как Virtual Service, Destination Rule, Gateway и прочих. С их помощью мы можем более гибко управлять внешним и внутренним трафиком, использовать телеметрию, переповторы, автоматические выключатели, канареечное тестирование.

Установка Istio в локальный кластер minikube проста. Для этого достаточно скачать и запустить установочный файл istioctl отсюда

Далее выполняем команду (при запущенном кластере minikube)

				
					istioctl install
				
			

После выполнения будет установлен istio с профилем по умолчанию, который включает в себя прокси сервера ingress и egress для контроля входящего и исходящего трафика. Чтобы убедиться, что istio корректно установлен, зайдем к консоль minikube и откроем содержимое пространства istio-system

Заходим в консоль ноды minikube

 

Для более глубокого погружения в работу kubernetes мы можем зайти в консоль единственной ноды кластера minikube. Это можно сделать через интерфейс VirtualBox (имя и пароль по умолчанию docker/tcuser)

Далее, можно просмотреть запущенные процессы, файловую систему, найти файлы куда пишутся логи с подов и.т.д.

Поделиться

LEAVE A REPLYYour email address will not be published. Required fields are marked *Your Name

Copyright © 2025 Разработка на Java для Kubernetes