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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Какими механизмами организовывается доступ к кастомным ресурсам?

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

🟠RBAC (Role-Based Access Control)
Настройка ролей и привилегий для управления доступом к кастомным ресурсам.
   apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: myresource-role
rules:
- apiGroups: ["example.com"]
resources: ["myresources"]
verbs: ["get", "list", "watch", "create", "update", "patch"]


🟠Admission Controllers
Использование валидирующих вебхуков для валидации и контроля запросов к кастомным ресурсам.
   apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: myresource-webhook
webhooks:
- name: myresource.example.com
clientConfig:
service:
name: myresource-webhook-service
namespace: default
path: "/validate"
rules:
- operations: ["CREATE", "UPDATE"]
apiGroups: ["example.com"]
apiVersions: ["v1"]
resources: ["myresources"]


🟠CRD Validation
Определение схемы в CRD для автоматической проверки данных.
   apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: myresources.example.com
spec:
group: example.com
versions:
- name: v1
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
field1:
type: string
field2:
type: integer
minimum: 0
names:
plural: myresources
singular: myresource
kind: MyResource


🟠Кастомные контроллеры и операторы

Автоматизация управления
Написание контроллеров для управления состоянием кастомных ресурсов.

🟠CLI и API

Интерактивное управление
Использование команд kubectl и API для взаимодействия с кастомными ресурсами.
   kubectl apply -f my-custom-resource.yaml
kubectl get myresources
kubectl describe myresource my-custom-resource


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Что такое Kata Containers?

Kata Containers — это лёгкие виртуальные машины, сочетающие преимущества контейнеров (быстрое развертывание, низкая нагрузка) и виртуализации (изолированность и безопасность). Они используют гипервизоры для запуска каждого контейнера в изолированной среде, обеспечивая более высокий уровень безопасности.

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

В Kubernetes "роуты" (routes) обычно ассоциируются с концепцией маршрутизации сетевого трафика к нужным сервисам и подам в кластере.

🚩Основные компоненты маршрутизации в Kubernetes

🟠Service
Абстракция, определяющая логический набор подов и политику доступа к ним. Обеспечивает стабильную точку доступа (IP-адрес и порт) к динамически изменяющемуся набору подов.
ClusterIP: Доступ только внутри кластера.
NodePort: Открывает статический порт на каждом узле для внешнего доступа.
LoadBalancer: Создает внешний балансировщик нагрузки (используется в облачных провайдерах).
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: ClusterIP


🟠Ingress
API-объект, который управляет внешним доступом к сервисам в кластере, обычно HTTP/HTTPS.
Предоставляет возможность настройки правил маршрутизации, SSL/TLS терминальной точки, виртуальных хостов и балансировки нагрузки. Специальный компонент, который реализует правила Ingress.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80


🟠Network Policies
Объект, определяющий правила контроля трафика для подов. Ограничивает и контролирует входящий и исходящий сетевой трафик между подами и сервисами, обеспечивая безопасность сети.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: example-network-policy
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
egress:
- to:
- podSelector:
matchLabels:
role: backend


🚩Как работают роуты

🟠Service
Маршрутизирует запросы на уровне кластера, обеспечивая доступ к группе подов через один IP-адрес.
🟠Ingress
Обеспечивает маршрутизацию HTTP/HTTPS запросов от внешних клиентов к нужным сервисам в кластере, используя правила маршрутизации.
🟠Network Policies
Контролируют сетевой трафик между подами, ограничивая или разрешая доступ по заданным правилам.

🚩Зачем используются роуты

🟠Упрощение доступа
Services и Ingress предоставляют стабильные точки доступа к подам, упрощая взаимодействие между компонентами приложения и внешними клиентами.
🟠Безопасность
Network Policies обеспечивают контроль сетевого трафика, что помогает защитить приложение от несанкционированного доступа и атак.
🟠Балансировка нагрузки
Services типа LoadBalancer и Ingress могут распределять входящий трафик между подами, обеспечивая равномерную нагрузку и улучшая производительность.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Что такое volume и persistent volume и какие есть типы этих вольюмов?

Volume — это механизм для хранения данных контейнера вне его файловой системы, чтобы данные сохранялись между перезапусками. Persistent Volume (PV) в Kubernetes представляет собой хранилище, которое существует независимо от подов. Типы volumes включают emptyDir, hostPath, NFS, CIFS, AWS EBS, Azure Disk и PersistentVolumeClaim.

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

Шифрование переменных в CI/CD пайплайнах является критически важной задачей для обеспечения безопасности секретных данных, таких как API-ключи, пароли и другие конфиденциальные данные.

