Files
DevOpsLab/docs/troubleshooting.md
Sergey Antropoff 8071fba25f feat: Создана полная документация проекта с централизованным хранением
- Создан новый 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
2025-10-22 13:29:47 +03:00

14 KiB
Raw Permalink Blame History

Troubleshooting

Автор

Сергей Антропов
Сайт: https://devops.org.ru

Описание

Этот документ содержит решения наиболее распространенных проблем при работе с универсальной лабораторией.

Содержание

Общие проблемы

Проблема: Лаборатория не запускается

Симптомы:

  • Команда 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 daemon
  • docker: 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

Получение помощи

Если проблема не решается:

  1. Проверьте логи:

    docker logs <container-name>
    kubectl logs <pod-name>
    
  2. Создайте issue:

    • Опишите проблему
    • Приложите логи
    • Укажите версии компонентов
  3. Обратитесь к сообществу:

    • GitHub Discussions
    • Discord/Slack каналы
    • Форумы Ansible
  4. Проверьте документацию: