Kubernetes. Приложение перестало работать — как понять, что случилось?
Причин, по которым приложение не работает в кластере Kubernetes, много.
Вот самые распространенные:
🔵 под отсутствует;
🔵 под не запускается (статус Pending);
🔵 под запускается, но падает с ошибкой (статус CrashLoopBackOff);
🔵 под работает (статус Runnung), но недоступен по сети.
Ниже кратко рассмотрим алгоритмы, позволяющие понять, что же все-таки случилось.
🔵 Для начала нужно убедиться, что манифест выполнился и под действительно зарегистрирован в кластере. Если подов и деплоймента не находится, проверьте манифесты.
🔵 Если поды находятся в статусе Pending, значит Scheduler не может найти подходящую ноду для запуска пода. На это тоже может быть много причин: недостаточно ресурсов в кластере, несовпадение taints/tolerances, невозможность скачать образ и многое другое. Найти причину помогут события, связанные с подом, однако некоторые проблемы (например, отказ Scheduler) не попадут в этот список. Также проверьте статус нод в кластере и селекторы, указанные в манифесте.
🔵 Если под был назначен ноде, но при запуске произошла ошибка, под будет иметь статус CrashLoopBackOff и кластер будет предпринимать попытки запустить его повторно. Обычно это происходит в случае ошибки в самом приложении внутри контейнера, а найти причину обычно помогают логи (если приложение их пишет, конечно).
🔵 Следующая ситуация — поды работают (статус Running), однако не доступны по сети из других подов. Для начала нужно проверить, создан ли Service с соответствующим селектором. Также необходимо проверить, что они находятся в одном namespace.
Причин, по которым приложение не работает в кластере Kubernetes, много.
Вот самые распространенные:
Ниже кратко рассмотрим алгоритмы, позволяющие понять, что же все-таки случилось.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤓1
Состояние репозитория ушло на много коммитов вперед. Как откатить весь репозиторий к определенному коммиту?
Anonymous Quiz
56%
git reset --hard <tag/branch/commit hash>
16%
git reset --soft <tag/branch/commit hash>
15%
git hardreset --hard --a <tag/branch/commit hash>
13%
Нельзя это сделать
👍5
Что делает DevOps-инженер?
на простом примере
Есть два друга, которые хотят пожарить мясо на природе. Итоговый продукт их деятельности — шашлык. Друзья распределяют между собой задачи: один нанизывает мясо на шампур (сравним его с разработчиком), другой собирает мангал и разводит огонь (сравним его с инженером инфраструктуры).
Угли готовы, мясо на шампурах, положили шампуры на мангал — ждут. Но пошел дождь, надо перенести мангал под тент, чтобы угли не потухли. Одному это сделать трудно, дождь усиливается.
Без DevOps-культуры разработчик (отвечающий за нанизывание мяса на шампуры) может сказать: «Мясо на шампурах — моя работа сделана. Дальше разбираться я не буду», — и в итоге шашлыка никто не поест.
DevOps-инженер — это третий друг, который заранее посмотрел прогноз погоды, понял, что будет дождь, взял с собой тент, развернул его и, когда погода испортилась, помог перенести мангал с мясом под тент. В итоге все насладились вкусным мясом (выпустили качественный продукт).
на простом примере
Есть два друга, которые хотят пожарить мясо на природе. Итоговый продукт их деятельности — шашлык. Друзья распределяют между собой задачи: один нанизывает мясо на шампур (сравним его с разработчиком), другой собирает мангал и разводит огонь (сравним его с инженером инфраструктуры).
Угли готовы, мясо на шампурах, положили шампуры на мангал — ждут. Но пошел дождь, надо перенести мангал под тент, чтобы угли не потухли. Одному это сделать трудно, дождь усиливается.
Без DevOps-культуры разработчик (отвечающий за нанизывание мяса на шампуры) может сказать: «Мясо на шампурах — моя работа сделана. Дальше разбираться я не буду», — и в итоге шашлыка никто не поест.
DevOps-инженер — это третий друг, который заранее посмотрел прогноз погоды, понял, что будет дождь, взял с собой тент, развернул его и, когда погода испортилась, помог перенести мангал с мясом под тент. В итоге все насладились вкусным мясом (выпустили качественный продукт).
👍11😁3🥱2❤1
Какую из следующих команд вы бы использовали, чтобы остановить или отключить службу httpd при загрузке системы?
Anonymous Quiz
54%
# systemctl disable httpd.service
10%
# system disable httpd.service
9%
# system disable httpd
27%
# systemctl disable httpd.service
😁6🤡2👍1
Operations Anti-patterns,
DevOps Solutions
Автор: Jeffery D. Smith
Год издания: 2020
#devops #en
Скачать книгу
DevOps Solutions
Автор: Jeffery D. Smith
Год издания: 2020
#devops #en
Скачать книгу
👍5
Основные команды для работы с kubernetes
Посмотреть настройки и статус конкретного pod`а.
Посмотреть настройки и статус конкретного pod`а.
$ kubectl get pods имя_пода -o yaml
$ kubectl describe pod имя_пода
$ kubectl logs имя_пода👍7
Что такое под (pod) в Kubernetes?
Anonymous Quiz
3%
Это компьютер, на котором запущен Kubernetes
8%
Это связующее звено между контейнерами, позволяющее им обмениваться информацией
4%
Это сервер, поддерживающий Kubernetes, в котором развернут монолит
84%
Это самая маленькая сущность, в которой запускаются контейнеры
❤8
___________ запускается на каждом ноде и обеспечивает работу контейнеров в поде.
Anonymous Quiz
54%
Kubelet
17%
Scheduler
10%
Etcd
19%
Pod
🔥8👍5
Основные команды для работы с kubernetes
Запуск нового pod`а.
Удаление pod`а.
Запуск нового pod`а.
$ kubectl run имя_пода --image=образ
Удаление pod`а.
$ kubectl delete pod имя_пода👍9
Как в Kubernetes устроена работа с хранилищами?
У Kubernetes есть volumes, например, нативный emtyDir. Часть из них stateless, то есть они живут, пока жив под. Судьба у данных, которые туда попадают, аналогичная.
Для statefull-приложений используются постоянные хранилища, Persistent Volumes (PV). Persistent Volumes (PV) — это единицы хранения, которые были выделены кластеру Kubernetes его администратором. Это могут быть локальные диски, СХД, внешние дисковые полки. Они никак не зависят от жизненного цикла подов.
Persistent Volume Claim (PVC) — это запрос на выделение PV определенных характеристик: типа хранилища, объема, типа доступа (чтение и/или запись). Для описания подробных характеристик доступных PV используются Storage Classes.
В динамике это все выглядит следующим образом: под отправляет PVC, а PVC уже обращается к PV и передает ее поду.
У Kubernetes есть volumes, например, нативный emtyDir. Часть из них stateless, то есть они живут, пока жив под. Судьба у данных, которые туда попадают, аналогичная.
Для statefull-приложений используются постоянные хранилища, Persistent Volumes (PV). Persistent Volumes (PV) — это единицы хранения, которые были выделены кластеру Kubernetes его администратором. Это могут быть локальные диски, СХД, внешние дисковые полки. Они никак не зависят от жизненного цикла подов.
Persistent Volume Claim (PVC) — это запрос на выделение PV определенных характеристик: типа хранилища, объема, типа доступа (чтение и/или запись). Для описания подробных характеристик доступных PV используются Storage Classes.
В динамике это все выглядит следующим образом: под отправляет PVC, а PVC уже обращается к PV и передает ее поду.
👍5