docs: полная переработка документации по Kubernetes
- Создана подробная документация по скриптам (k8s-scripts.md) - Полностью переписана документация kubernetes-kind.md - Добавлено содержание с навигацией - Добавлены разделы: Helm, манифесты, Ingress, port-forward - Добавлена архитектура взаимодействия - Добавлены Best Practices и Troubleshooting - Обновлена справка в Makefile - Удалены устаревшие команды (manifest update, addon) - Добавлена ссылка на документацию по скриптам
This commit is contained in:
54
Makefile
54
Makefile
@@ -1160,32 +1160,6 @@ k8s:
|
|||||||
echo "❌ Не удалось получить kubeconfig"; \
|
echo "❌ Не удалось получить kubeconfig"; \
|
||||||
rm -f $$KUBECONFIG_FILE; \
|
rm -f $$KUBECONFIG_FILE; \
|
||||||
fi;; \
|
fi;; \
|
||||||
addon) \
|
|
||||||
echo "📦 Установка аддона..."; \
|
|
||||||
PRESET_ARG="$(word 3, $(MAKECMDGOALS))"; \
|
|
||||||
MANIFEST_ARG="$(word 4, $(MAKECMDGOALS))"; \
|
|
||||||
if [ -z "$$PRESET_ARG" ]; then \
|
|
||||||
echo "❌ Ошибка: Укажите пресет"; \
|
|
||||||
echo "💡 Пример: make k8s addon kubernetes https://example.com/manifest.yaml"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
if [ -z "$$MANIFEST_ARG" ]; then \
|
|
||||||
echo "❌ Ошибка: Укажите URL манифеста"; \
|
|
||||||
echo "💡 Пример: make k8s addon kubernetes https://example.com/manifest.yaml"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
CONTAINER_NAME=k8s-controller; \
|
|
||||||
if ! docker ps | grep -q $$CONTAINER_NAME; then \
|
|
||||||
echo "❌ Контейнер $$CONTAINER_NAME не запущен"; \
|
|
||||||
echo "💡 Запустите: make k8s create $$PRESET_ARG"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
CLUSTER_NAME=$$(docker exec $$CONTAINER_NAME kind get clusters | head -1); \
|
|
||||||
echo "📥 Установка аддона из $$MANIFEST_ARG..."; \
|
|
||||||
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify apply -f $$MANIFEST_ARG"; \
|
|
||||||
echo "✅ Аддон установлен"; \
|
|
||||||
echo "📝 Обновление Ingress хостов..."; \
|
|
||||||
sudo scripts/manage_hosts.py add 2>/dev/null || echo "⚠️ Не удалось обновить Ingress хосты (требуется sudo)";; \
|
|
||||||
nodes) \
|
nodes) \
|
||||||
echo "🖥️ Просмотр узлов кластера..."; \
|
echo "🖥️ Просмотр узлов кластера..."; \
|
||||||
PRESET_ARG="$(word 3, $(MAKECMDGOALS))"; \
|
PRESET_ARG="$(word 3, $(MAKECMDGOALS))"; \
|
||||||
@@ -1245,14 +1219,9 @@ k8s:
|
|||||||
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify delete -f $$MANIFEST_ARG"; \
|
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify delete -f $$MANIFEST_ARG"; \
|
||||||
echo "📝 Обновление Ingress хостов..."; \
|
echo "📝 Обновление Ingress хостов..."; \
|
||||||
sudo scripts/manage_hosts.py add 2>/dev/null || echo "⚠️ Не удалось обновить Ingress хосты (требуется sudo)";; \
|
sudo scripts/manage_hosts.py add 2>/dev/null || echo "⚠️ Не удалось обновить Ingress хосты (требуется sudo)";; \
|
||||||
update) \
|
|
||||||
echo "🔄 Обновление манифеста: $$MANIFEST_ARG"; \
|
|
||||||
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify apply -f $$MANIFEST_ARG --force"; \
|
|
||||||
echo "📝 Обновление Ingress хостов..."; \
|
|
||||||
sudo scripts/manage_hosts.py add 2>/dev/null || echo "⚠️ Не удалось обновить Ingress хосты (требуется sudo)";; \
|
|
||||||
*) \
|
*) \
|
||||||
echo "❌ Неизвестная команда: $$MANIFEST_CMD"; \
|
echo "❌ Неизвестная команда: $$MANIFEST_CMD"; \
|
||||||
echo "💡 Доступные команды: apply, delete, update"; \
|
echo "💡 Доступные команды: apply, delete"; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac;; \
|
esac;; \
|
||||||
helm) \
|
helm) \
|
||||||
@@ -1433,17 +1402,15 @@ k8s:
|
|||||||
echo " make k8s start [cluster] - запустить остановленный кластер"; \
|
echo " make k8s start [cluster] - запустить остановленный кластер"; \
|
||||||
echo " 💡 Можно указать имя кластера или запустить все"; \
|
echo " 💡 Можно указать имя кластера или запустить все"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " make k8s status [cluster] - показать статус кластеров"; \
|
echo " make k8s status [preset] - детальный отчет о состоянии кластера"; \
|
||||||
echo " 💡 Можно указать имя конкретного кластера"; \
|
echo " 💡 Показывает: узлы, pods, сервисы, Ingress, события, Helm релизы и т.д."; \
|
||||||
|
echo " 💡 Требует: пресет"; \
|
||||||
|
echo " 💡 Пример: make k8s status kubernetes"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " make k8s config [cluster] - получить kubeconfig для подключения"; \
|
echo " make k8s config [cluster] - получить kubeconfig для подключения"; \
|
||||||
echo " 💡 Сохраняет: kubeconfig в корне проекта"; \
|
echo " 💡 Сохраняет: kubeconfig в корне проекта"; \
|
||||||
echo " 💡 Можно указать имя конкретного кластера"; \
|
echo " 💡 Можно указать имя конкретного кластера"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " make k8s addon [preset] [url] - установить аддон из манифеста"; \
|
|
||||||
echo " 💡 Требует: пресет и URL манифеста"; \
|
|
||||||
echo " 💡 Пример: make k8s addon kubernetes https://example.com/manifest.yaml"; \
|
|
||||||
echo ""; \
|
|
||||||
echo " make k8s nodes [preset] - показать узлы кластера"; \
|
echo " make k8s nodes [preset] - показать узлы кластера"; \
|
||||||
echo " 💡 Требует: пресет"; \
|
echo " 💡 Требует: пресет"; \
|
||||||
echo " 💡 Пример: make k8s nodes kubernetes"; \
|
echo " 💡 Пример: make k8s nodes kubernetes"; \
|
||||||
@@ -1453,7 +1420,7 @@ k8s:
|
|||||||
echo " 💡 Пример: make k8s shell kubernetes"; \
|
echo " 💡 Пример: make k8s shell kubernetes"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " make k8s manifest [cmd] [preset] [url] - работа с манифестами"; \
|
echo " make k8s manifest [cmd] [preset] [url] - работа с манифестами"; \
|
||||||
echo " 💡 Команды: apply, delete, update"; \
|
echo " 💡 Команды: apply, delete"; \
|
||||||
echo " 💡 Пример: make k8s manifest apply kubernetes https://example.com/deploy.yaml"; \
|
echo " 💡 Пример: make k8s manifest apply kubernetes https://example.com/deploy.yaml"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " make k8s helm [cmd] [preset] [release] [chart] - работа с Helm"; \
|
echo " make k8s helm [cmd] [preset] [release] [chart] - работа с Helm"; \
|
||||||
@@ -1475,7 +1442,7 @@ k8s:
|
|||||||
echo " make k8s config kubernetes # получить kubeconfig для кластера"; \
|
echo " make k8s config kubernetes # получить kubeconfig для кластера"; \
|
||||||
echo " export KUBECONFIG=kubeconfig # использовать конфиг"; \
|
echo " export KUBECONFIG=kubeconfig # использовать конфиг"; \
|
||||||
echo " kubectl get nodes # проверить узлы"; \
|
echo " kubectl get nodes # проверить узлы"; \
|
||||||
echo " make k8s addon kubernetes https://example.com/manifest.yaml # установить аддон"; \
|
echo " make k8s manifest apply kubernetes https://example.com/manifest.yaml # установить манифест"; \
|
||||||
echo " make k8s stop kubernetes # остановить кластер"; \
|
echo " make k8s stop kubernetes # остановить кластер"; \
|
||||||
echo " make k8s start kubernetes # запустить кластер"; \
|
echo " make k8s start kubernetes # запустить кластер"; \
|
||||||
echo " make k8s destroy kubernetes # удалить кластер с пресетом kubernetes";; \
|
echo " make k8s destroy kubernetes # удалить кластер с пресетом kubernetes";; \
|
||||||
@@ -1579,10 +1546,13 @@ help:
|
|||||||
@echo " make k8s destroy [preset] - удалить Kind кластер"
|
@echo " make k8s destroy [preset] - удалить Kind кластер"
|
||||||
@echo " make k8s start [preset] - запустить Kind кластер"
|
@echo " make k8s start [preset] - запустить Kind кластер"
|
||||||
@echo " make k8s stop [preset] - остановить Kind кластер"
|
@echo " make k8s stop [preset] - остановить Kind кластер"
|
||||||
@echo " make k8s status [preset] - показать статус кластера"
|
@echo " make k8s status [preset] - детальный отчет о состоянии кластера"
|
||||||
@echo " make k8s nodes [preset] - показать узлы кластера"
|
@echo " make k8s nodes [preset] - показать узлы кластера"
|
||||||
@echo " make k8s config [preset] - получить kubeconfig для подключения"
|
@echo " make k8s config [preset] - получить kubeconfig для подключения"
|
||||||
@echo " make k8s addon [preset] [url] - установить аддон из манифеста"
|
@echo " make k8s manifest [cmd] [preset] [url] - работа с манифестами (apply, delete)"
|
||||||
|
@echo " make k8s helm [cmd] [preset] [release] [chart] - работа с Helm"
|
||||||
|
@echo " make k8s helmrepo [cmd] [preset] [name] [url] - управление Helm репозиториями"
|
||||||
|
@echo " make k8s portforward [cmd] - управление port-forward (create, list, clear)"
|
||||||
@echo " make k8s shell [preset] - открыть shell в контейнере k8s"
|
@echo " make k8s shell [preset] - открыть shell в контейнере k8s"
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "💡 ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:"
|
@echo "💡 ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:"
|
||||||
|
|||||||
275
docs/k8s-scripts.md
Normal file
275
docs/k8s-scripts.md
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
# Скрипты управления Kubernetes
|
||||||
|
|
||||||
|
**Автор:** Сергей Антропов
|
||||||
|
**Сайт:** https://devops.org.ru
|
||||||
|
|
||||||
|
## Обзор
|
||||||
|
|
||||||
|
В проекте используются несколько Python скриптов для автоматизации работы с Kubernetes кластерами на базе Kind. Все скрипты находятся в директории `scripts/`.
|
||||||
|
|
||||||
|
## Скрипты
|
||||||
|
|
||||||
|
### 1. `create_k8s_cluster.py`
|
||||||
|
|
||||||
|
**Назначение:** Создание Kind кластера, установка аддонов и создание Docker контейнеров из пресета.
|
||||||
|
|
||||||
|
**Принцип работы:**
|
||||||
|
|
||||||
|
1. **Парсинг пресета:** Читает YAML файл пресета (например, `molecule/presets/k8s/kubernetes.yml`)
|
||||||
|
|
||||||
|
2. **Создание Docker сети:**
|
||||||
|
- Проверяет наличие сети (по умолчанию `labnet`)
|
||||||
|
- Создает сеть если её нет
|
||||||
|
|
||||||
|
3. **Создание Docker контейнеров:**
|
||||||
|
- Читает секцию `hosts` из пресета
|
||||||
|
- Для каждого хоста создает Docker контейнер с настройками из `systemd_defaults`
|
||||||
|
- Использует образы из секции `images`
|
||||||
|
|
||||||
|
4. **Создание Kind кластера:**
|
||||||
|
- Генерирует конфигурацию Kind в формате YAML
|
||||||
|
- Настраивает `extraPortMappings` для Ingress портов
|
||||||
|
- Создает кластер через команду `kind create cluster`
|
||||||
|
|
||||||
|
5. **Установка аддонов:**
|
||||||
|
- **Ingress NGINX:** Устанавливает ingress-nginx controller через kubectl apply
|
||||||
|
- **Metrics Server:** Устанавливает metrics-server с патчем для insecure TLS
|
||||||
|
- **Istio:** Устанавливает Istio через istioctl с профилем demo
|
||||||
|
- **Kiali:** Устанавливает Kiali через Helm (использует Helm chart)
|
||||||
|
- **Prometheus Stack:** Устанавливает Prometheus + Grafana через Helm (kube-prometheus-stack)
|
||||||
|
|
||||||
|
6. **Подключение к сети Kind:** Подключает контейнер `k8s-controller` к сети `kind` для доступа к API серверу
|
||||||
|
|
||||||
|
**Параметры:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/create_k8s_cluster.py <preset_file> <container_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/create_k8s_cluster.py molecule/presets/k8s/kubernetes.yml k8s-controller
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. `delete_hosts.py`
|
||||||
|
|
||||||
|
**Назначение:** Удаление Docker контейнеров, созданных из секции `hosts` пресета.
|
||||||
|
|
||||||
|
**Принцип работы:**
|
||||||
|
|
||||||
|
1. **Парсинг пресета:** Читает YAML файл пресета
|
||||||
|
2. **Получение списка хостов:** Извлекает секцию `hosts`
|
||||||
|
3. **Удаление контейнеров:** Для каждого хоста выполняет `docker rm -f <host_name>`
|
||||||
|
|
||||||
|
**Параметры:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/delete_hosts.py <preset_file>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Пример:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/delete_hosts.py molecule/presets/k8s/kubernetes.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. `portforward.py`
|
||||||
|
|
||||||
|
**Назначение:** Управление port-forward для доступа к сервисам Kubernetes извне кластера.
|
||||||
|
|
||||||
|
**Принцип работы:**
|
||||||
|
|
||||||
|
1. **Загрузка пресета:** Читает файл `molecule/presets/k8s/kubernetes.yml`
|
||||||
|
|
||||||
|
2. **Получение kubeconfig:**
|
||||||
|
- Копирует kubeconfig из контейнера `k8s-controller` через `docker exec`
|
||||||
|
- Сохраняет во временный файл
|
||||||
|
|
||||||
|
3. **Модификация kubeconfig:**
|
||||||
|
- Заменяет `server: https://0.0.0.0:6443` на `server: https://localhost:6443`
|
||||||
|
- Это необходимо для доступа с локальной машины
|
||||||
|
|
||||||
|
4. **Создание port-forward:**
|
||||||
|
- Запускает `kubectl port-forward` для каждого сервиса из `addon_ports`
|
||||||
|
- Использует формат: `kubectl port-forward -n <namespace> svc/<service> <local_port>:<remote_port>`
|
||||||
|
- Управляет процессами через PID
|
||||||
|
|
||||||
|
**Команды:**
|
||||||
|
- `create` - создает port-forward для всех сервисов
|
||||||
|
- `list` - показывает список активных портов
|
||||||
|
- `clear` - останавливает все port-forward процессы
|
||||||
|
- `recreate` - очищает и заново создает port-forward
|
||||||
|
- `delete <port>` - удаляет конкретный port-forward
|
||||||
|
|
||||||
|
**Пример использования:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/portforward.py create
|
||||||
|
python3 scripts/portforward.py list
|
||||||
|
python3 scripts/portforward.py delete 3000
|
||||||
|
python3 scripts/portforward.py clear
|
||||||
|
```
|
||||||
|
|
||||||
|
**Важно:** Скрипт должен запускаться на локальной машине, где установлены `kubectl` и Python 3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. `manage_hosts.py`
|
||||||
|
|
||||||
|
**Назначение:** Автоматическое управление записями в `/etc/hosts` для Ingress ресурсов.
|
||||||
|
|
||||||
|
**Принцип работы:**
|
||||||
|
|
||||||
|
1. **Получение списка Ingress:**
|
||||||
|
- Получает kubeconfig из контейнера `k8s-controller`
|
||||||
|
- Выполняет `kubectl get ingress --all-namespaces`
|
||||||
|
- Извлекает все хосты из Ingress правил
|
||||||
|
|
||||||
|
2. **Работа с /etc/hosts:**
|
||||||
|
- Использует метку `#k8s` для различения автоматических и ручных записей
|
||||||
|
- Добавляет записи в формате: `127.0.0.1 <hostname> #k8s`
|
||||||
|
- Удаляет только записи с меткой `#k8s`
|
||||||
|
|
||||||
|
3. **Автоматизация:**
|
||||||
|
- Вызывается автоматически после:
|
||||||
|
- `make k8s create` (добавление)
|
||||||
|
- `make k8s destroy` (удаление)
|
||||||
|
- `make k8s manifest apply/delete` (обновление)
|
||||||
|
- `make k8s helm apply/delete/update` (обновление)
|
||||||
|
|
||||||
|
**Команды:**
|
||||||
|
- `add` - добавляет все Ingress хосты в /etc/hosts
|
||||||
|
- `remove` - удаляет все записи с меткой #k8s
|
||||||
|
- `cleanup` - удаляет записи если кластер недоступен
|
||||||
|
- `list` - показывает текущие k8s записи
|
||||||
|
|
||||||
|
**Пример использования:**
|
||||||
|
```bash
|
||||||
|
sudo python3 scripts/manage_hosts.py add
|
||||||
|
sudo python3 scripts/manage_hosts.py list
|
||||||
|
sudo python3 scripts/manage_hosts.py remove
|
||||||
|
```
|
||||||
|
|
||||||
|
**Безопасность:**
|
||||||
|
- Работает только с записями, помеченными `#k8s`
|
||||||
|
- Не трогает ручные записи пользователя
|
||||||
|
- Требует sudo для редактирования `/etc/hosts`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. `k8s_status.py`
|
||||||
|
|
||||||
|
**Назначение:** Детальный отчет о состоянии Kubernetes кластера.
|
||||||
|
|
||||||
|
**Принцип работы:**
|
||||||
|
|
||||||
|
1. **Подключение к кластеру:**
|
||||||
|
- Получает имя кластера через `kind get clusters`
|
||||||
|
- Формирует адрес API сервера: `https://<cluster_name>-control-plane:6443`
|
||||||
|
- Выполняет все kubectl команды через `docker exec k8s-controller`
|
||||||
|
|
||||||
|
2. **Сбор информации:**
|
||||||
|
- **Общая информация:** версия Kubernetes
|
||||||
|
- **Узлы:** статус, ресурсы, описание каждого узла
|
||||||
|
- **Namespaces:** список всех namespace
|
||||||
|
- **Использование ресурсов:** метрики через metrics-server (если установлен)
|
||||||
|
- **Pods:** поды по каждому namespace
|
||||||
|
- **Deployments:** deployments по namespace
|
||||||
|
- **DaemonSets:** daemonsets по namespace
|
||||||
|
- **StatefulSets:** statefulsets по namespace
|
||||||
|
- **Services:** сервисы по namespace
|
||||||
|
- **Ingress:** ingress ресурсы
|
||||||
|
- **PVC:** PersistentVolumeClaims
|
||||||
|
- **События:** последние 20 событий по namespace
|
||||||
|
- **Helm релизы:** список установленных через Helm
|
||||||
|
|
||||||
|
3. **Форматирование вывода:**
|
||||||
|
- Использует секции с разделителями
|
||||||
|
- Группирует информацию по namespace
|
||||||
|
- Показывает только непустые секции
|
||||||
|
|
||||||
|
**Пример использования:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/k8s_status.py
|
||||||
|
```
|
||||||
|
|
||||||
|
**Интеграция:**
|
||||||
|
- Автоматически вызывается командой `make k8s status [preset]`
|
||||||
|
|
||||||
|
**Особенности:**
|
||||||
|
- Выполняет все команды внутри контейнера `k8s-controller`
|
||||||
|
- Использует прямой адрес control-plane для подключения
|
||||||
|
- Обходит проблемы с kubeconfig через `--insecure-skip-tls-verify`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Архитектура взаимодействия
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────┐
|
||||||
|
│ Локальная машина │
|
||||||
|
│ │
|
||||||
|
│ Makefile → Python скрипты → Docker API │
|
||||||
|
│ ↓ ↓ ↓ │
|
||||||
|
│ make k8s scripts/*.py docker exec │
|
||||||
|
└─────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────────────────────────────┐
|
||||||
|
│ Docker контейнер │
|
||||||
|
│ k8s-controller │
|
||||||
|
│ ┌──────────────────────────────────────────┐ │
|
||||||
|
│ │ kind, kubectl, helm, istioctl │ │
|
||||||
|
│ └──────────────────────────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────┘
|
||||||
|
│
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────────────────────────────┐
|
||||||
|
│ Docker сеть: kind │
|
||||||
|
│ ┌──────────────────────────────────────────┐ │
|
||||||
|
│ │ Kind Kubernetes Cluster │ │
|
||||||
|
│ │ • Control Plane (6443) │ │
|
||||||
|
│ │ • Worker Nodes │ │
|
||||||
|
│ │ • Services (ClusterIP) │ │
|
||||||
|
│ │ • Ingress │ │
|
||||||
|
│ └──────────────────────────────────────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## Общие принципы
|
||||||
|
|
||||||
|
1. **Изоляция:** Все kubectl команды выполняются внутри контейнера `k8s-controller`
|
||||||
|
2. **Безопасность:** Используется `--insecure-skip-tls-verify` для обхода проблем с сертификатами
|
||||||
|
3. **Автоматизация:** Скрипты вызываются автоматически через Makefile
|
||||||
|
4. **Логгирование:** Все скрипты выводят подробную информацию о своих действиях
|
||||||
|
|
||||||
|
## Требования
|
||||||
|
|
||||||
|
- Python 3 (на локальной машине)
|
||||||
|
- kubectl (на локальной машине, для portforward.py)
|
||||||
|
- Docker
|
||||||
|
- Docker контейнер `k8s-controller` должен быть запущен
|
||||||
|
|
||||||
|
## Отладка
|
||||||
|
|
||||||
|
Если что-то не работает:
|
||||||
|
|
||||||
|
1. **Проверьте контейнер:**
|
||||||
|
```bash
|
||||||
|
docker ps | grep k8s-controller
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Запустите скрипт вручную:**
|
||||||
|
```bash
|
||||||
|
python3 scripts/k8s_status.py
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Посмотрите логи:**
|
||||||
|
```bash
|
||||||
|
docker logs k8s-controller
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Проверьте кластер:**
|
||||||
|
```bash
|
||||||
|
docker exec k8s-controller kubectl get nodes
|
||||||
|
```
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user