🚩Основные подходы и инструменты

Предоставляют встроенные механизмы для безопасного хранения и использования секретов.

🟠GitHub Actions
Добавление секретов в репозиторий: Перейдите в настройки репозитория (Settings) -> Secrets and variables -> Actions -> New repository secret. Добавьте новый секрет, указав имя и значение.
Использование секретов в workflow
name: CI Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use secret
run: echo ${{ secrets.MY_SECRET }}


🟠GitLab CI
Добавление переменных в GitLab: Перейдите в настройки проекта (Settings) -> CI/CD -> Variables -> Expand -> Add variable. Добавьте новую переменную, указав имя и значение, и отметьте ее как Protected и Masked.
Использование переменных в .gitlab-ci.yml
stages:
- build
build:
stage: build
script:
- echo $MY_SECRET


🟠Jenkins
Добавление секретов в Jenkins: Перейдите в настройки Jenkins -> Manage Jenkins -> Manage Credentials -> (global) -> Add Credentials. Добавьте новый секрет, указав Scope, ID и значение.
Использование секретов в Jenkins pipeline
pipeline {
agent any
environment {
MY_SECRET = credentials('my-secret-id')
}
stages {
stage('Build') {
steps {
sh 'echo $MY_SECRET'
}
}
}
}


🚩Использование сторонних инструментов для управления секретами

🟠HashiCorp Vault
Установка и настройка Vault: Запустите Vault сервер и инициализируйте его. Создайте секрет и настройте политики доступа.
Пример использования Vault в CI/CD:
Создайте и инициализируйте секрет
vault kv put secret/myapp MY_SECRET=my_secret_value    


Включите аутентификацию и предоставьте доступ CI/CD системе
vault auth enable approle
vault write auth/approle/role/my-role token_policies=my-policy


Использование секрета в GitHub Actions
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Vault
run: |
curl -o vault.zip https://releases.hashicorp.com/vault/1.8.2/vault_1.8.2_linux_amd64.zip
unzip vault.zip
sudo mv vault /usr/local/bin/
vault login ${{ secrets.VAULT_TOKEN }}
vault kv get -field=MY_SECRET secret/myapp


🚩Шифрование и расшифрование переменных вручную

🟠Использование GPG
Зашифруйте файл с переменными
gpg --symmetric --cipher-algo AES256 secrets.env    


Расшифруйте файл в CI/CD процессе
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Decrypt secrets
run: |
gpg --batch --passphrase ${{ secrets.GPG_PASSPHRASE }} -o secrets.env -d secrets.env.gpg
source secrets.env


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Какие протоколы знаешь?

Протоколы: TCP (надежная передача данных), UDP (быстрая и ненадёжная), HTTP/HTTPS (веб-протоколы), FTP (передача файлов), SMTP/IMAP/POP3 (почтовые протоколы), WebSocket (двусторонняя связь) и DNS (разрешение имён).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁8💊1
🤔 Какие ещё есть системы контейнеризации помимо докера?

🟠Podman
Без демона: Не требует отдельного демона, контейнеры работают как процессы.
Совместимость с Docker: Поддерживает Docker CLI.
rootless режим: Запуск без привилегий суперпользователя.
podman run -d --name my-container nginx


🟠CRI-O
Интеграция с Kubernetes: Оптимизирован для Kubernetes.
Легковесность: Минимальные зависимости.
Поддержка OCI: Соответствует стандартам Open Container Initiative.
criSocket: /var/run/crio/crio.sock


🟠containerd
Высокая производительность: Эффективное управление контейнерами.
Интеграция с Kubernetes: Используется напрямую через CRI.
Поддержка OCI: Полная совместимость с OCI.
ctr run -d --name my-container docker.io/library/nginx:latest


🟠LXC/LXD
Полная виртуализация ОС: Изоляция процессов, сети и файловой системы.
Управление контейнерами: Удобные инструменты для управления.
Гибкость: Поддержка различных дистрибутивов Linux.
lxc launch ubuntu:20.04 my-container


🟠Rkt
Без демона: Запуск контейнеров без постоянного демона.
Безопасность: Изолированные окружения и аутентификация.
Интеграция с Kubernetes: Альтернатива Docker в Kubernetes.
rkt run --insecure-options=image docker://nginx


🟠OpenVZ
Виртуализация на уровне ОС: Запуск изолированных виртуальных окружений.
Производительность: Минимальная изоляция для высокой производительности.
Управление ресурсами: Контроль ресурсов для каждого окружения.
vzctl create 101 --ostemplate centos-7


