DevOps | Вопросы собесов
5.2K subscribers
35 photos
824 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Что такое ELK?

ELK — это стек программ, состоящий из Elasticsearch, Logstash и Kibana, предназначенный для сбора, хранения и визуализации логов. Elasticsearch хранит и индексирует данные, Logstash собирает и обрабатывает их, а Kibana позволяет визуализировать и анализировать. ELK часто используется для мониторинга и анализа больших объемов данных в реальном времени.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥3
🤔 Из чего состоит роль из каких папок из каких файлов?

Роль в Ansible состоит из набора папок и файлов, которые организуют задачи, переменные, файлы конфигурации, шаблоны и другие ресурсы, необходимые для выполнения конкретной роли.

🚩Описание каждой папки и файла

🟠defaults/main.yml
Содержит переменные по умолчанию для роли.
# roles/role_name/defaults/main.yml
some_default_variable: "default_value"


🟠files/
Содержит статические файлы, которые можно копировать на удаленные хосты. Пример: roles/role_name/files/myfile.conf

🟠handlers/main.yml
Содержит хендлеры, которые можно вызывать для выполнения действий, таких как перезапуск службы.
# roles/role_name/handlers/main.yml
- name: restart nginx
service:
name: nginx
state: restarted


🟠meta/main.yml
Содержит метаинформацию о роли, такую как зависимости от других ролей.
# roles/role_name/meta/main.yml
dependencies:
- role: another_role


🟠tasks/main.yml
Содержит основной список задач, которые выполняются при использовании роли.
# roles/role_name/tasks/main.yml
- name: Install nginx
apt:
name: nginx
state: present


🟠templates/
Содержит шаблоны Jinja2, которые могут быть использованы для создания конфигурационных файлов с динамическими значениями.
# roles/role_name/templates/nginx.conf.j2
server {
listen 80;
server_name {{ nginx_server_name }};
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}


🟠tests/
Содержит файлы для тестирования роли.
# roles/role_name/tests/test.yml
- hosts: localhost
roles:
- role_name


🟠vars/main.yml
Содержит переменные с высоким приоритетом, используемые в роли.
# roles/role_name/vars/main.yml
some_variable: "value"


🟠README.md
Документация роли, содержащая информацию о том, как использовать роль, примеры и описание переменных.

🚩Пример структуры роли

defaults/main.yml
# roles/nginx/defaults/main.yml
nginx_port: 80


vars/main.yml
# roles/nginx/vars/main.yml
nginx_user: "www-data"


tasks/main.yml
# roles/nginx/tasks/main.yml
- name: Install Nginx
apt:
name: nginx
state: present

- name: Configure Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf

- name: Start Nginx
service:
name: nginx
state: started
enabled: true


templates/nginx.conf.j2
# roles/nginx/templates/nginx.conf.j2
user {{ nginx_user }};
worker_processes auto;

events {
worker_connections 1024;
}

