- /var — стандартная директория Linux для хранения изменяемых данных: логи, спулы, кэш, временные данные;
- /default — не является стандартной и может быть частью прикладных настроек, например, конфигураций по умолчанию в /etc/default/.
Важно не путать её с системными каталогами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊4👍1
Чтобы мониторить Docker-контейнеры, нужно отслеживать ключевые метрики, которые помогут определить нагрузку, утечки памяти, падения контейнеров и проблемы с сетью.
CPU (Нагрузка на процессор)
Memory (Использование памяти)
Network (Сетевой трафик)
Disk I/O (Диск и файловая система)
Container Lifecycle (Состояние контейнеров)
% использования CPU контейнером % CPU в системе и пользователе Throttling (ограничение CPU) docker stats --format "table {{.Name}}\t{{.CPUPerc}}"Метрика в Prometheus (cadvisor)
rate(container_cpu_usage_seconds_total{name="my-container"}[5m]) * 100RSS (реальная память, используемая процессами) Cache (используемая кэшированная память) OOM (Out of Memory kills) docker stats --format "table {{.Name}}\t{{.MemUsage}}"Метрика в Prometheus
container_memory_usage_bytes{name="my-container"}Rx/Tx Bytes (входящий и исходящий трафик) Количество соединений docker stats --format "table {{.Name}}\t{{.NetIO}}"Метрика в Prometheus
rate(container_network_transmit_bytes_total{name="my-container"}[5m])Количество операций чтения/записи Объем данных, записанных/прочитанных контейнером docker stats --format "table {{.Name}}\t{{.BlockIO}}"Метрика в Prometheus
rate(container_fs_writes_bytes_total{name="my-container"}[5m])Перезапуски контейнера (Restart Count) Состояние контейнера (Running, Exited, Dead) docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Restarts}}"Метрика в Prometheus
container_start_time_seconds{name="my-container"}Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
- Обновить значения в values.yaml.
- Выполнить:
- helm upgrade <release-name> <chart-path> -f values.yaml
Или в CI/CD — helm upgrade с актуальными переменными среды.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
ConfigMap в Kubernetes – это механизм хранения конфигурационных данных. Он позволяет разделять код приложения и настройки, храня конфигурацию в виде ключ-значение. ConfigMap удобен для передачи переменных окружения, файлов конфигурации, командных аргументов без изменения образа контейнера.
передача настроек через ENV.
монтирование в контейнер как файл.
передача аргументов в
command. apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_ENV: "production"
LOG_LEVEL: "debug"
CONFIG_FILE: |
[settings]
mode = "production"
debug = true
kubectl create configmap my-config --from-literal=APP_ENV=production --from-literal=LOG_LEVEL=debug
kubectl create configmap my-config --from-file=config.ini
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: my-app
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: APP_ENV
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: my-app
volumeMounts:
- name: config-volume
mountPath: "/etc/config"
volumes:
- name: config-volume
configMap:
name: my-config
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
- taints — метки, не позволяющие запускать pod'ы на ноде без соответствующего toleration.
- nodeSelector, nodeAffinity — указывают, на каких нодах pod может или не может работать.
- Ресурсные ограничения — если pod требует больше ресурсов, чем нода может предоставить.
- Зоны доступности (topologySpreadConstraints), политики безопасности (PodSecurityPolicy) тоже могут ограничивать размещение.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.
Команда
ps отображает список текущих процессов. Часто используемые опции:ps aux: Показывает все процессы в системе.ps -ef: Альтернативный формат вывода всех процессов.ps aux | grep <имя_процесса>
Команда
top показывает список процессов в реальном времени, обновляя его каждые несколько секунд. Это удобно для мониторинга системы и поиска процессов с высокой загрузкой CPU или памяти.top
Команда
htop — это улучшенная версия top, предоставляющая более удобный интерфейс для мониторинга процессов. Она должна быть установлена отдельно.sudo apt-get install htop
htop
Команда
pgrep используется для поиска процессов по имени. Она возвращает идентификаторы (PID) процессов, соответствующих критериям поиска.Пример использования:
pgrep <имя_процесса>
Команда
pidof возвращает идентификаторы (PID) процессов с указанным именем.pidof <имя_процесса>
Для более точного поиска можно использовать команду
ps с фильтрацией через grep.ps aux | grep <имя_процесса> | grep -v grep
Команда
lsof отображает список открытых файлов и может использоваться для поиска процессов, открывающих определенные файлы.sudo lsof -i :<номер_порта>
Допустим, вам нужно найти процесс с именем
nginx. Вот несколько способов сделать этоИспользование
psps aux | grep nginx | grep -v grep
Использование
pgreppgrep nginx
Использование
pidofpidof nginx
Запустите
top или htop и найдите процесс nginx в интерактивном режиме.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Groovy — это динамический язык программирования для JVM, с лаконичным синтаксисом, совместимым с Java. Он часто используется в:
- Jenkins pipelines (Jenkinsfile пишется на Groovy).
- Сценариях автоматизации.
- В проектах, где нужно расширить Java-библиотеки.
Groovy позволяет писать более выразительный и компактный код по сравнению с Java, сохраняя совместимость с Java API.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
Да, в Kubernetes Pod можно запускать несколько контейнеров, и это обычная практика. Pod — это минимальная единица развертывания в Kubernetes которая может содержать один или несколько контейнеров.
вспомогательные контейнеры, дополняющие основное приложение (логирование, прокси, безопасность).
выполняют задачи перед запуском основного контейнера (например, подготовка базы данных).
контейнеры могут использовать общие тома (
volumes) для хранения данных. контейнеры в одном Pod разделяют IP-адрес и порты.
Допустим, у нас есть Nginx и отдельный контейнер, который собирает его логи.
yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
- name: log-collector
image: busybox
command: ["sh", "-c", "tail -f /var/log/nginx/access.log"]
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
volumes:
- name: log-volume
emptyDir: {}
Все контейнеры внутри Pod имеют один IP-адрес и могут взаимодействовать через
localhost. Например, если в одном контейнере работает
Node.js на порту 3000, другой контейнер внутри Pod может обращаться к нему через localhost:3000. Контейнеры могут делиться файлами через
volumes, как в примере выше. Если нужно выполнить команду перед запуском основного контейнера, используют
initContainers. yaml
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
initContainers:
- name: wait-for-db
image: busybox
command: ["sh", "-c", "until nc -z db-service 5432; do sleep 1; done"]
containers:
- name: app
image: my-app
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
<keep-alive> используется для кеширования компонентов, чтобы они не уничтожались при удалении из DOM, а сохраняли своё состояние. Полезно:
- При переключении между вкладками или страницами.
- Когда нужно сохранить форму, прокрутку, данные и т.п.
Работает только с динамическими компонентами (<component :is="...">).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Она идёт в комплекте с Python и включает всё необходимое: работу с файлами, сетью, регулярными выражениями, математикой и т. д.
работа с файловой системой
доступ к системным параметрам
регулярные выражения
математика
работа с датами
парсинг JSON
логирование
асинхронность
встроенный HTTP-сервер
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3👍1
- Unit-тесты — проверка логики каждого компонента.
- Интеграционные — проверка взаимодействия между модулями.
- E2E/UI — через браузеры или симуляцию пользовательских действий.
- Security — статический анализ, сканирование уязвимостей.
- Performance — нагрузочные/стресс тесты.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊1
Amazon CloudFront — это CDN (Content Delivery Network), которая помогает оптимизировать затраты на трафик и нагрузку на серверы. Использование CloudFront позволяет экономить бюджет на AWS-сервисах следующими способами:
CloudFront кэширует статический и динамический контент, что снижает количество запросов к вашим основным серверам (например, EC2, S3, API Gateway, Lambda).
Меньше запросов к S3 (меньше операций
GET, а они платные). Меньше запросов к API Gateway и Lambda (так как CloudFront может кешировать ответы API).
Экономия на EC2 и RDS, так как нагрузка перераспределяется.
Когда CloudFront забирает файлы из S3 в том же регионе, за исходящий трафик из S3 не взимается плата. Исходящий трафик из S3 в интернет стоит ≈ $0.09 за ГБ. Исходящий трафик из CloudFront в интернет дешевле (например, первые 1 ТБ в месяц — бесплатно).
Если у вас клиенты в разных странах, CloudFront дешевле, чем стандартный AWS-трафик. Исходящий трафик из CloudFront в интернет в среднем на 30-50% дешевле, чем прямой выход из EC2 или S3. AWS часто снижает цены на CloudFront трафик в рамках программ оптимизации.
CloudFront позволяет использовать AWS WAF (Web Application Firewall) для блокировки вредоносных запросов. Меньше запросов к бэкенду (EC2, API Gateway, Lambda). Защита от DDoS (AWS Shield Standard бесплатен для CloudFront).
CloudFront поддерживает TTL (Time-to-Live) для кэширования даже динамических API-ответов. Вместо запроса к API Gateway/Lambda, CloudFront может вернуть кэшированный ответ. Можно настроить "Stale While Revalidate" — клиент получает устаревший контент, пока идет обновление.
CloudFront позволяет управлять ценами, ограничивая определенные регионы. Можно исключить дорогие регионы (например, Южную Америку, где трафик дороже). Можно использовать AWS Origin Shield для дополнительного кеширования между регионами.
CloudFront поддерживает CloudFront Functions, которые выполняются прямо на edge-узлах и дешевле, чем Lambda@Edge. CloudFront Functions работают быстрее и стоят $0.10 за миллион запросов. Lambda@Edge стоит $0.60 за миллион запросов + плата за выполнение.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это процесс создания автоматизированных последовательностей команд, обычно для выполнения рутинных операций, настройки, тестирования или развёртывания. Часто используются bash, python, PowerShell.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊7👍2
Донастройка контейнера может понадобиться, если:
Нужно изменить файлы конфигурации.
Установить дополнительные пакеты.
Задать переменные среды.
Подключить тома или сети.
Варианты донастройки: через Dockerfile, docker-compose, exec, тома и Entrypoint/CMD.
Если контейнер нужно модифицировать перед запуском, создаем свой
Dockerfile на основе существующего образа. FROM nginx:latest
COPY my-nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
Собираем новый образ
docker build -t my-nginx .
docker run -d -p 80:80 my-nginx
Можно задать окружение, тома, команды.
version: '3'
services:
db:
image: postgres:15
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- ./custom-postgres.conf:/etc/postgresql/postgresql.conf
command: postgres -c config_file=/etc/postgresql/postgresql.conf
Запуск
docker-compose up -d
Если контейнер уже работает, можно внести изменения прямо в него.
docker exec -it my-container bash
apt update && apt install -y vim
Если нужно изменять файлы без пересборки образа, подключаем тома.
docker run -d -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf nginx
Можно задать скрипт донастройки, который выполнится при старте контейнера.
FROM postgres:15
COPY setup.sh /docker-entrypoint-initdb.d/setup.sh
RUN chmod +x /docker-entrypoint-initdb.d/setup.sh
В
setup.sh: #!/bin/bash
psql -U postgres -d mydb -c "CREATE TABLE test (id SERIAL PRIMARY KEY);"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Deployment предоставляет более высокий уровень абстракции и автоматизирует обновления, масштабирование, откаты и ведение истории. ReplicaSet только поддерживает нужное количество подов, но не управляет версионированием и обновлениями. С использованием Deployment всё это делается проще и безопаснее.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Это понятия из Kubernetes, которые используются для управления хранилищем данных (storage). Они решают задачу обеспечения долгоживущего хранилища для приложений, которое сохраняется независимо от жизненного цикла подов (Pods).
Это объект Kubernetes, который представляет физическое хранилище, доступное в кластере. Это может быть локальное хранилище, сетевой диск (например, NFS), или облачный сервис хранения (например, Amazon EBS, Google Persistent Disk, Azure Disk).
PV создается администратором или автоматически через StorageClass. Это ресурс хранилища, выделенный для использования в кластере. Независим от подов, что позволяет хранить данные, даже если под был удален или перезапущен.
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/mnt/data"
Это запрос на использование хранилища (PV) со стороны пользователя или приложения. Это как "заявка" на нужное количество места и определенный тип хранилища.
PVC создается разработчиком или приложением. PVC связывается с подходящим PV, который соответствует запросу. Если подходящий PV найден, он "привязывается" к PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Администратор или динамическое создание выделяет хранилище (например, сетевой диск).
Приложение запрашивает хранилище с помощью PVC.
Kubernetes автоматически находит подходящий PV, который соответствует запросу PVC (по размерам, режимам доступа и другим параметрам). После этого PVC "связывается" с PV.
PVC указывается в поде как volume, что позволяет контейнерам работать с данным хранилищем.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-pvc
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Селектор (label selector) используется для выбора ресурсов по меткам. Например, Deployment использует селектор, чтобы знать, какие Pods ему управлять.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Для отображения всех работающих процессов в Linux можно использовать несколько команд. Самые популярные из них:
ps, top, htop и pgrep. Каждая из них имеет свои особенности.ps выводит снимок (snapshot) текущих процессов в момент выполнения команды.Показывает все процессы, запущенные в системе, включая пользователей и системные демоны.
ps aux
Альтернативный стиль вывода всех процессов с более детальной информацией.
ps -ef
top — интерактивная утилита для отображения всех запущенных процессов в реальном времени. Вывод обновляется автоматически.Запуск
top
htop — более современная и удобная версия top. Требуется предварительная установка:sudo apt install htop # Для Ubuntu/Debian
sudo yum install htop # Для CentOS/RHEL
Запуск
htop
pgrep используется для поиска процессов по имени, но с дополнительными опциями можно вывести все процессы.Пример
pgrep -a ""
Если вы хотите посмотреть системные службы
systemctl list-units --type=service
ps aux. top или htop. pgrep <имя процесса>.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
REST-методы применяются при работе с веб-API. Выбор метода зависит от задачи:
- GET — при запросе информации;
- POST — при создании данных (регистрация, форма);
- PUT — при обновлении ресурса полностью;
- PATCH — для изменения конкретных полей;
- DELETE — при удалении данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Образ (Image) – это шаблон, из которого создаются контейнеры.
Контейнер (Container) – это запущенный экземпляр образа.
Образ – это неизменяемый шаблон с установленным ПО
Содержит все файлы, библиотеки и зависимости
Может храниться в реестре (Docker Hub, GitHub Container Registry, ECR)
docker pull nginx:latest
Пример списка образов
docker images
Пример создания образа через
DockerfileFROM ubuntu:latest
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]
docker build -t my-nginx .
Контейнер – это запущенный экземпляр образа
Может изменять файлы и состояние, но это не сохраняется в образе
Изолирован, но использует ядро ОС хоста
docker run -d --name web -p 80:80 nginx
Пример списка контейнеров
docker ps
Пример остановки контейнера
docker stop web
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
С помощью команды:
helm rollback <release-name> <revision-number>
Можно также узнать список доступных ревизий через:
helm history <release-name>
Это позволяет быстро вернуться к рабочей версии, если обновление прошло неудачно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3