Kubernetes: эффективные команды
Расшировать параметр секрета.
где db - имя секрета, DB_PASSWORD - один из параметров секрета.
Удалить все поды используя helm.
Удалить все поды в состоянии Evicted.
Скрипт для просмотра занятого пространства образами docker.
Скрипт для для установления соответствия между задеплоеными подами, нодами, где они находятся и зоной в которой располагаются.
Расшировать параметр секрета.
kubectl get secret/db -o yaml | grep DB_PASSWORD | sed 's/.*DB_PASSWORD:\s//' | base64 --decode
где db - имя секрета, DB_PASSWORD - один из параметров секрета.
Удалить все поды используя helm.
helm ls --all --short | xargs -L1 helm delete
Удалить все поды в состоянии Evicted.
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod
Скрипт для просмотра занятого пространства образами docker.
#!/usr/bin/env bash
for container in `kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'`
do
echo -e "$container\t\t $(docker image ls
параметр секрета.kubectl get secret/db -o yaml | grep DB_PASSWORD | se--format='{{println .Size}}')"
done
Скрипт для для установления соответствия между задеплоеными подами, нодами, где они находятся и зоной в которой располагаются.
#!/usr/bin/env bash
set -euo pipefail
PODZONES=()
for POD in $(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers)
do
NODE=$(kubectl get pod ${POD} -o=jsonpath='{.spec.nodeName}')
ZONE=$(kubectl get nodes -o json | jq -r --arg NODE "${NODE}" '.items[].metadata | {name, labels} | select(.name==$NODE) | .labels."topology.kubernetes.io/zone"')
PODZONES+=(${ZONE})
echo -e "${POD}\t${NODE}\t${ZONE}"
done
CPODS=$(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CNODES=$(kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CZONES=$(kubectl get nodes -o json | jq -r '.items[].metadata.labels."topology.kubernetes.io/zone"' | sort | uniq -c)
echo "----------ИТОГО:----------"
echo -e "Всего подов:\t${CPODS}"
echo -e "Всего нод:\t${CNODES}"
echo -e "Количество зон нод:\n${CZONES}"
echo "Количество подов в зонах:"
printf "%s\n" "${PODZONES[@]}" | sort | uniq -c
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Понимание DHCP: Упрощение управления сетью
DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматизирует процесс назначения IP-адресов и других параметров конфигурации устройств в сети. Вместо того чтобы вручную задавать каждому устройству IP-адрес, DHCP позволяет делать это автоматически, что значительно упрощает управление сетью.
Как работает DHCP?
1. Запрос клиента (DHCP Discover): Когда устройство подключается к сети, оно отправляет широковещательное сообщение с запросом IP-адреса.
2. Ответ сервера (DHCP Offer): DHCP-сервер получает запрос и предлагает доступный IP-адрес из своего пула.
3. Запрос IP-адреса (DHCP Request): Устройство принимает предложенный адрес и отправляет запрос на его закрепление.
4. Подтверждение (DHCP Acknowledgment): Сервер подтверждает назначение адреса и отправляет дополнительные параметры, такие как маска подсети, шлюз и DNS-серверы.
Преимущества использования DHCP
- Упрощенное управление: Автоматическое распределение IP-адресов исключает вероятность ошибок, связанных с ручной конфигурацией.
- Гибкость: Легко подключать и отключать устройства без необходимости их настройки.
- Эффективное использование адресов: Сервер перераспределяет адреса, которые больше не используются.
- Масштабируемость: DHCP подходит как для небольших домашних сетей, так и для крупных корпоративных сетей.
Дополнительные функции DHCP
- Резервирование адресов: Возможность назначать фиксированные IP-адреса определенным устройствам (например, серверам или принтерам).
- Период аренды: Сервер устанавливает временные рамки использования IP-адреса, после чего клиент должен обновить его.
Заключение
DHCP значительно упрощает управление сетями, минимизируя ручную работу администратора. Этот протокол стал стандартом в большинстве современных сетей, благодаря своей надежности, гибкости и удобству.
DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматизирует процесс назначения IP-адресов и других параметров конфигурации устройств в сети. Вместо того чтобы вручную задавать каждому устройству IP-адрес, DHCP позволяет делать это автоматически, что значительно упрощает управление сетью.
Как работает DHCP?
1. Запрос клиента (DHCP Discover): Когда устройство подключается к сети, оно отправляет широковещательное сообщение с запросом IP-адреса.
2. Ответ сервера (DHCP Offer): DHCP-сервер получает запрос и предлагает доступный IP-адрес из своего пула.
3. Запрос IP-адреса (DHCP Request): Устройство принимает предложенный адрес и отправляет запрос на его закрепление.
4. Подтверждение (DHCP Acknowledgment): Сервер подтверждает назначение адреса и отправляет дополнительные параметры, такие как маска подсети, шлюз и DNS-серверы.
Преимущества использования DHCP
- Упрощенное управление: Автоматическое распределение IP-адресов исключает вероятность ошибок, связанных с ручной конфигурацией.
- Гибкость: Легко подключать и отключать устройства без необходимости их настройки.
- Эффективное использование адресов: Сервер перераспределяет адреса, которые больше не используются.
- Масштабируемость: DHCP подходит как для небольших домашних сетей, так и для крупных корпоративных сетей.
Дополнительные функции DHCP
- Резервирование адресов: Возможность назначать фиксированные IP-адреса определенным устройствам (например, серверам или принтерам).
- Период аренды: Сервер устанавливает временные рамки использования IP-адреса, после чего клиент должен обновить его.
Заключение
DHCP значительно упрощает управление сетями, минимизируя ручную работу администратора. Этот протокол стал стандартом в большинстве современных сетей, благодаря своей надежности, гибкости и удобству.
👍4
Утилиты на PowerShell для системных администраторов
Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.
https://habr.com/ru/articles/799463/
https://github.com/Sync1er/ChernigovEugeniyUtilities
Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.
https://habr.com/ru/articles/799463/
https://github.com/Sync1er/ChernigovEugeniyUtilities
Подборка из 4 альтернативых SSH клиентов
1. Mosh
Mosh - это замена интерактивных терминалов SSH. Он более надежен и отзывчив, особенно при работе через Wi-Fi, сотовую связь и на дальних расстояниях.
Mosh - это свободное программное обеспечение, доступное для GNU/Linux, BSD, macOS, Solaris, Android, Chrome и iOS.
2. Teleport
Teleport с открытым исходным кодом был разработан для обеспечения доступа к необходимой инфраструктуре без замедления работы. С помощью одного инструмента инженеры получают унифицированный доступ к серверам Linux и Windows, кластерам Kubernetes, базам данных и приложениям DevOps, таким как AWS Management Console, CI/CD, контроль версий и панели мониторинга во всех средах.
3. Eternal Terminal
Удаленный терминал для занятых и нетерпеливых
Eternal Terminal (ET) - это удаленная оболочка, которая автоматически переподключается, не прерывая сеанса.
4. tmux
tmux - это терминальный мультиплексор: он позволяет создавать несколько терминалов, получать к ним доступ и управлять ими с одного экрана. tmux может работать в фоновом режиме.
Работает на OpenBSD, FreeBSD, NetBSD, Linux, macOS и Solaris.
1. Mosh
Mosh - это замена интерактивных терминалов SSH. Он более надежен и отзывчив, особенно при работе через Wi-Fi, сотовую связь и на дальних расстояниях.
Mosh - это свободное программное обеспечение, доступное для GNU/Linux, BSD, macOS, Solaris, Android, Chrome и iOS.
2. Teleport
Teleport с открытым исходным кодом был разработан для обеспечения доступа к необходимой инфраструктуре без замедления работы. С помощью одного инструмента инженеры получают унифицированный доступ к серверам Linux и Windows, кластерам Kubernetes, базам данных и приложениям DevOps, таким как AWS Management Console, CI/CD, контроль версий и панели мониторинга во всех средах.
3. Eternal Terminal
Удаленный терминал для занятых и нетерпеливых
Eternal Terminal (ET) - это удаленная оболочка, которая автоматически переподключается, не прерывая сеанса.
4. tmux
tmux - это терминальный мультиплексор: он позволяет создавать несколько терминалов, получать к ним доступ и управлять ими с одного экрана. tmux может работать в фоновом режиме.
Работает на OpenBSD, FreeBSD, NetBSD, Linux, macOS и Solaris.
👍3
Шпаргалка по PowerShell / Краткий справочник
https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
Шпаргалка по работе с Tmux (терминальный мультиплексор)
1. Установка
CentOS (нужен подключенный репо EPEL)
Fedora
Ubuntu/Debian
2. Конфигурационные файлы
(пользователя, системный):
До версии 2.1
3. Работа с Tmux
Старт
Префикс (с него начинаются команды)
Новое окно (нажать CTRL+b, затем нажать с)
Список окон
Переключение
Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.
Деление окна горизонтально
либо команда
Деление окна вертикально
либо команда
Переход между панелей
Изменение размеров панелей
Закрытие окон
либо
Отключение от сессии
либо
Список сессий
Подключиться к работающей сессии
Выбрать сессию
Завершение сессии
Завершить все сессии
Список поддерживаемых комманд
Дополнительная информация
1. Установка
CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux
2. Конфигурационные файлы
(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf
До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on
3. Работа с Tmux
Старт
# tmux
//без параметров будет создана сессия 0# tmux new -s session1 //новая сессия session1
. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.Префикс (с него начинаются команды)
<C-b> (CTRL + b)
Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>
Список окон
<C-b w>
// переключиться курсором вверх-внизПереключение
<C-b n>
// следующее окно<C-b p>
// предыдущее окно<C-b 0>
// переключиться на номер окнаОкна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.
Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h
Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v
Переход между панелей
<C-b стрелки курсора>
// либо режим мышиИзменение размеров панелей
<C-b c-стрелки>
// либо режим мышиЗакрытие окон
<C-b x>
// нужно подтвердить yлибо
# exit
Отключение от сессии
<C-b d>
либо
# tmux detach
Список сессий
# tmux ls
Подключиться к работающей сессии
# tmux attach
//подключение к сессии, либо к единственной, либо последней созданной# tmux attach -t session1
// подключение к сессии session1Выбрать сессию
<C-b s>
Завершение сессии
# tmux kill-session -t session1
Завершить все сессии
# tmux kill-server
Список поддерживаемых комманд
# tmux list-commands
Дополнительная информация
# man tmux
Чем отличается команда rm от unlink?
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
# unlink /tmp/hardlink
# unlink /tmp/file
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
rm -f test.txt
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
unlink test.txt
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr +i test.txt
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
👍3
Основные команды Linux: Управление пользователями и группами
last
– Показывает, какие пользователи последними входили в систему (и покидали ее), выполняя для этого поиск в файле /var/log/wtmp в обратном порядке; также показывает информацию о загрузках системы, ее остановках и изменениях ее уровней запускаlastb
– Показывает неудачные попытки входа в систему, которые записаны в файле /var/log/btmpw
– показать пользователей онлайнwhoami
– имя, под которым вы залогинены.finger user@host
– показать информацию о user (без указания пользователя – выведет список пользователей, залогиненых в системе) на хосте host, утилита не чувствительна к регистру символовwrite user [terminal]
– начать сеанс общения с пользователем user на терминале terminaltalk user@host
– чат с пользователем user на компьютере hostwall message
– разместить сообщение message на всех терминалах.mesg y/n
– включение – y и выключение – n возможности принимать сообщения на консолиsu user
– создание оболочки (подоболочки текущей оболочки) с правами пользователя user (без указания пользователя – вызывается оболочка root)-, -l, –login
– все 3 параметра имеют одно значение – загрузить окружение вызываемого пользователя (выполняются все стартовые сценарии и подгружаются переменные окружения вызываемого пользователя)-с command
– выполнить команду command с правами суперпользователя и “понизить” права в исходные после завершения команды.useradd user
– добавление нового регистрационного имени пользователя user в системе-g group
– задает основную группу (primary group) для нового пользователя. По умолчанию используется стандартная группа, указанная в файле /etc/default/useradd.-d dir
– доманий каталог (home directory) нового пользователя. По умолчанию используется $ HOMEDIR/user-s shell
– полный путь к программе (шеллу), используемой в качестве начального командного интерпретатора для пользователя-m
– Создает начальный каталог нового пользователя, если он еще не существует. Копирует скелетные файлы и другие каталоги из /etc/skel в домашний каталог.👍2
kcp - это прототип сервера API Kubernetes, который не является кластером Kubernetes. Если вас интересуют API-интерфейсы, подобные Kubernetes, но для других инструментов, возможно, будет интересно посмотреть.
https://github.com/kcp-dev/kcp
https://github.com/kcp-dev/kcp
Rufus: надежная утилита форматирования USB
Форматирование USB, флэш-карт и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
Создание загрузочных USB-накопителей DOS, используя FreeDOS или MS-DOS (Windows 8.1 или более ранние версии)
Создание загрузочных дисков BIOS или UEFI, включая загрузочные диски UEFI NTFS
Создание загрузочных дисков из загрузочных ISO (Windows, Linux и т.д.)
Создание загрузочных дисков из загрузочных образов дисков, включая сжатые.
Создание установочных дисков Windows 11 для ПК, не оснащенных TPM или Secure Boot
Создание дисков Windows To Go
Создание постоянных разделов Linux
Создание образов дисков VHD/DD
Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа
Улучшение процесса установки Windows путем автоматической настройки параметров OOBE (локальная учетная запись, параметры конфиденциальности и т.д.)
Выполняйте проверку плохих блоков, включая обнаружение "поддельных" флеш-накопителей
Загрузка официальных розничных ISO-образов Microsoft Windows 7, Windows 8, Windows 10 или Windows 11
Загружать ISO-файлы UEFI Shell
Современный и привычный пользовательский интерфейс, встроенная поддержка 38 языков
Малая занимаемая площадь. Не требует установки.
Портативный. Совместимость с Secure Boot.
100% свободное программное обеспечение (GPL v3)
https://github.com/pbatard/rufus
Форматирование USB, флэш-карт и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
Создание загрузочных USB-накопителей DOS, используя FreeDOS или MS-DOS (Windows 8.1 или более ранние версии)
Создание загрузочных дисков BIOS или UEFI, включая загрузочные диски UEFI NTFS
Создание загрузочных дисков из загрузочных ISO (Windows, Linux и т.д.)
Создание загрузочных дисков из загрузочных образов дисков, включая сжатые.
Создание установочных дисков Windows 11 для ПК, не оснащенных TPM или Secure Boot
Создание дисков Windows To Go
Создание постоянных разделов Linux
Создание образов дисков VHD/DD
Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа
Улучшение процесса установки Windows путем автоматической настройки параметров OOBE (локальная учетная запись, параметры конфиденциальности и т.д.)
Выполняйте проверку плохих блоков, включая обнаружение "поддельных" флеш-накопителей
Загрузка официальных розничных ISO-образов Microsoft Windows 7, Windows 8, Windows 10 или Windows 11
Загружать ISO-файлы UEFI Shell
Современный и привычный пользовательский интерфейс, встроенная поддержка 38 языков
Малая занимаемая площадь. Не требует установки.
Портативный. Совместимость с Secure Boot.
100% свободное программное обеспечение (GPL v3)
https://github.com/pbatard/rufus
👍1🔥1