Ответы на квизы и отметки пройденных уроков будут удалены на этом устройстве.
Это действие нельзя отменить.
Шпаргалка: Linux / Сети
Эти утилиты не специфичны для Kubernetes/Deckhouse, но постоянно используются в связке с kubectl/d8 k/werf для установки инструментов, отладки сети внутри кластера и подготовки CI. Разворачивается по мере необходимости в M0–M1 и используется во всех последующих модулях.
bash -c "$(curl -Ls <url>)"# запуск удалённого скрипта установки kind + Deckhouse CEcurl -Ls <url> # скачать скрипт (обычно внутри bash -c)curl -k https://127.0.0.1:<port>/version # прямой запрос к API-серверу Kuberneteskind delete cluster # полное удаление локального kind-кластераdocker ps # узлы kind видны как контейнеры (kind-control-plane)docker exec -it kind-control-plane crictl ps # список контейнеров внутри узла на уровне containerddocker exec -it kind-control-plane sh -c "<cmd>"# выполнить команду внутри узла kindcrictl ps # список контейнеров через CRI (внутри узла)docker run --rm hello-world # проверка работоспособности container runtime
DNS и сетевая отладка внутри кластера
1
2
3
4
5
6
7
cat /etc/resolv.conf # DNS-конфигурация Pod (внутри debug-контейнера)nslookup <svc> # проверка DNS-резолвинга Service изнутри кластераnslookup <svc>.<ns>.svc.cluster.local # полный FQDN Servicewget -qO- http://<fqdn>/ # HTTP-запрос к Service по FQDN из debug-Podwget -qO- localhost:9090/api/v1/targets # запрос к Prometheus targets API изнутри подаcurl -H "Host: <host>" http://localhost/ # проверка Ingress/Gateway через Host-заголовокecho"<ip> <host>"| sudo tee -a /etc/hosts # добавить локальную DNS-запись для тестового домена
git init
git add .
git commit -m "<message>"git remote add origin <repo-url>
git push --set-upstream origin main
git push origin main
git tag v1.2.0
git push origin v1.2.0
git tag v1.2.0 && git push origin v1.2.0 # объединённая команда: создать и опубликовать релизный тегgit clone --depth 1 <url> [<dir>]# shallow-клон (без истории) для практики/анализа
Переменные окружения, shell-цикл, редиректы
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
exportVAR="value""${CI_COMMIT_TAG#v}"# bash parameter expansion: убрать префикс "v" из тега2>/dev/null ||echo"<message>"# подавить stderr и вывести fallback-сообщение при ошибке;echo# явный перевод строки после jsonpath-вывода без trailing newlinefor ns in <ns1> <ns2>;do <command>;done# bash-цикл по списку значенийfor m in <module1> <module2>;do d8 k get module "$m" -o jsonpath='...'; echo;donecat > <file> <<'EOF' ... EOF# запись heredoc в файлsh -c "<cmd>"# shell-обёртка (например, в initContainer/Job)sleep <N> # задержка (preStop/init/симуляция Job)date # текущее времяdiff <file1> <file2> # сравнение содержимого файловtouch <file> # имитация изменения файла (тест инвалидации кэша)mv <src> <dest> # переименование/перемещение файлаfind <path> -maxdepth <N> # поиск с ограничением глубиныfind . -type f | sort # список файлов дерева, отсортированныйmkdir -p <dir> # создать директорию (с родителями)cd <dir> # перейти в директориюls [-la]# список содержимого директории
Процессы, права, время сборки
1
2
3
4
5
ps aux # список процессов (внутри контейнера через kubectl exec)chmod +x <file> # выдать exec-битwhoami
sudo -l
time <command> # замерить время выполнения (например, сборки werf)
Базы данных (проверка персистентности/backup)
1
2
3
4
5
psql -U <user> -c "<sql>"# выполнить SQL в Postgres внутри Podpg_dump # логический дамп PostgreSQLmysqldump # логический дамп MySQLetcdctl snapshot save <snapshot-file> # снапшот etcd (используется внутри d8 backup etcd)tar -czvf <archive>.tar.gz <snapshot-file> # упаковать снапшот в архив
Дополнительно: сетевые утилиты для troubleshooting в проде
Не встречаются напрямую в уроках курса, но регулярно нужны при реальной эксплуатации приложений в Kubernetes:
1
2
3
4
5
6
7
8
ss -tulnp # какие порты слушает процесс (замена устаревшего netstat)dig <host> # альтернатива nslookup с более подробным выводом DNSdig +short <host>
curl -v <url> # подробный вывод HTTP-запроса (заголовки, TLS handshake)curl -o /dev/null -s -w "%{http_code}\n" <url> # только код ответа HTTPtraceroute <host> # маршрут пакетов до хостаtcpdump -i any port <port> # перехват трафика на порту (нужны привилегии)openssl s_client -connect <host>:<port> # проверка TLS-сертификата удалённого сервиса