🟠Singularity
Фокус на HPC: Оптимизирован для научных вычислений.
rootless контейнеры: Запуск без прав суперпользователя.
Совместимость: Поддержка Docker контейнеров и OCI форматов.
singularity pull docker://nginx


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Как посмотреть размер папки на диске?

Команда du -sh <путь к папке> показывает размер папки в человеко-читаемом формате.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
🤔 Как сделать так чтобы докер при сборке образа получил динамический атрибут от CI не env а например id проекта?

🟠Podman
Без демона: Не требует отдельного демона, контейнеры работают как процессы.
Совместимость с Docker: Поддерживает Docker CLI.
rootless режим: Запуск без привилегий суперпользователя.
podman run -d --name my-container nginx


🟠CRI-O
Интеграция с Kubernetes: Оптимизирован для Kubernetes.
Легковесность: Минимальные зависимости.
Поддержка OCI: Соответствует стандартам Open Container Initiative.
criSocket: /var/run/crio/crio.sock


🟠containerd
Высокая производительность: Эффективное управление контейнерами.
Интеграция с Kubernetes: Используется напрямую через CRI.
Поддержка OCI: Полная совместимость с OCI.
ctr run -d --name my-container docker.io/library/nginx:latest


🟠LXC/LXD
Полная виртуализация ОС: Изоляция процессов, сети и файловой системы.
Управление контейнерами: Удобные инструменты для управления.
Гибкость: Поддержка различных дистрибутивов Linux.
lxc launch ubuntu:20.04 my-container


🟠Rkt
Без демона: Запуск контейнеров без постоянного демона.
Безопасность: Изолированные окружения и аутентификация.
Интеграция с Kubernetes: Альтернатива Docker в Kubernetes.
rkt run --insecure-options=image docker://nginx


🟠OpenVZ
Виртуализация на уровне ОС: Запуск изолированных виртуальных окружений.
Производительность: Минимальная изоляция для высокой производительности.
Управление ресурсами: Контроль ресурсов для каждого окружения.
vzctl create 101 --ostemplate centos-7


🟠Singularity
Фокус на HPC: Оптимизирован для научных вычислений.
rootless контейнеры: Запуск без прав суперпользователя.
Совместимость: Поддержка Docker контейнеров и OCI форматов.
singularity pull docker://nginx


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 При попытке создания файла на диске на Linux ошибка, что места нет, проверяете, место есть — с чем это может быть связано?

Ошибка может быть связана с исчерпанием inodes, ограничением прав доступа, превышением лимита пользователя или монтированием диска только для чтения.

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

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

🚩Хэндлеры

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

Определение хэндлеров в роли
# roles/my_role/handlers/main.yml
- name: restart nginx
service:
name: nginx
state: restarted


Вызов хэндлера в задаче
# roles/my_role/tasks/main.yml
- name: Copy nginx configuration file
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify:
- restart nginx


🚩Шаблоны в Ansible

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

Определение шаблона
# roles/my_role/templates/nginx.conf.j2
server {
listen 80;
server_name {{ server_name }};
location / {
proxy_pass http://{{ proxy_pass }};
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}


Использование шаблона в задаче
# roles/my_role/tasks/main.yml
- name: Generate nginx configuration from template
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
vars:
server_name: "example.com"
proxy_pass: "127.0.0.1:8080"
notify:
- restart nginx


🚩Опыт использования

1⃣Автоматизация развертывания веб-серверов
В проектах автоматизации развертывания веб-серверов я использовал хэндлеры для перезапуска служб после обновления конфигурационных файлов. Шаблоны позволяли гибко настраивать конфигурации для различных окружений (development, staging, production).

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

3⃣Обновление систем и пакетов
Использование хэндлеров для перезагрузки служб после установки или обновления пакетов. Например, перезапуск Apache после установки новых модулей или обновления конфигурации.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
🤔 Когда используется UDP?

UDP используется, когда важна скорость и допустима потеря данных, например, в стриминге, видеозвонках, DNS-запросах и онлайн-играх.

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

В Ansible плейбуки и роли могут быть запущены различными способами в зависимости от контекста и требований. Основные методы включают использование командной строки, автоматизацию через CI/CD системы и запуск через API. Вот описание основных способов запуска плейбуков и ролей:

🚩Запуск через командную строку

Самый распространенный и прямолинейный способ запуска плейбуков и ролей — это использование командной строки с командой ansible-playbook.

Запуск плейбука
ansible-playbook site.yml  


Запуск плейбука с указанием инвентарного файла
ansible-playbook -i inventory/hosts site.yml  


Запуск плейбука с переменными
ansible-playbook -i inventory/hosts site.yml -e "variable1=value1 variable2=value2"  


Запуск определенной роли в плейбуке
Плейбук
# site.yml
- hosts: all
roles:
- role: my_role


Команда
ansible-playbook -i inventory/hosts site.yml  


🚩Запуск через CI/CD системы

Многие современные проекты используют CI/CD системы, такие как Jenkins, GitLab CI, GitHub Actions и другие для автоматизации процесса развертывания и тестирования. Ansible легко интегрируется с такими системами.
Jenkins Pipeline
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sh 'ansible-playbook -i inventory/hosts site.yml'
}
}
}
}


