2. CRI (Container Runtime Interface): интерфейс взаимодействия Kubernetes с контейнерными движками.
3. CNI (Container Network Interface): стандарты сетевой интеграции контейнеров.
4. CSI (Container Storage Interface): интерфейс для подключения различных систем хранения данных.
5. SMI (Service Mesh Interface): стандарт взаимодействия между сервисами в сетях.
6. CPI (Cloud Provider Interface): взаимодействие Kubernetes с облачными провайдерами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤1
Это понятия из 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
👍6
2. 404 Not Found: запрашиваемый ресурс не найден.
3. 500 Internal Server Error: ошибка на стороне сервера.
4. 301 Moved Permanently: ресурс перемещён на другой URL.
5. 403 Forbidden: доступ к ресурсу запрещён.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
В операционных системах на базе 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
. Вот несколько способов сделать этоИспользование
ps
ps aux | grep nginx | grep -v grep
Использование
pgrep
pgrep nginx
Использование
pidof
pidof nginx
Запустите
top
или htop
и найдите процесс nginx
в интерактивном режиме.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
2. Docker Daemon: фоновый процесс, отвечающий за управление контейнерами, сетями и образами.
3. Docker CLI взаимодействует с Docker Daemon через API для выполнения задач.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6🤯1
Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде:
Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела —
swap
).Swap может быть представлен как обычный файл в файловой системе (например,
/swapfile
).Используйте команды для проверки текущей конфигурации:
Проверка swap через
swapon
swapon --show
Пример вывода
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 4G 1G -2
/swapfile file 2G 0B -3
- NAME: Устройство или файл, используемый для swap.
- TYPE: Указывает, является ли swap разделом или файлом.
- SIZE: Размер swap.
- USED: Сколько swap в данный момент используется.
- PRIO: Приоритет использования (меньшее значение — меньший приоритет).
Проверка через
free
free -h
Если swap является разделом, он обычно прописан в
/etc/fstab
cat /etc/fstab | grep swap
Пример
/dev/sda2 none swap sw 0 0
Если swap — это раздел, то он отображается как устройство, например,
/dev/sda2
. Если swap — это файл, его путь будет, например, /swapfile
.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
1. Процесс: независимая единица выполнения с собственной памятью.
2. Поток: часть процесса, использующая его общую память.
3. Потоки легче создавать и переключать, но сложнее синхронизировать из-за доступа к общим данным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Это два различных подхода в разработке и доставке программного обеспечения, которые имеют разные цели и методы, но могут взаимодополнять друг друга. Давайте рассмотрим основные различия и связи между ними.
Увеличение гибкости и адаптивности разработки программного обеспечения.
Разработка проходит в коротких циклах (итерациях), что позволяет регулярно представлять работающее программное обеспечение.
Регулярные встречи (например, ежедневные стендапы, спринт-ревью) для получения обратной связи от команды и заинтересованных сторон.
Команды, состоящие из разработчиков, тестировщиков, аналитиков и других специалистов, работают вместе над проектом.
Постоянное взаимодействие с клиентами для уточнения требований и проверки соответствия продукта их ожиданиям.
Фреймворки: Scrum, Kanban, XP (Extreme Programming).
Увеличение скорости и качества доставки программного обеспечения через автоматизацию и улучшение сотрудничества между разработчиками и операционными командами.
Автоматизация сборки, тестирования и развертывания кода, чтобы изменения могли быстро и надежно попасть в рабочую среду.
Использование кода для управления и автоматизации инфраструктуры, что делает процессы повторяемыми и предсказуемыми.
Постоянное отслеживание состояния приложений и инфраструктуры для быстрого обнаружения и устранения проблем.
Улучшение взаимодействия между разработчиками и операционными инженерами через общие инструменты и процессы.
Инструменты: Jenkins, Docker, Kubernetes, Ansible, Terraform, Prometheus, Grafana.
Agile: Сфокусирован на процессе разработки и управлении проектами, улучшая гибкость и адаптивность команды разработки.
DevOps: Сфокусирован на процессе доставки и эксплуатации, улучшая автоматизацию и сотрудничество между разработчиками и операционными командами.
Agile: Включает кросс-функциональные команды, которые работают вместе над созданием программного обеспечения.
DevOps: Включает команды разработчиков и операций, которые совместно работают над автоматизацией и улучшением процессов развертывания и эксплуатации.
Agile: Методы Scrum, Kanban и другие Agile-практики, которые улучшают процесс управления проектами.
DevOps: Инструменты и практики для автоматизации развертывания, мониторинга и управления инфраструктурой.
Помогает улучшить процесс разработки, делая его более гибким и отзывчивым к изменениям.
Дополняет Agile, автоматизируя развертывание и эксплуатацию программного обеспечения, что позволяет быстрее доставлять изменения пользователям.
Может использовать Scrum для управления спринтами и задачами.
Могут быть использованы для автоматизации CI/CD пайплайнов, чтобы каждая итерация разработки могла быть быстро и надежно развернута на серверы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁3🤯2❤1
1. systemd быстрее загружает системы благодаря параллельному запуску сервисов.
2. Поддерживает улучшенную обработку зависимостей и состояние служб.
3. Предоставляет универсальные команды для управления процессами (systemctl).
4. Является стандартом в большинстве современных дистрибутивов Linux.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
Для отображения всех работающих процессов в 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
👍6
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать.
Количество адресуемых ячеек памяти определяется по формуле:
\text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}}
Максимально возможное количество адресов:
2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт})
Теоретический максимум
2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт})
Однако современные процессоры обычно поддерживают меньше, например
Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт.
Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит).
Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате.
Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Основные параметры:
- replicas: количество реплик.
- selector: выборка подов по меткам.
- template: спецификация подов (контейнеры, ресурсы, переменные окружения).
- strategy: стратегия развертывания (например, RollingUpdate или Recreate).
- revisionHistoryLimit: количество сохранённых версий для отката.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа Docker. Эта инструкция обязательна, так как она определяет базовый (родительский) образ, от которого будет строиться ваш собственный образ.
Указывает на базовый образ, который используется для сборки нового образа Docker. Без этой инструкции Docker не сможет определить, с какого состояния начать сборку, и, соответственно, сборка образа будет невозможна.
# Использование официального образа Python 3.8 как базового
FROM python:3.8
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
- Readiness: проверяет готовность пода принимать трафик.
- Liveness: проверяет, что под работает корректно.
- Startup: проверяет успешный старт пода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров.
Почему: Базовый образ сильно влияет на размер. Например,
alpine
занимает ~5 МБ, в то время как ubuntu
или debian
могут превышать сотни мегабайт.Как: Замените базовый образ:
FROM alpine:latest
Почему: Временные файлы, кэш или артефакты сборки занимают место.
Как: Добавьте команды для очистки временных данных:
RUN apt-get update && apt-get install -y curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе.
Как
# Стадия сборки
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app .
# Финальный образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
Почему: Каждый
RUN
, COPY
, ADD
создаёт новый слой. Слишком много слоёв увеличивают размер образа.Как: Объединяйте команды:
RUN apt-get update && apt-get install -y curl wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы.
Как: Используйте Docker secrets или
.env
-файлы и исключайте их из COPY
ENV APP_ENV=production
Почему: Частое скачивание зависимостей замедляет сборку.
Как: Переносите команды загрузки зависимостей ближе к началу:
COPY go.mod go.sum ./
RUN go mod download
Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости.
Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
trivy image myimage:latest
# 1. Используем минимальный базовый образ
FROM node:20-alpine as builder
# 2. Устанавливаем зависимости
WORKDIR /app
COPY package*.json ./
RUN npm install
# 3. Копируем код
COPY . .
# 4. Собираем проект
RUN npm run build
# Финальный минимальный образ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🤔1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6🔥2👍1
В 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
👍13
- iotop: анализ ввода-вывода.
- strace: трассировка системных вызовов.
- lsof: открытые файлы и сокеты.
- netstat/ss: состояние сети.
- dmesg: системные сообщения ядра.
- journalctl: просмотр логов systemd.
- ping, traceroute: диагностика сети.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍6
DevOps-инженер и SRE (Site Reliability Engineer) — это роли, которые пересекаются в своих задачах, но имеют разные акценты и подходы.
Основная цель: Ускорить и автоматизировать процесс разработки, тестирования и развертывания приложений.
Подход: Сосредоточен на создании и поддержке CI/CD, инфраструктуры как кода (IaC) и инструментах автоматизации.
Фокус: Эффективность процессов разработки. Улучшение взаимодействия между командами разработки (Dev) и эксплуатации (Ops).
Основная цель: Обеспечение стабильности, надежности и производительности системы в продакшене.
Подход: Применяет инженерные подходы и автоматизацию для управления операциями и масштабированием.
Фокус: Стабильность и надежность системы. Мониторинг, устранение сбоев и управление инцидентами.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11