# Troubleshooting ## Автор Сергей Антропов Сайт: https://devops.org.ru ## Описание Этот документ содержит решения наиболее распространенных проблем при работе с универсальной лабораторией. ## Содержание - [Общие проблемы](#общие-проблемы) - [Проблемы с Docker](#проблемы-с-docker) - [Проблемы с Kubernetes](#проблемы-с-kubernetes) - [Проблемы с портами](#проблемы-с-портами) - [Проблемы с ресурсами](#проблемы-с-ресурсами) - [Проблемы с сетью](#проблемы-с-сетью) - [Проблемы с Ansible](#проблемы-с-ansible) - [Проблемы с Molecule](#проблемы-с-molecule) - [Проблемы с пресетами](#проблемы-с-пресетами) - [Проблемы с отчетами](#проблемы-с-отчетами) ## Общие проблемы ### Проблема: Лаборатория не запускается **Симптомы:** - Команда `make lab-up` завершается с ошибкой - Контейнеры не создаются - Ошибки в логах Docker **Решение:** ```bash # Проверить статус Docker docker ps docker version # Перезапустить Docker sudo systemctl restart docker # Очистить Docker docker system prune -a # Перезапустить лабораторию make lab-reset ``` ### Проблема: Команды Make не работают **Симптомы:** - `make: command not found` - Ошибки в Makefile **Решение:** ```bash # Установить Make # Ubuntu/Debian sudo apt-get install make # CentOS/RHEL sudo yum install make # macOS brew install make # Проверить версию make --version ``` ### Проблема: Недостаточно прав **Симптомы:** - `Permission denied` - Ошибки доступа к файлам **Решение:** ```bash # Проверить права на файлы ls -la # Установить права chmod +x scripts/*.sh chmod 644 *.yml # Добавить пользователя в группу docker sudo usermod -aG docker $USER newgrp docker ``` ## Проблемы с Docker ### Проблема: Docker daemon не запущен **Симптомы:** - `Cannot connect to the Docker daemon` - `docker: command not found` **Решение:** ```bash # Запустить Docker daemon sudo systemctl start docker sudo systemctl enable docker # Проверить статус sudo systemctl status docker # Проверить доступ docker ps ``` ### Проблема: Недостаточно места на диске **Симптомы:** - `No space left on device` - Ошибки создания контейнеров **Решение:** ```bash # Проверить использование диска df -h # Очистить Docker docker system prune -a docker volume prune docker network prune # Удалить неиспользуемые образы docker image prune -a ``` ### Проблема: Конфликты портов **Симптомы:** - `Port is already in use` - Ошибки привязки портов **Решение:** ```bash # Найти процесс, использующий порт sudo netstat -tulpn | grep :8080 sudo lsof -i :8080 # Убить процесс sudo kill -9 # Или изменить порт в пресете publish: - "8081:80" # Вместо 8080:80 ``` ### Проблема: DinD контейнеры не работают **Симптомы:** - DinD контейнеры не запускаются - Ошибки Docker-in-Docker **Решение:** ```bash # Проверить privileged режим docker run --privileged -d docker:dind # Проверить доступ к Docker socket docker run -v /var/run/docker.sock:/var/run/docker.sock docker:latest ps # Перезапустить с правильными параметрами make lab-reset make lab-create ``` ## Проблемы с Kubernetes ### Проблема: Kind кластер не создается **Симптомы:** - `kind create cluster` завершается с ошибкой - Кластер не доступен **Решение:** ```bash # Проверить Kind kind version # Удалить существующие кластеры kind delete cluster --name lab # Очистить Docker docker system prune -a # Пересоздать кластер make lab-create ``` ### Проблема: kubectl не работает **Симптомы:** - `kubectl: command not found` - Ошибки подключения к кластеру **Решение:** ```bash # Установить kubectl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/ # Проверить конфигурацию kubectl config get-contexts # Переключиться на правильный контекст kubectl config use-context kind-lab ``` ### Проблема: Pods не запускаются **Симптомы:** - Pods в состоянии Pending - Ошибки в логах pods **Решение:** ```bash # Проверить статус pods kubectl get pods -A kubectl describe pod # Проверить события kubectl get events --sort-by=.metadata.creationTimestamp # Проверить ресурсы kubectl top nodes kubectl top pods ``` ### Проблема: Istio не устанавливается **Симптомы:** - Istio компоненты не запускаются - Ошибки в Istio логах **Решение:** ```bash # Проверить Istio istioctl version # Переустановить Istio istioctl uninstall --purge istioctl install --set profile=demo # Проверить статус kubectl get pods -n istio-system ``` ## Проблемы с портами ### Проблема: Порт уже используется **Симптомы:** - `bind: address already in use` - Ошибки привязки портов **Решение:** ```bash # Найти процесс sudo lsof -i :8080 # Убить процесс sudo kill -9 # Или изменить порт в пресете publish: - "8081:80" ``` ### Проблема: Port-forward не работает **Симптомы:** - Port-forward не устанавливается - Ошибки подключения **Решение:** ```bash # Остановить все port-forward make kube-pf-stop # Проверить доступность сервиса kubectl get svc -n istio-system # Перезапустить port-forward make kiali-port-forward CLUSTER=lab ``` ## Проблемы с ресурсами ### Проблема: Недостаточно памяти **Симптомы:** - `Out of memory` - Контейнеры завершаются **Решение:** ```bash # Проверить память free -h docker stats # Ограничить ресурсы docker run --memory=512m your-image # Или уменьшить количество контейнеров в пресете ``` ### Проблема: Недостаточно CPU **Симптомы:** - Медленная работа - Высокая нагрузка на CPU **Решение:** ```bash # Проверить CPU top htop # Ограничить CPU docker run --cpus=1.0 your-image # Или использовать более легкие образы ``` ### Проблема: Недостаточно места на диске **Симптомы:** - `No space left on device` - Ошибки записи **Решение:** ```bash # Проверить место df -h # Очистить Docker docker system prune -a docker volume prune # Удалить неиспользуемые образы docker image prune -a ``` ## Проблемы с сетью ### Проблема: Контейнеры не могут связаться **Симптомы:** - Ping не работает между контейнерами - Ошибки сети **Решение:** ```bash # Проверить сеть docker network ls docker network inspect labnet # Пересоздать сеть docker network rm labnet docker network create labnet # Перезапустить лабораторию make lab-reset ``` ### Проблема: DNS не работает **Симптомы:** - Не удается разрешить имена - Ошибки DNS **Решение:** ```bash # Проверить DNS nslookup google.com # Перезапустить Docker sudo systemctl restart docker # Проверить resolv.conf cat /etc/resolv.conf ``` ## Проблемы с Ansible ### Проблема: Ansible не найден **Симптомы:** - `ansible: command not found` - Ошибки выполнения playbook **Решение:** ```bash # Установить Ansible pip install ansible # Или через пакетный менеджер sudo apt-get install ansible # Проверить версию ansible --version ``` ### Проблема: Ошибки в playbook **Симптомы:** - Синтаксические ошибки - Ошибки выполнения задач **Решение:** ```bash # Проверить синтаксис ansible-playbook --syntax-check playbook.yml # Запустить в режиме отладки ansible-playbook -vvv playbook.yml # Проверить инвентарь ansible-inventory --list ``` ### Проблема: Ошибки подключения **Симптомы:** - `Connection refused` - Ошибки SSH **Решение:** ```bash # Проверить подключение ansible all -m ping # Проверить SSH ключи ssh-keygen -t rsa -b 4096 ssh-copy-id user@host # Или использовать пароль ansible all -m ping -k ``` ## Проблемы с Molecule ### Проблема: Molecule не найден **Симптомы:** - `molecule: command not found` - Ошибки выполнения molecule **Решение:** ```bash # Установить Molecule pip install molecule # Или через пакетный менеджер sudo apt-get install molecule # Проверить версию molecule --version ``` ### Проблема: Ошибки в molecule.yml **Симптомы:** - Синтаксические ошибки в конфигурации - Ошибки валидации **Решение:** ```bash # Проверить синтаксис molecule syntax # Проверить конфигурацию molecule lint # Исправить ошибки molecule validate ``` ### Проблема: Ошибки драйвера **Симптомы:** - Ошибки Docker драйвера - Проблемы с контейнерами **Решение:** ```bash # Проверить драйвер molecule driver list # Установить Docker драйвер pip install molecule-docker # Перезапустить Molecule molecule destroy molecule create ``` ## Проблемы с пресетами ### Проблема: Пресет не найден **Симптомы:** - `File not found` - Ошибки загрузки пресета **Решение:** ```bash # Проверить путь ls -la molecule/presets/ # Проверить синтаксис YAML yamllint molecule/presets/your-preset.yml # Исправить ошибки molecule validate ``` ### Проблема: Ошибки в пресете **Симптомы:** - Синтаксические ошибки - Ошибки валидации **Решение:** ```bash # Проверить синтаксис yamllint molecule/presets/your-preset.yml # Проверить структуру molecule validate # Исправить ошибки molecule syntax ``` ## Проблемы с отчетами ### Проблема: HTML отчет не генерируется **Симптомы:** - `File not found` - Ошибки генерации отчета **Решение:** ```bash # Проверить JSON файл ls -la reports/ cat reports/lab-health.json # Перезапустить верификацию make lab-verify # Сгенерировать отчет make lab-report ``` ### Проблема: Отчет пустой **Симптомы:** - Отчет не содержит данных - Ошибки в JSON **Решение:** ```bash # Проверить JSON jq . reports/lab-health.json # Перезапустить тест make lab-test # Проверить логи make lab-verify ``` ## Полезные команды для диагностики ### Общие команды ```bash # Проверить статус системы docker ps docker images docker network ls docker volume ls # Проверить ресурсы free -h df -h top # Проверить сеть netstat -tulpn ss -tulpn ``` ### Команды для Kubernetes ```bash # Проверить кластеры kind get clusters kubectl config get-contexts # Проверить ресурсы kubectl get nodes kubectl get pods -A kubectl get svc -A # Проверить события kubectl get events --sort-by=.metadata.creationTimestamp ``` ### Команды для Ansible ```bash # Проверить инвентарь ansible-inventory --list ansible all -m ping # Проверить playbook ansible-playbook --syntax-check playbook.yml ansible-playbook --check playbook.yml ``` ## Получение помощи Если проблема не решается: 1. **Проверьте логи:** ```bash docker logs kubectl logs ``` 2. **Создайте issue:** - Опишите проблему - Приложите логи - Укажите версии компонентов 3. **Обратитесь к сообществу:** - GitHub Discussions - Discord/Slack каналы - Форумы Ansible 4. **Проверьте документацию:** - [Основная документация](universal-lab.md) - [Примеры использования](examples.md) - [API Reference](api.md)