🟠Пример запуска через GitLab CI

.gitlab-ci.yml
stages:
- deploy

deploy:
stage: deploy
script:
- ansible-playbook -i inventory/hosts site.yml


🟠Запуск через Ansible Tower или AWX
Ansible Tower (коммерческий продукт) и AWX (open-source версия Ansible Tower) предоставляют веб-интерфейс и API для управления и автоматизации Ansible задач.

🚩Пример запуска через Ansible Tower/AWX

🟠Создание Job Template
В веб-интерфейсе Ansible Tower или AWX создайте новый шаблон задания (Job Template), укажите плейбук и инвентарь.
🟠Запуск задания:
Запустите задание через веб-интерфейс или API.

Запуск через API
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"inventory": "1", "job_template": "1"}' \
http://tower.example.com/api/v2/job_templates/1/launch/


Пример плейбука site.yml
# site.yml
- hosts: all
roles:
- role: my_role


Запуск через командную строку
ansible-playbook -i inventory/hosts site.yml


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🤔 Как уменьшить размер Docker image?

Чтобы уменьшить размер Docker image, используйте минимальные базовые образы (например, alpine), удаляйте временные файлы после сборки, объединяйте команды в Dockerfile и избегайте ненужных зависимостей.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Если у вас много машин и нет ansible и питона как будете устанавливать?

Если у вас много машин и нет Ansible и Python, можно использовать несколько подходов для автоматической установки этих инструментов.

🚩Методы

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

1⃣Создайте скрипт для установки Python и Ansible
#!/bin/bash

# Установка Python
sudo apt update
sudo apt install -y python3 python3-pip

# Установка Ansible
pip3 install ansible


2⃣Создайте скрипт для выполнения установки на удалённых машинах
#!/bin/bash

# Список IP-адресов или хостнеймов машин
HOSTS=("host1" "host2" "host3")

# Путь к скрипту установки
INSTALL_SCRIPT="install_ansible.sh"

# Копирование скрипта и выполнение на удалённых машинах
for HOST in "${HOSTS[@]}"; do
scp $INSTALL_SCRIPT $HOST:/tmp/
ssh $HOST "bash /tmp/$INSTALL_SCRIPT"
done


🟠Использование `cloud-init` (для облачных машин)
Если вы используете облачные машины, такие как AWS, Azure или Google Cloud, можно использовать cloud-init для автоматической установки Python и Ansible при создании машин.
Пример cloud-init конфигурации
#cloud-config
packages:
- python3
- python3-pip

runcmd:
- pip3 install ansible


🟠Использование Fabric
Это инструмент для выполнения команд на удалённых серверах по SSH, который можно использовать для автоматизации установки Python и Ansible.
Установка Fabric
pip install fabric


Пример использования Fabric
from fabric import Connection

# Список хостов
hosts = ["host1", "host2", "host3"]

# Команды для выполнения
commands = [
"sudo apt update",
"sudo apt install -y python3 python3-pip",
"pip3 install ansible"
]

# Выполнение команд на каждом хосте
for host in hosts:
conn = Connection(host)
for command in commands:
conn.run(command)


Запустите скрипт:
python deploy.py


🟠Использование pdsh (Parallel Distributed Shell)
Это утилита для параллельного выполнения команд на нескольких хостах.
Установка pdsh
sudo apt install pdsh


Пример использования pdsh
# Список хостов
HOSTS="host1,host2,host3"

# Команды для выполнения
pdsh -w $HOSTS "sudo apt update && sudo apt install -y python3 python3-pip"
pdsh -w $HOSTS "pip3 install ansible"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😁1
🤔 На каких технологиях базируется контейнеризация, Docker в том числе?

Контейнеризация базируется на технологиях виртуализации на уровне ОС, таких как cgroups и namespaces, предоставляемых ядром Linux. cgroups управляют ресурсами (CPU, память), а namespaces изолируют процессы. Docker также использует OverlayFS для управления файловыми системами контейнеров. Вместе эти технологии обеспечивают лёгкую изоляцию и портативность.

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

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

🚩Prometheus

Это мощный инструмент для мониторинга и алертинга, который собирает метрики с приложений и систем. Prometheus использует язык запросов PromQL для анализа и генерации алертов.

🚩Установка и настройка Prometheus

1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.ym


2⃣Конфигурация prometheus.yml
global:
scrape_interval: 15s

scrape_configs:
- job_name: 'my_application'
static_configs:
- targets: ['localhost:9090']


3⃣Экспортеры для сбора метрик
Node Exporter для системных метрик Приложения могут использовать библиотеки клиента для передачи метрик (например, prometheus_client для Python)

🚩Grafana

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

🚩Установка и настройка Grafana

1⃣Установка Grafana
wget https://dl.grafana.com/oss/release/grafana-7.4.3.linux-amd64.tar.gz
tar -zxvf grafana-7.4.3.linux-amd64.tar.gz
cd grafana-7.4.3/bin
./grafana-server


2⃣Добавление источника данных
В веб-интерфейсе Grafana добавьте Prometheus как источник данных.
Создайте дашборды и панели для визуализации метрик.

3⃣Alertmanager
Alertmanager управляет алертами, отправляемыми Prometheus, и позволяет настраивать правила алертинга и маршрутизации.

🚩Конфигурация Alertmanager

1⃣Конфигурация alertmanager.yml
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alertmanager@example.com'

route:
receiver: 'email-alert'

receivers:
- name: 'email-alert'
email_configs:
- to: 'team@example.com'


ELK Stack используется для сбора, анализа и визуализации логов.

🚩Основные компоненты

🟠Elasticsearch
Хранение и поиск логов.
🟠Logstash
Сбор, обработка и преобразование логов.

🚩Установка и настройка ELK Stack

1⃣Установка Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.11.2-linux-x86_64.tar.gz
cd elasticsearch-7.11.2
./bin/elasticsearch


2⃣Установка Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.11.2-linux-x86_64.tar.gz
tar -xzf logstash-7.11.2-linux-x86_64.tar.gz
cd logstash-7.11.2
./bin/logstash -f logstash.conf


3⃣Установка Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.11.2-linux-x86_64.tar.gz
tar -xzf kibana-7.11.2-linux-x86_64.tar.gz
cd kibana-7.11.2
./bin/kibana


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Что такое service monitor в Kubernetes?

ServiceMonitor — это объект в Kubernetes, используемый в связке с Prometheus для мониторинга сервисов. Он определяет, какие эндпоинты и метрики должны собираться Prometheus. Это часть системы мониторинга, которая позволяет автоматизировать сбор данных о состоянии сервисов.

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

Это файловая система, которая может увеличивать количество inode по мере необходимости, вместо того чтобы фиксировать их количество при создании. Такой подход позволяет более эффективно использовать дисковое пространство и избегать ситуаций, когда inode заканчиваются, хотя на диске еще достаточно свободного места.

🚩XFS

🟠Динамическое управление inode
XFS не фиксирует количество inode при создании файловой системы. Inode выделяются по мере необходимости из свободного дискового пространства, что позволяет более гибко и эффективно использовать ресурсы.

🟠Высокая производительность
XFS разработана для высокопроизводительных операций ввода-вывода и хорошо подходит для больших файлов и файловых систем.

🟠Журналирование
XFS использует журналирование для повышения надежности и быстрого восстановления после сбоев.

🟠Поддержка больших файлов и файловых систем
XFS может управлять очень большими файлами и файловыми системами (до нескольких петабайт).

🟠Дефрагментация и оптимизация
Встроенные средства для дефрагментации и оптимизации файловой системы позволяют поддерживать высокую производительность.

🟠Пример создания XFS файловой системы
Для создания файловой системы XFS на разделе /dev/sdX1, можно использовать команду mkfs.xfs
mkfs.xfs /dev/sdX1


🟠Пример монтирования XFS файловой системы
После создания файловой системы ее можно смонтировать
mount /dev/sdX1 /mnt/myxfs


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41
🤔 Что такое squash в Docker?

squash — это процесс объединения всех слоёв Docker-образа в один. Это уменьшает количество слоёв, упрощает образ и может ускорить развертывание. Однако использование squash делает процесс сборки менее гибким из-за потери промежуточных слоёв.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6