Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно:
Проверить текущее потребление ресурсов (CPU, RAM, диски)*
Оценить нагрузку от подов (
requests
и limits
) Использовать мониторинг (Prometheus, Grafana,
kubectl top
) Команда
sh
kubectl top nodes
Вывод
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node-1 500m 25% 2Gi 50%
node-2 1000m 50% 4Gi 80%
Команда
sh
kubectl top pods --all-namespaces
Вывод
NAMESPACE POD CPU(cores) MEMORY(bytes)
default web-app-1 250m 256Mi
default web-app-2 300m 512Mi
monitoring prometheus-1 600m 1Gi
Команда
sh
kubectl describe node node-1
Вывод (пример секции Allocatable)
Allocatable:
cpu: 4
memory: 8Gi
pods: 110
Проверить
requests
и limits
у подовsh
kubectl describe pod my-pod
Вывод
Requests:
cpu: 500m
memory: 1Gi
Limits:
cpu: 1
memory: 2Gi
Prometheus-запросы для анализа Node
Средняя загрузка CPU за 5 минут
promql
avg(rate(node_cpu_seconds_total[5m])) * 100
Среднее использование памяти
promql
avg(node_memory_Active_bytes) / avg(node_memory_MemTotal_bytes) * 100
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Функция в bash возвращает:
- Целое число (exit code) — через return или $?, обычно от 0 до 255.
- Если ты хочешь вернуть текст или строку, это делается через echo, и затем значение можно перехватить в переменную.
Exit code важен для понимания успеха/ошибки выполнения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
В DevOps и Kubernetes важно безопасно хранить секретные данные (пароли, API-ключи, токены). Нельзя хранить их в коде, в
Git
, в .env
файлах без шифрования. Полностью управляемое решение для хранения и динамической ротации секретов.
Шифрование с поддержкой KMS.
API-доступ и интеграция с CI/CD.
Как получить секрет через CLI?
vault kv put secret/db password="SuperSecret123"
vault kv get secret/db
Как использовать в Jenkins?
withVault([vaultSecrets: [[path: 'secret/db', secretValues: [['envVar': 'DB_PASS', 'vaultKey': 'password']]]]]) {
sh 'echo $DB_PASS' # Переменная доступна только внутри блока
}
Интеграция с Kubernetes, управление через
kubectl
. Доступ через переменные окружения или монтирование в файл.
Можно использовать
Sealed Secrets
или SOPS
для шифрования. Как создать секрет?
kubectl create secret generic db-secret --from-literal=password='SuperSecret123'
Как использовать в
Deployment
? env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: password
Интеграция с облачными сервисами (IAM, Lambda, RDS).
Автоматическая ротация ключей.
Как получить секрет в AWS?
aws secretsmanager get-secret-value --secret-id my-secret
Как подключить к Kubernetes?
Используем External Secrets Operator:
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-secret
spec:
secretStoreRef:
name: aws-secrets
kind: SecretStore
target:
name: db-secret
data:
- secretKey: password
remoteRef:
key: my-db-password
Позволяет хранить секреты в Git без утечек.
Работает с
KMS
, PGP
, age
. Как зашифровать секрет?
sops --encrypt --age YOUR_PUBLIC_KEY secrets.yaml > secrets.enc.yaml
Как расшифровать?
sops --decrypt secrets.enc.yaml
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Нет, нельзя.
- replica count не может превышать число брокеров в кластере.
- На 4-х брокерах максимум — replica count = 4.
Если задать больше — Kafka вернёт ошибку при создании топика.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊17🔥2👍1
Это структуры данных, которые хранят информацию о файлах и каталогах. Каждый файл или каталог на диске ассоциируется с одним inode, который содержит метаданные файла, такие как его размер, разрешения, временные метки, ссылки на блоки данных и т.д. Количество inode на файловой системе обычно определяется в момент её создания и не может быть изменено без переформатирования или значительных изменений в файловой системе.
Одной из наиболее частых причин исчерпания inode является наличие очень большого количества маленьких файлов на файловой системе. Поскольку каждый файл использует как минимум один inode, системы с большим количеством мелких файлов могут исчерпать доступные inode, даже если дисковое пространство по-прежнему доступно.
При создании файловой системы, если количество выделенных inode было рассчитано неправильно (слишком мало для предполагаемого использования), это может привести к раннему их исчерпанию. Это особенно актуально для серверов или систем, где ожидается большое количество файлов.
Некоторые файловые системы, такие как Ext3 или Ext4, имеют фиксированное соотношение inode к объёму файловой системы, которое задаётся при их создании. Если создать файловую систему с недостаточным количеством inode для конкретного случая использования, то в дальнейшем это может стать проблемой.
С помощью команды
df -i
можно проверить, сколько inode используется и сколько ещё доступно в вашей файловой системе.Удаление ненужных или временных файлов может освободить inode.
Если возможно, можно увеличить количество inode путём изменения файловой системы или пересоздания файловой системы с более высоким количеством inode. Для файловых систем, таких как XFS или некоторые конфигурации Btrfs, можно динамически добавлять inode.
Переход на другую файловую систему, которая не имеет строгих ограничений на количество inode (например, Btrfs или ZFS), может быть решением для систем с большим количеством маленьких файлов.
Программы и процессы, которые создают большое количество мелких файлов, могут модифицироваться для хранения данных в формате архивов вместо отдельных файлов, что снижает потребление inode.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
- Обычно Kubernetes сам решает, как распределить контейнеры (через scheduler), с учётом:
- Нагрузки.
- Доступных ресурсов (CPU, память).
- affinity/anti-affinity правил.
Размещение на разных нодах повышает отказоустойчивость.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6👍2
Установка Microsoft ODBC Driver for SQL Server (msodbcsql) на Astra Linux требует выполнения нескольких шагов, включая настройку репозиториев, установку необходимых пакетов и принятие лицензионного соглашения.
Перед началом убедитесь, что ваша система обновлена и имеет необходимые инструменты для установки:
sudo apt update
sudo apt install -y curl apt-transport-https
Microsoft предоставляет собственные репозитории для своих пакетов. Поскольку Astra Linux основана на Debian, мы будем использовать соответствующий репозиторий:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
После добавления репозитория обновите список пакетов и установите драйвер:
sudo apt update
sudo ACCEPT_EULA=Y apt install -y msodbcsql18
Если вам нужны инструменты командной строки, такие как
sqlcmd
и bcp
, установите пакет mssql-tools
:sudo ACCEPT_EULA=Y apt install -y mssql-tools18
Чтобы эти инструменты были доступны из любого места в терминале, добавьте их в переменную PATH
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
Убедитесь, что драйвер установлен корректно, выполнив команду:
odbcinst -q -d -n "ODBC Driver 18 for SQL Server"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2
В Grafana есть панели визуализации (панели), алерты, папки для организации, пользователи и роли, плагины, а также возможность создавать переменные и шаблоны для гибкой настройки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💊2
В Kubernetes Control Plane — это набор компонентов, которые управляют всей кластерной системой. Он отвечает за контроль над состоянием кластера, управлением узлами (nodes) и развертыванием приложений.
Что делает: Это центральный компонент, предоставляющий API для управления кластером.
Почему нужен: Все взаимодействия, включая добавление/удаление узлов, создание подов и настройку сетей, проходят через API-сервер.
Как работает:
Принимает запросы от пользователей,
kubectl
, и других компонентов.Проверяет подлинность запросов и валидирует данные.
Передает команды другим компонентам через REST API.
Что делает: Это распределённое key-value хранилище, которое сохраняет все данные о состоянии кластера.
Почему нужен: Все данные о конфигурации, статусе и метаданных кластера сохраняются в etcd. Если etcd выходит из строя, кластер теряет свою управляемость.
Как работает:
Хранит информацию о подах, конфигурации сетей и статусе всех компонентов.
Поддерживает консенсус между узлами, обеспечивая надёжность данных.
Что делает: Назначает поды на доступные узлы.
Почему нужен: Без планировщика поды не смогут быть развернуты на узлах.
Как работает:
Считывает незапланированные поды из API-сервера.
Анализирует доступные узлы на основе их ресурсов (CPU, память и т.д.).
Назначает узел для каждого пода на основе алгоритмов (например, минимальная загрузка).
Что делает: Управляет контроллерами, которые следят за состоянием ресурсов в кластере.
Почему нужен: Контроллеры — это "надсмотрщики", которые автоматически исправляют отклонения от желаемого состояния.
Как работает:
Включает несколько встроенных контроллеров:
Node Controller: Следит за доступностью узлов.
Replication Controller: Поддерживает нужное количество реплик подов.
Endpoint Controller: Обновляет
Endpoints
-объекты.Service Account Controller: Создает учетные записи для сервисов.
Что делает: Управляет интеграцией с облачными провайдерами (например, AWS, GCP).
Почему нужен: Позволяет использовать облачные функции, такие как балансировка нагрузки, управление дисками и маршрутизацией.
Как работает:
Отвечает за создание LoadBalancer.
Управляет постоянными томами (Persistent Volumes), связанными с облачными хранилищами.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Зависит от задачи, но чаще всего:
- tar — архивирование каталогов и файлов.
- rsync — резервное копирование с синхронизацией.
- pg_dump / mysqldump — дампы баз данных.
- cp -a — полная копия с сохранением прав и ссылок.
- dd — побитовая копия диска (в случае аварийных восстановлений).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
Она позволяет отслеживать изменения в базах данных (INSERT, UPDATE, DELETE) в реальном времени и передавать их в Kafka, Elasticsearch, MongoDB и другие системы.
Подключается к базе данных
(PostgreSQL, MySQL, MongoDB, Oracle и др.).
Слушает лог изменений (binlog, WAL, oplog и т. д.)
Формирует события в формате JSON
Передаёт их в Kafka или другую шину данных.
Синхронизация данных между базами
Репликация данных в реальном времени
Отправка изменений в аналитические системы (Elasticsearch, ClickHouse)
Аудит и логирование изменений
Запускаем Debezium Connector для PostgreSQL*
{
"name": "inventory-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"database.hostname": "localhost",
"database.port": "5432",
"database.user": "debezium",
"database.password": "dbz",
"database.dbname": "inventory",
"database.server.name": "dbserver1"
}
}
При изменении данных в таблице, Kafka получит событие:
{
"schema": { ... },
"payload": {
"before": { "id": 1, "name": "Old Name" },
"after": { "id": 1, "name": "New Name" },
"op": "u" // Update
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Модель OSI включает 7 уровней:
1. Physical — физическая передача (кабели, сигналы);
2. Data Link — связь между соседними узлами (MAC-адреса);
3. Network — маршрутизация (IP-адреса);
4. Transport — надёжность передачи (TCP/UDP);
5. Session — управление сессиями;
6. Presentation — преобразование форматов (шифрование, кодировка);
7. Application — взаимодействие с пользователем (HTTP, FTP).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊12👍1
Файл
terraform.tfstate
хранит текущее состояние инфраструктуры. Он нужен, чтобы Terraform знал, какие ресурсы уже существуют, и мог правильно управлять изменениями. Terraform использует
tfstate
, чтобы сопоставлять код с реальными ресурсами. В коде создаем виртуальную машину
hcl
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Запускаем
terraform apply
, создается сервер в AWS В
terraform.tfstate
записывается информация об этом ресурсе При следующем
terraform apply
Terraform сверяет tfstate
с реальными ресурсами и вносит только изменения Когда ресурсы связаны (например, сервер и security group), Terraform понимает связи через
tfstate
и удаляет ресурсы в правильном порядке Когда несколько разработчиков работают с Terraform,
tfstate
должен храниться в общем месте, например - S3 + DynamoDB (AWS)
- Terraform Cloud
- GCS + Firestore (GCP)
- Azure Storage + CosmosDB (Azure)
hcl
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
encrypt = true
dynamodb_table = "terraform-lock"
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Типы прав:
- r — чтение (read)
- w — запись (write)
- x — выполнение (execute)
Категории:
- u — владелец (user)
- g — группа (group)
- o — остальные (others)
Пример: rwxr-x--- — владелец может всё, группа только читать и выполнять, остальные — ничего.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1💊1
VMware ESXi — это гипервизор, который позволяет создавать, управлять и администрировать виртуальные машины (ВМ) на физических серверах.
Устанавливал ESXi на сервер (с флешки, ISO-образа).
Настраивал сеть (vSwitch, VLAN, физические адаптеры).
Создавал локальные и удаленные хранилища (VMFS, NFS, iSCSI).
vmware -vl
Разворачивал ВМ (Windows, Linux, FreeBSD).
Настраивал ресурсы (CPU, RAM, диски, сетевые адаптеры).
Настраивал снапшоты и клонирование ВМ для резервного копирования.
Управлял виртуальными машинами через vSphere Client и ESXi Web UI.
vim-cmd vmsvc/createdummyvm my-vm /vmfs/volumes/datastore1/my-vm
Запуск ВМ через SSH
vim-cmd vmsvc/power.on 1
Создавал vSwitch для управления трафиком ВМ.
Настраивал VLAN для разделения сетей ВМ.
Использовал Distributed Switch (vDS) для централизованного управления сетью.
esxcli network nic list
Создание vSwitch:
esxcli network vswitch standard add -v vSwitch1
Настраивал локальные и удаленные хранилища (подключал iSCSI и NFS).
Создавал и увеличивал виртуальные диски (VMDK).
Настраивал vSAN для распределенного хранения данных.
esxcli storage filesystem list
Подключение iSCSI-хранилища
esxcli iscsi adapter discovery sendtarget add -a 192.168.1.10:3260
Использовал vMotion для живой миграции ВМ между хостами.
Настраивал автоматическое распределение нагрузки (DRS).
Настраивал High Availability (HA) для автоматического перезапуска ВМ в случае сбоя.
vim-cmd vmsvc/migrate 1 --host target-hostname
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊4
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊10👍1🔥1
Если вы можете подключиться к серверу по SSH, но другие пользователи, использующие ту же учетную запись, не могут, возможны следующие причины:
В файле конфигурации SSH (
/etc/ssh/sshd_config
) могут быть ограничения на число одновременных подключений. Открываем конфигурацию SSH
sudo nano /etc/ssh/sshd_config
Проверяем параметры
MaxSessions 1
MaxStartups 10:30:60
Решение
Увеличьте
MaxSessions
, например: MaxSessions 10
Перезапустите SSH:
sudo systemctl restart sshd
Если у вас ключевая авторизация, возможно, права на файлы
.ssh/authorized_keys
нарушены. На сервере выполните:
ls -l ~/.ssh/authorized_keys
Если права не
600
, исправьте chmod 600 ~/.ssh/authorized_keys
Конфигурация SSH может блокировать подключения для определенных IP или пользователей.
Откройте
/etc/ssh/sshd_config
и проверьте параметры DenyUsers user1
AllowUsers admin
Проверьте
/etc/hosts.deny
и /etc/hosts.allow
cat /etc/hosts.deny
cat /etc/hosts.allow
Если исчерпан лимит доступных PTY, новые сессии не смогут открываться.
Запустите
ls /dev/pts
Если там слишком много открытых сессий, попробуйте очистить:
pkill -u user
или увеличьте лимит в
/etc/security/limits.conf
* hard nproc 1024
* soft nproc 1024
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Fluentd легче по ресурсам, проще масштабируется и чаще используется в Kubernetes. Logstash мощнее по возможностям трансформации данных, но потребляет больше ресурсов. Fluentd написан на C++ и Ruby, Logstash — на Java. Оба поддерживают плагины, фильтрацию, маршрутизацию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3🔥1
Forwarded from easyoffer
🎉 easyoffer 2.0 — релиз уже в этом месяце!
Вас ждут новые фичи, о которых мы ранее даже не упоминали. Они сделают путь к офферам ещё быстрее и эффективнее. Расскажу о них чуть позже 👀
В честь запуска мы готовим ограниченную акцию:
Первые 500 покупателей получат:
🚀 PRO тариф на 1 год с 50% скидкой
Что нужно сделать:
🔔 Подпишитесь на этот Telegram-канал, чтобы первыми узнать о старте релиза. Сообщение появится в нем раньше, чем где-либо еще — вы успеете попасть в число первых 500 и получить максимальную выгоду. 🎁 А еще только для подписчиков канала ценный бонус в подарок к PRO тарифу.
📅 Официальный запуск — уже совсем скоро.
Следите за новостями и не пропустите старт!
Вас ждут новые фичи, о которых мы ранее даже не упоминали. Они сделают путь к офферам ещё быстрее и эффективнее. Расскажу о них чуть позже 👀
В честь запуска мы готовим ограниченную акцию:
Первые 500 покупателей получат:
🚀 PRO тариф на 1 год с 50% скидкой
Что нужно сделать:
🔔 Подпишитесь на этот Telegram-канал, чтобы первыми узнать о старте релиза. Сообщение появится в нем раньше, чем где-либо еще — вы успеете попасть в число первых 500 и получить максимальную выгоду. 🎁 А еще только для подписчиков канала ценный бонус в подарок к PRO тарифу.
📅 Официальный запуск — уже совсем скоро.
Следите за новостями и не пропустите старт!
Это облачная модель, предоставляющая готовую среду для разработки, тестирования и развертывания приложений без необходимости управлять инфраструктурой (серверы, сети, ОС).
Heroku → Легкий деплой веб-приложений.
Google App Engine → Запуск приложений в облаке Google.
AWS Elastic Beanstalk → Автоматическое управление инфраструктурой.
Microsoft Azure App Services → Запуск приложений в Azure без управления серверами.
Если хотите быстро развернуть приложение без настройки серверов.
Когда важна автоматическая масштабируемость.*
Если не хотите заниматься управлением ОС и базами данных.
curl https://cli-assets.heroku.com/install.sh | sh
heroku login
git push heroku main
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1