Развертывание локального кластера 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)

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