http {
server {
listen {{ nginx_port }};
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🤔 Что такое и нужен ли swap

Swap — это область диска, которую операционная система использует как виртуальную память, расширяя возможности оперативной памяти. Он помогает системе работать стабильно, когда физической памяти не хватает, перенося неактивные данные из RAM на диск. Swap полезен для поддержания работы системы под нагрузкой, но его чрезмерное использование может замедлить производительность из-за более медленного доступа к данным на диске.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
🤔Что такое системные вызовы и системные сигналы?

🚩Системные вызовы

Это интерфейс между прикладными программами и ядром операционной системы. Они позволяют программам запрашивать услуги у операционной системы, такие как управление файлами, управление процессами, сетевое взаимодействие и управление памятью.

🚩Зачем нужны системные вызовы?

🟠Доступ к ресурсам
Программы могут получить доступ к аппаратным ресурсам, таким как диски, сеть, память и устройства ввода/вывода.
🟠Изоляция
Обеспечивают изоляцию между прикладными программами и аппаратными ресурсами, что повышает безопасность и стабильность системы.
🟠Управление процессами
Позволяют создавать, завершать и управлять процессами.

🚩Примеры системных вызовов

open - Открытие файла.
read - Чтение данных из файла или устройства.
write - Запись данных в файл или устройство.
fork - Создание нового процесса.
exec - Выполнение программы.
kill - Отправка сигнала процессу.
wait - Ожидание завершения дочернего процесса.

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
int fd = open("example.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}

char buffer[100];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
if (bytesRead == -1) {
perror("read");
return 1;
}

write(STDOUT_FILENO, buffer, bytesRead);
close(fd);
return 0;
}


🚩Системные сигналы

Это механизмы, используемые в Unix-подобных операционных системах для уведомления процессов о различных событиях. Сигналы могут быть отправлены процессом, ядром ОС или пользователем для уведомления о системных событиях или управления процессами.

🚩Зачем нужны системные сигналы?

🟠Уведомление о событиях
Уведомляют процессы о событиях, таких как завершение программы, ошибки, прерывания и другие.
🟠Управление процессами
Позволяют приостанавливать, возобновлять или завершать процессы.
🟠Обработка исключений
Предоставляют механизм для обработки исключительных ситуаций, таких как деление на ноль или доступ к недопустимым адресам памяти.

🚩Примеры системных сигналов

SIGINT (2) - Прерывание (обычно отправляется при нажатии Ctrl+C в терминале).
SIGTERM (15) - Завершение процесса.
SIGKILL (9) - Немедленное завершение процесса.
SIGSTOP (19)- Приостановка процесса.
SIGCONT (18) - Возобновление приостановленного процесса.
SIGSEGV (11) - Сегментационная ошибка (доступ к несуществующей памяти).

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handle_signal(int signal) {
if (signal == SIGINT) {
printf("Caught SIGINT, exiting...\n");
_exit(0);
}
}

int main() {
signal(SIGINT, handle_signal);

while (1) {
printf("Running...\n");
sleep(1);
}

return 0;
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
🤔 В чём разница между TCP и UDP

TCP — это протокол с установлением соединения, который гарантирует надежную доставку данных с подтверждением и контролем последовательности. UDP — это протокол без установления соединения, передающий данные быстрее, но без гарантии доставки и контроля порядка. TCP подходит для приложений, требующих надежности (например, HTTP), тогда как UDP используется для быстрой передачи данных, где небольшая потеря пакетов допустима (например, видео- и аудиопотоки).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 На каких ключевых особенностях базируется докер?

🟠Контейнеризация:
Контейнеры Docker предоставляют легковесную и изолированную среду для выполнения приложений. Контейнеры включают все необходимые для работы приложения зависимости и библиотеки, обеспечивая портативность и консистентность между различными средами (разработка, тестирование, производство).

🟠Образы (Images):
Docker образы представляют собой неизменяемые шаблоны, содержащие все, что необходимо для запуска приложения: код, библиотеки, конфигурационные файлы, настройки среды и т.д. Образы можно легко версионировать, передавать и повторно использовать.

🟠Регистры (Registries):
Docker использует регистры для хранения и распространения образов. Docker Hub — это публичный регистр, предоставляемый Docker, но также можно создавать собственные приватные регистры. Это упрощает совместное использование и управление образами.

🟠Изоляция и безопасность:
Docker использует пространства имен (namespaces) и контрольные группы (cgroups) для изоляции процессов и управления ресурсами. Это обеспечивает контейнерам высокий уровень безопасности и предотвращает конфликт между приложениями, работающими в разных контейнерах.

🟠Легковесность и производительность:
В отличие от виртуальных машин, контейнеры не требуют отдельной операционной системы, что делает их намного более легковесными и быстрыми. Это позволяет запускать большее количество контейнеров на одном хосте с меньшими накладными расходами.

🟠Масштабируемость и оркестрация:
Docker предоставляет инструменты для управления контейнерами в масштабе, такие как Docker Swarm и интеграция с Kubernetes. Эти инструменты позволяют автоматизировать развертывание, управление, масштабирование и мониторинг контейнеров в распределенных системах.

🟠Управление жизненным циклом приложений:
Docker упрощает создание, тестирование и развертывание приложений через контейнеры. Это способствует интеграции и непрерывной доставке (CI/CD), так как контейнеры гарантируют, что приложение будет работать одинаково во всех средах.

🚩Создание образа и запуска контейнера

1⃣Dockerfile
# Используем базовый образ
FROM ubuntu:latest

# Устанавливаем необходимые пакеты
RUN apt-get update && apt-get install -y python3

# Копируем файлы приложения в контейнер
COPY . /app

# Устанавливаем рабочую директорию
WORKDIR /app

# Определяем команду для запуска приложения
CMD ["python3", "app.py"]


2⃣Сборка образа:
docker build -t my-python-app .


3⃣Запуск контейнера:
docker run -d --name python-app-container my-python-app


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Без какой инструкции не может существовать докер файл?

FROM — это ключевая инструкция в Dockerfile, без которой файл не может существовать. Она указывает базовый образ, от которого начинается сборка контейнера. Любой Dockerfile должен начинаться с этой инструкции.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🤔1
🤔 Разница между докером и kubernetes?

🟠Назначение:
Docker: Создание и запуск контейнеров.
Kubernetes: Оркестрация и управление кластерами контейнеров.

🟠Уровень абстракции:
Docker: Работает с контейнерами и образами.
Kubernetes: Работает с подами, службами и другими абстракциями для управления контейнерами.

🟠Масштабируемость:
Docker: Локальное масштабирование контейнеров.
Kubernetes: Автоматическое масштабирование и управление контейнерами на кластерах.

🟠Управление состоянием:
Docker: Не отслеживает состояние контейнеров.
Kubernetes: Автоматически восстанавливает и управляет состоянием контейнеров.

Ставь
👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Зачем нужен OOM

OOM (Out Of Memory) — это механизм, срабатывающий, когда системе не хватает памяти для работы, что приводит к завершению процессов с высокой нагрузкой. Он защищает систему от полного исчерпания памяти, освобождая ресурсы, чтобы другие процессы могли продолжать работать. OOM-killer используется для выбора и завершения наименее критичных процессов, предотвращая полное зависание системы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
🤔 Как прикрутить авторизацию кластеру?

Для настройки авторизации в кластере Kubernetes можно использовать несколько механизмов, включая роль RBAC (Role-Based Access Control), аутентификацию с использованием токенов, сертификатов, и интеграцию с внешними системами аутентификации, такими как OpenID Connect (OIDC). Рассмотрим основные шаги для настройки RBAC и аутентификации с помощью токенов.

🚩Настройка RBAC (Role-Based Access Control)

1⃣Создание роли (Role) или кластерной роли (ClusterRole)
Роли определяют, какие действия разрешены над какими ресурсами в определенном namespace (Role) или во всем кластере (ClusterRole).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-pods
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]


2⃣Создание роли связывания (RoleBinding) или кластерного связывания роли (ClusterRoleBinding)
Связывание роли привязывает роль к конкретному пользователю, группе или субъекту службы (ServiceAccount).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-pods-binding
subjects:
- kind: User
name: jane
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: read-pods
apiGroup: rbac.authorization.k8s.io


🚩Настройка аутентификации с использованием токенов

Kubernetes поддерживает несколько методов аутентификации, включая использование токенов. Один из способов — использование токенов ServiceAccount.

1⃣Создание ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: default


2⃣Создание связывания роли для ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: default
roleRef:
kind: Role
name: read-pods
apiGroup: rbac.authorization.k8s.io


3⃣Получение токена ServiceAccount
kubectl get secret $(kubectl get serviceaccount my-service-account -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode


🚩Интеграция с внешними системами аутентификации (OIDC)

Для интеграции с внешними системами аутентификации, такими как OpenID Connect (OIDC), нужно настроить параметры API-сервера Kubernetes.

Настройка API-сервера
Добавьте параметры конфигурации OIDC в команду запуска kube-apiserver
--oidc-issuer-url=https://accounts.google.com \
--oidc-client-id=<client-id> \
--oidc-username-claim=email \
--oidc-groups-claim=groups


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍171
🤔 Какие существуют Probe?

В Kubernetes существуют три типа Probe: `Liveness Probe`, `Readiness Probe` и `Startup Probe`.
`Liveness Probe` проверяет, жив ли контейнер и работает ли он корректно, перезапуская его при необходимости.
`Readiness Probe` определяет, готов ли контейнер обрабатывать запросы, и управляет включением/выключением его из баланса нагрузки.
`Startup Probe` используется для проверки успешного старта контейнера перед выполнением других Probe.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥9
🤔 Как реализовать идеальный деплой кода в production с помощью argocd?

Argo CD — это инструмент для непрерывной доставки (CD) на основе GitOps, который автоматизирует развертывание приложений в Kubernetes. Он позволяет синхронизировать состояние кластера с состоянием в репозитории Git, что обеспечивает декларативное управление инфраструктурой и приложениями.

🚩Настройки идеального деплоя кода в production

1⃣Установка Argo CD
Первым шагом является установка Argo CD в ваш Kubernetes кластер.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml


2⃣Доступ к интерфейсу Argo CD
После установки необходимо настроить доступ к интерфейсу Argo CD. Вы можете использовать kubectl port-forward для локального доступа:
kubectl port-forward svc/argocd-server -n argocd 8080:443


3⃣Настройка аутентификации
Получите начальный пароль для пользователя admin:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2


4⃣Создание приложения Argo CD
Создайте репозиторий в Git, который будет содержать манифесты Kubernetes для вашего приложения. Репозиторий должен содержать все необходимые файлы для развертывания приложения (например, файлы Deployment, Service, ConfigMap и т.д.).

5⃣Добавление приложения в Argo CD
Используйте веб-интерфейс или командную строку для создания нового приложения в Argo CD, которое будет синхронизироваться с вашим Git-репозиторием.

6⃣Синхронизация и развертывание
Argo CD автоматически синхронизирует состояние вашего кластера с состоянием в Git-репозитории. Если вы включили автоматическую синхронизацию, изменения в репозитории будут автоматически развернуты в кластере.

7⃣Настройка уведомлений
Argo CD можно настроить для отправки уведомлений о статусе развертываний через интеграции с такими инструментами, как Slack, email, или вебхуками.

8⃣Мониторинг и обратная связь
Используйте веб-интерфейс Argo CD для мониторинга состояния приложений и синхронизации. Также можно настроить метрики и мониторинг через Prometheus и Grafana для более глубокого анализа.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Что порождает init процесс?

`init` — это первый процесс, который запускается ядром операционной системы после её загрузки.
Он порождается непосредственно ядром как процесс с идентификатором PID 1 и отвечает за инициализацию системы, запуск всех остальных процессов и управление ними.
`init` остаётся родительским процессом для всех орфанных процессов, обеспечивая их завершение или управление.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7
🤔 Какую информацию хранит i нода?

I-нода (или индексный узел, inode) в файловой системе UNIX и подобных ей (например, в Linux) является структурой данных, которая хранит информацию о файлах и каталогах. I-нода не содержит имени файла, но хранит метаданные, необходимые для управления файлом. Вот основная информация, которую хранит i-нода:

🟠Идентификатор (индекс) i-ноды
Уникальный идентификатор, по которому можно однозначно определить файл в пределах файловой системы.

🟠Тип файла:
Определяет, является ли объект файлом, каталогом, символической ссылкой, устройством и т.д.

🟠Права доступа:
Содержит информацию о правах доступа к файлу для владельца, группы и других пользователей (чтение, запись, выполнение).

🟠Ссылки (link count):
Количество жестких ссылок на этот файл, то есть сколько раз этот файл упоминается в различных каталогах.

🟠Идентификатор пользователя (UID):
Указывает владельца файла.

🟠Идентификатор группы (GID):
Указывает группу, к которой принадлежит файл.

🟠Размер файла:
Размер файла в байтах.

🟠Временные метки:
ctime (Change Time): Время последнего изменения i-ноды (метаданных).
mtime (Modification Time): Время последнего изменения содержимого файла.
atime (Access Time): Время последнего доступа к файлу.

🟠Расположение данных:
Прямые указатели: Указывают на блоки данных непосредственно.
Одноуровневые непрямые указатели: Указывают на блоки, которые содержат прямые указатели.
Двухуровневые непрямые указатели: Указывают на блоки, которые содержат одноуровневые непрямые указатели.
Трехуровневые непрямые указатели: Указывают на блоки, которые содержат двухуровневые непрямые указатели.

i-нод номер: 12345
Тип: Файл
Права доступа: rw-r--r--
Ссылки: 1
UID: 1000
GID: 1000
Размер: 2048 байт
ctime: 2023-07-31 12:34:56
mtime: 2023-07-31 12:00:00
atime: 2023-07-31 11:30:00
Прямые указатели: [2, 3, 4, ...]
Одноуровневый непрямой указатель: [5]
Двухуровневый непрямой указатель: [6]
Трехуровневый непрямой указатель: [7]


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Без какой инструкции не может существовать докер файл?

FROM — это ключевая инструкция в Dockerfile, без которой файл не может существовать. Она указывает базовый образ, от которого начинается сборка контейнера. Любой Dockerfile должен начинаться с этой инструкции.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🤔 В чем разница между linux и unix?

Разница между Linux и Unix заключается в их происхождении, разработке, лицензировании и архитектурных особенностях. Хотя они оба являются операционными системами, основывающимися на схожих концепциях, они имеют несколько ключевых различий.

🚩Происхождение и история

🟠Unix
Происхождение: Unix был разработан в AT&T Bell Labs в конце 1960-х и начале 1970-х годов Кеном Томпсоном, Деннисом Ритчи и другими.
История: Unix стал основой для многих других операционных систем, включая различные коммерческие и академические версии, такие как BSD (Berkeley Software Distribution), AIX (от IBM), HP-UX (от Hewlett-Packard), Solaris (от Sun Microsystems) и другие.

🟠 Linux
Происхождение:Linux был разработан Линусом Торвальдсом в 1991 году как бесплатная и открытая альтернатива Unix.
История: Linux основан на идеях и стандартах Unix, но он не содержит исходного кода Unix. Linux стал популярным благодаря своей открытой модели разработки и поддержке со стороны сообщества.

🚩Лицензирование

🟠Unix
Лицензия: Unix традиционно был коммерческой операционной системой, распространяемой по проприетарной лицензии. Каждая версия Unix имела свои собственные лицензионные условия и коммерческие модели.

🟠Linux
Лицензия: Linux распространяется под лицензией GNU General Public License (GPL), что делает его свободным и открытым программным обеспечением. Это позволяет пользователям свободно использовать, изменять и распространять Linux.

🚩Разработка и поддержка

🟠Unix
Разработка: Разработка Unix велась различными коммерческими и академическими организациями. Каждая версия Unix разрабатывалась и поддерживалась своим собственным вендором.
Поддержка: Поддержка Unix зависела от вендора, который предоставлял коммерческую поддержку для своей версии системы.

🟠Linux
Разработка: Linux разрабатывается сообществом разработчиков по всему миру. Основной веткой ядра Linux управляет Линус Торвальдс и его команда, но различные дистрибутивы (например, Debian, Ubuntu, Fedora, CentOS, и т.д.) добавляют свои собственные компоненты и поддержку.
Поддержка: Linux поддерживается как сообществом, так и коммерческими организациями (например, Red Hat, Canonical, SUSE), предоставляющими платную поддержку и услуги.

🚩Архитектурные особенности и использование

🟠Unix
Архитектура: Unix системы часто следуют определенным стандартам, таким как POSIX, и имеют стабильное, проверенное временем ядро и архитектуру.
Использование: Unix традиционно используется в крупных корпоративных средах, на серверах и мейнфреймах, в научных и инженерных приложениях.

🟠Linux
Архитектура: Linux также следует стандартам POSIX и имеет модульную архитектуру, которая позволяет пользователям и разработчикам легко добавлять новые функции.
Использование: Linux используется повсеместно — от серверов и суперкомпьютеров до встраиваемых систем и мобильных устройств (например, Android). Он также широко используется в настольных системах благодаря множеству дистрибутивов.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 В чём разница между контейнеризацией и виртуализацией?

Контейнеризация использует контейнеры для изоляции приложений и их зависимостей на уровне операционной системы, что делает контейнеры более лёгкими по сравнению с виртуальными машинами. Виртуализация, в свою очередь, создает полноценные виртуальные машины с собственными ОС поверх гипервизора, что требует больше ресурсов. Контейнеры запускаются на общем ядре ОС хоста, а виртуальные машины имеют свои ядра, что делает их независимыми, но более тяжёлыми. Контейнеры обеспечивают большую гибкость и скорость развертывания по сравнению с виртуальными машинами.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
🤔 Что такое user space и kernel space?

В операционных системах на базе Unix и Linux существует разделение между двумя важными областями памяти: пространством пользователя (user space) и пространством ядра (kernel space). Это разделение важно для обеспечения стабильности и безопасности системы.

🚩Kernel Space (Пространство ядра)

Пространство ядра - это область памяти, в которой работает ядро операционной системы и его расширения, включая драйверы устройств. Ядро имеет полный доступ к аппаратным ресурсам системы и может выполнять привилегированные операции.

🟠Полный доступ к аппаратуре:
Ядро имеет прямой доступ к памяти, процессору, устройствам ввода-вывода и другим аппаратным компонентам.

🟠Привилегированный режим выполнения:
Код, выполняемый в пространстве ядра, работает в привилегированном режиме процессора, что позволяет ему выполнять критически важные и потенциально опасные операции.

🟠Управление ресурсами:
Ядро управляет ресурсами системы, такими как память, процессорное время, файловые системы и сетевые соединения.

🟠Обработка системных вызовов:
Ядро обрабатывает системные вызовы от приложений, которые выполняются в пространстве пользователя. Эти вызовы включают операции ввода-вывода, управление памятью, управление процессами и другие.

🚩User Space (Пространство пользователя)

Пространство пользователя - это область памяти, в которой выполняются пользовательские приложения и процессы. Это пространство изолировано от пространства ядра для обеспечения безопасности и стабильности системы.

🟠Ограниченный доступ к аппаратуре:
Приложения в пространстве пользователя не имеют прямого доступа к аппаратным ресурсам. Все обращения к аппаратуре происходят через системные вызовы, которые передаются ядру.

🟠Непривилегированный режим выполнения:
Код, выполняемый в пространстве пользователя, работает в непривилегированном режиме процессора, что ограничивает его возможности и предотвращает выполнение опасных операций.

🟠Изоляция и безопасность:
Процессы в пространстве пользователя изолированы друг от друга и от пространства ядра. Это предотвращает одну программу от вмешательства в работу другой и защищает ядро от потенциально вредоносных действий.

🚩Взаимодействие между Kernel Space и User Space

Взаимодействие между пространством пользователя и ядра происходит через системные вызовы. Когда приложение в пространстве пользователя хочет выполнить операцию, требующую привилегий ядра (например, чтение файла или создание процесса), оно выполняет системный вызов. Ядро обрабатывает этот вызов и возвращает результат в пространство пользователя.

Примером системного вызова является функция read() в языке программирования C, которая позволяет читать данные из файла. Тут open(), read(), и close() являются системными вызовами, которые передают управление от пространства пользователя к пространству ядра для выполнения операций с файлами.
#include <unistd.h>
#include <fcntl.h>

int main() {
int fd = open("example.txt", O_RDONLY);
if (fd == -1) {
// Ошибка при открытии файла
return 1;
}

char buffer[128];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
if (bytesRead == -1) {
// Ошибка при чтении файла
return 1;
}

// Обработка данных
close(fd);
return 0;
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5
🤔 Какие существуют Probe?

Существуют три основных Probe в Kubernetes: Liveness Probe для проверки состояния контейнера, Readiness Probe для определения готовности к обработке запросов и Startup Probe для проверки успешного запуска контейнера.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
🤔 Какие используете централизованные средства обновления и мониторинга состояния сертификатов на эндпойнтах?

Централизованное управление и мониторинг состояния сертификатов на конечных точках (эндпойнтах) критически важно для обеспечения безопасности и соблюдения регуляторных требований. Для этой цели можно использовать различные инструменты и платформы, которые обеспечивают централизованное обновление, мониторинг и управление сертификатами.

🟠HashiCorp Vault
Это мощное средство для управления секретами и сертификатами. Оно поддерживает централизованное управление сертификатами и автоматическое обновление.

Функции:
Хранение и управление сертификатами.
Автоматическое обновление и ротация сертификатов.
API для интеграции с другими системами.
Управление доступом на основе политики.

🟠Certbot и Let's Encrypt
Это клиент для автоматического получения и обновления сертификатов от Let's Encrypt, бесплатного авторитета сертификации.

Функции:
Автоматическое получение и обновление SSL/TLS сертификатов.
Интеграция с веб-серверами (например, Apache, Nginx).
Скрипты и автоматизация для простоты управления.

🟠Venafi
Это платформа для защиты машинных идентификаторов, которая обеспечивает централизованное управление сертификатами.

Функции:
Централизованное управление жизненным циклом сертификатов.
Автоматическое обновление и ротация сертификатов.
Мониторинг состояния сертификатов и оповещения о проблемах.
Интеграция с различными облачными провайдерами и DevOps инструментами.

🟠AWS Certificate Manager (ACM)
Позволяет легко управлять сертификатами в облачной инфраструктуре AWS.

Функции:
Автоматическое обновление сертификатов.
Простая интеграция с AWS сервисами (например, Elastic Load Balancing, CloudFront).
Централизованное управление сертификатами в AWS.

🟠Microsoft Azure Key Vault
Azure Key Vault предоставляет возможности для централизованного управления сертификатами в облаке Microsoft Azure.

Функции:
Хранение и управление сертификатами.
Автоматическое обновление сертификатов.
Интеграция с другими сервисами Azure.
Управление доступом на основе ролей (RBAC).

🟠Google Cloud Certificate Manager
Google Cloud Certificate Manager помогает управлять сертификатами в инфраструктуре Google Cloud Platform.

Функции:
Управление и обновление сертификатов.
Интеграция с Load Balancers и другими сервисами GCP.
Мониторинг и оповещения о состоянии сертификатов.

🚩Пример настройки

1⃣Установка Certbot:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx


2⃣Получение сертификата:
sudo certbot --nginx -d example.com -d www.example.com


3⃣Настройка автоматического обновления сертификатов:
sudo crontab -e


4⃣Добавление следующей строки в crontab для автоматического обновления:
0 0 * * * /usr/bin/certbot renew --quiet --no-self-upgrade


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10