- Создан новый README.md с полной документацией проекта - Перемещены все MD файлы в папку /docs - Создана структура документации: - docs/universal-lab.md - руководство по лаборатории - docs/presets.md - описание всех 21 пресета - docs/roles.md - структура и создание Ansible ролей - docs/examples.md - практические примеры использования - docs/troubleshooting.md - решение проблем - docs/api.md - справочник по API Основные возможности документации: - Полное описание всех возможностей лаборатории - 21 готовый пресет для различных сценариев - Подробные инструкции по использованию - Примеры создания собственных пресетов - Руководство по созданию Ansible ролей - Troubleshooting для решения проблем - API Reference для всех команд и параметров Структура проекта: - README.md - основная документация с ссылками - docs/ - централизованное хранение документации - molecule/presets/ - 21 готовый пресет - files/ - файлы для ролей и playbooks - scripts/ - скрипты для управления лабораторией Автор: Сергей Антропов Сайт: https://devops.org.ru
14 KiB
14 KiB
Troubleshooting
Автор
Сергей Антропов
Сайт: https://devops.org.ru
Описание
Этот документ содержит решения наиболее распространенных проблем при работе с универсальной лабораторией.
Содержание
- Общие проблемы
- Проблемы с Docker
- Проблемы с Kubernetes
- Проблемы с портами
- Проблемы с ресурсами
- Проблемы с сетью
- Проблемы с Ansible
- Проблемы с Molecule
- Проблемы с пресетами
- Проблемы с отчетами
Общие проблемы
Проблема: Лаборатория не запускается
Симптомы:
- Команда
make lab-upзавершается с ошибкой - Контейнеры не создаются
- Ошибки в логах Docker
Решение:
# Проверить статус Docker
docker ps
docker version
# Перезапустить Docker
sudo systemctl restart docker
# Очистить Docker
docker system prune -a
# Перезапустить лабораторию
make lab-reset
Проблема: Команды Make не работают
Симптомы:
make: command not found- Ошибки в Makefile
Решение:
# Установить Make
# Ubuntu/Debian
sudo apt-get install make
# CentOS/RHEL
sudo yum install make
# macOS
brew install make
# Проверить версию
make --version
Проблема: Недостаточно прав
Симптомы:
Permission denied- Ошибки доступа к файлам
Решение:
# Проверить права на файлы
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 daemondocker: command not found
Решение:
# Запустить Docker daemon
sudo systemctl start docker
sudo systemctl enable docker
# Проверить статус
sudo systemctl status docker
# Проверить доступ
docker ps
Проблема: Недостаточно места на диске
Симптомы:
No space left on device- Ошибки создания контейнеров
Решение:
# Проверить использование диска
df -h
# Очистить Docker
docker system prune -a
docker volume prune
docker network prune
# Удалить неиспользуемые образы
docker image prune -a
Проблема: Конфликты портов
Симптомы:
Port is already in use- Ошибки привязки портов
Решение:
# Найти процесс, использующий порт
sudo netstat -tulpn | grep :8080
sudo lsof -i :8080
# Убить процесс
sudo kill -9 <PID>
# Или изменить порт в пресете
publish:
- "8081:80" # Вместо 8080:80
Проблема: DinD контейнеры не работают
Симптомы:
- DinD контейнеры не запускаются
- Ошибки Docker-in-Docker
Решение:
# Проверить 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завершается с ошибкой- Кластер не доступен
Решение:
# Проверить Kind
kind version
# Удалить существующие кластеры
kind delete cluster --name lab
# Очистить Docker
docker system prune -a
# Пересоздать кластер
make lab-create
Проблема: kubectl не работает
Симптомы:
kubectl: command not found- Ошибки подключения к кластеру
Решение:
# Установить 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
Решение:
# Проверить статус pods
kubectl get pods -A
kubectl describe pod <pod-name>
# Проверить события
kubectl get events --sort-by=.metadata.creationTimestamp
# Проверить ресурсы
kubectl top nodes
kubectl top pods
Проблема: Istio не устанавливается
Симптомы:
- Istio компоненты не запускаются
- Ошибки в Istio логах
Решение:
# Проверить Istio
istioctl version
# Переустановить Istio
istioctl uninstall --purge
istioctl install --set profile=demo
# Проверить статус
kubectl get pods -n istio-system
Проблемы с портами
Проблема: Порт уже используется
Симптомы:
bind: address already in use- Ошибки привязки портов
Решение:
# Найти процесс
sudo lsof -i :8080
# Убить процесс
sudo kill -9 <PID>
# Или изменить порт в пресете
publish:
- "8081:80"
Проблема: Port-forward не работает
Симптомы:
- Port-forward не устанавливается
- Ошибки подключения
Решение:
# Остановить все port-forward
make kube-pf-stop
# Проверить доступность сервиса
kubectl get svc -n istio-system
# Перезапустить port-forward
make kiali-port-forward CLUSTER=lab
Проблемы с ресурсами
Проблема: Недостаточно памяти
Симптомы:
Out of memory- Контейнеры завершаются
Решение:
# Проверить память
free -h
docker stats
# Ограничить ресурсы
docker run --memory=512m your-image
# Или уменьшить количество контейнеров в пресете
Проблема: Недостаточно CPU
Симптомы:
- Медленная работа
- Высокая нагрузка на CPU
Решение:
# Проверить CPU
top
htop
# Ограничить CPU
docker run --cpus=1.0 your-image
# Или использовать более легкие образы
Проблема: Недостаточно места на диске
Симптомы:
No space left on device- Ошибки записи
Решение:
# Проверить место
df -h
# Очистить Docker
docker system prune -a
docker volume prune
# Удалить неиспользуемые образы
docker image prune -a
Проблемы с сетью
Проблема: Контейнеры не могут связаться
Симптомы:
- Ping не работает между контейнерами
- Ошибки сети
Решение:
# Проверить сеть
docker network ls
docker network inspect labnet
# Пересоздать сеть
docker network rm labnet
docker network create labnet
# Перезапустить лабораторию
make lab-reset
Проблема: DNS не работает
Симптомы:
- Не удается разрешить имена
- Ошибки DNS
Решение:
# Проверить DNS
nslookup google.com
# Перезапустить Docker
sudo systemctl restart docker
# Проверить resolv.conf
cat /etc/resolv.conf
Проблемы с Ansible
Проблема: Ansible не найден
Симптомы:
ansible: command not found- Ошибки выполнения playbook
Решение:
# Установить Ansible
pip install ansible
# Или через пакетный менеджер
sudo apt-get install ansible
# Проверить версию
ansible --version
Проблема: Ошибки в playbook
Симптомы:
- Синтаксические ошибки
- Ошибки выполнения задач
Решение:
# Проверить синтаксис
ansible-playbook --syntax-check playbook.yml
# Запустить в режиме отладки
ansible-playbook -vvv playbook.yml
# Проверить инвентарь
ansible-inventory --list
Проблема: Ошибки подключения
Симптомы:
Connection refused- Ошибки SSH
Решение:
# Проверить подключение
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
Решение:
# Установить Molecule
pip install molecule
# Или через пакетный менеджер
sudo apt-get install molecule
# Проверить версию
molecule --version
Проблема: Ошибки в molecule.yml
Симптомы:
- Синтаксические ошибки в конфигурации
- Ошибки валидации
Решение:
# Проверить синтаксис
molecule syntax
# Проверить конфигурацию
molecule lint
# Исправить ошибки
molecule validate
Проблема: Ошибки драйвера
Симптомы:
- Ошибки Docker драйвера
- Проблемы с контейнерами
Решение:
# Проверить драйвер
molecule driver list
# Установить Docker драйвер
pip install molecule-docker
# Перезапустить Molecule
molecule destroy
molecule create
Проблемы с пресетами
Проблема: Пресет не найден
Симптомы:
File not found- Ошибки загрузки пресета
Решение:
# Проверить путь
ls -la molecule/presets/
# Проверить синтаксис YAML
yamllint molecule/presets/your-preset.yml
# Исправить ошибки
molecule validate
Проблема: Ошибки в пресете
Симптомы:
- Синтаксические ошибки
- Ошибки валидации
Решение:
# Проверить синтаксис
yamllint molecule/presets/your-preset.yml
# Проверить структуру
molecule validate
# Исправить ошибки
molecule syntax
Проблемы с отчетами
Проблема: HTML отчет не генерируется
Симптомы:
File not found- Ошибки генерации отчета
Решение:
# Проверить JSON файл
ls -la reports/
cat reports/lab-health.json
# Перезапустить верификацию
make lab-verify
# Сгенерировать отчет
make lab-report
Проблема: Отчет пустой
Симптомы:
- Отчет не содержит данных
- Ошибки в JSON
Решение:
# Проверить JSON
jq . reports/lab-health.json
# Перезапустить тест
make lab-test
# Проверить логи
make lab-verify
Полезные команды для диагностики
Общие команды
# Проверить статус системы
docker ps
docker images
docker network ls
docker volume ls
# Проверить ресурсы
free -h
df -h
top
# Проверить сеть
netstat -tulpn
ss -tulpn
Команды для Kubernetes
# Проверить кластеры
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
# Проверить инвентарь
ansible-inventory --list
ansible all -m ping
# Проверить playbook
ansible-playbook --syntax-check playbook.yml
ansible-playbook --check playbook.yml
Получение помощи
Если проблема не решается:
-
Проверьте логи:
docker logs <container-name> kubectl logs <pod-name> -
Создайте issue:
- Опишите проблему
- Приложите логи
- Укажите версии компонентов
-
Обратитесь к сообществу:
- GitHub Discussions
- Discord/Slack каналы
- Форумы Ansible
-
Проверьте документацию: