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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Какой командой мы можем отследить маршрут от одного хоста к другому?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊39🤔11🔥2
🤔 Приведи пример изменяемых и неизменяемых типах данных?

В Python типы данных делятся на изменяемые (mutable) и неизменяемые (immutable) в зависимости от того, можно ли изменить их содержимое после создания.

🚩Изменяемые типы данных (mutable)

Это те, содержимое которых можно менять после создания объекта, не создавая новый объект.

Списки (list)
my_list = [1, 2, 3]
my_list.append(4) # Добавляем элемент
print(my_list) # [1, 2, 3, 4]


Словари (dict)
my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3 # Добавляем ключ-значение
print(my_dict) # {'a': 1, 'b': 2, 'c': 3}


Множества (set)
my_set = {1, 2, 3}
my_set.add(4) # Добавляем элемент
print(my_set) # {1, 2, 3, 4}


🚩Неизменяемые типы данных (immutable)

Неизменяемые типы данных нельзя изменить после их создания. Любая операция, изменяющая объект, приводит к созданию нового объекта.

Кортежи (tuple)
my_tuple = (1, 2, 3)
# my_tuple[0] = 0 # Ошибка: TypeError
print(my_tuple) # (1, 2, 3)


Строки (str)
my_string = "Hello"
# my_string[0] = "h" # Ошибка: TypeError
new_string = my_string.replace("H", "h")
print(new_string) # "hello"


Числа (int, float, complex)
x = 42
x += 1 # Создается новый объект
print(x) # 43


Неизменяемые множества (frozenset)
my_frozenset = frozenset([1, 2, 3])
# my_frozenset.add(4) # Ошибка: AttributeError
print(my_frozenset) # frozenset({1, 2, 3})



🚩Почему это важно?

🟠Оптимизация памяти
Неизменяемые объекты могут использоваться многократно без создания новых копий.
🟠Безопасность
Неизменяемые объекты защищены от изменений, что важно для многопоточных программ.
🟠Функциональное программирование
Неизменяемость — основа для предсказуемого поведения кода.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3
🤔 Какие переменные в приоритете: в файле defaults или playbooks?

Переменные из playbook (определенные в vars) имеют более высокий приоритет, чем переменные из defaults внутри роли. defaults используются для значений по умолчанию, которые могут быть переопределены в других местах.


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

Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов.

🚩Что делает readiness-проба?

Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service).

🚩Основные последствия

🟠Под не будет получать трафик через Service
Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под.

🟠Под продолжает работать
Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым.

🟠Нет влияния на liveness-пробу
Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность".

🟠Аварийное поведение приложения может быть скрыто
Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик.

🚩Как это выглядит на практике?

Пример readiness-пробы
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-container
image: nginx
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10


🚩Сценарий

🟠На старте
После создания пода Kubernetes ждет initialDelaySeconds (5 секунд) перед выполнением первой проверки. Если / не отвечает на HTTP-запрос, под считается не готовым.

🟠Если проба продолжает проваливаться
Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые periodSeconds (10 секунд), пока под не станет готовым.

🚩Что произойдет с трафиком?

Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов.
Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы.

🚩Как это помогает?

🟠Обеспечивает стабильность приложения
Под начинает обрабатывать трафик только после полной инициализации.

🟠Улучшает отказоустойчивость
В случае проблем с подом система перенаправляет запросы на другие экземпляры.

🟠Поддерживает обновления без простоя
Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Какой синтаксис INSERT, SELECT в SQL?

Для вставки данных используется оператор INSERT в виде INSERT INTO table_name (column1, column2) VALUES (value1, value2);. Для выборки данных используется SELECT, например: SELECT column1, column2 FROM table_name WHERE condition;. Можно добавлять сортировку через ORDER BY, фильтры через WHERE, объединения через JOIN, и группировку с GROUP BY.


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

Firewall (брандмауэр) — это общее понятие, означающее систему фильтрации сетевого трафика.
iptables — это конкретный инструмент (утилита) для управления брандмауэром в Linux.

🚩Что такое firewall?

Firewall (брандмауэр) — это система фильтрации трафика, которая пропускает или блокирует пакеты на основе правил.
Аппаратным (Cisco ASA, FortiGate, Palo Alto).
Программным (UFW, firewalld, iptables).
Облачным (AWS Security Groups, Azure Firewall).

🚩Что такое iptables?

iptables — это утилита для настройки брандмауэра в Linux.
Ключевая особенность: iptables работает на основе **таблиц и цепочек правил.

Пример команды iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # Разрешить SSH (22 порт)
iptables -A INPUT -p tcp --dport 80 -j DROP # Заблокировать HTTP (80 порт)


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Чем отличается горизонтальное масштабирование от вертикального?

Горизонтальное масштабирование означает добавление новых копий сервисов, тогда как вертикальное — это увеличение объёма ресурсов у уже существующего инстанса. Первый тип обеспечивает отказоустойчивость, второй ограничен ресурсами машины.


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

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

🚩Шаги для деплоя

1⃣Подготовка Docker-образа
Первый шаг — подготовить Docker-образ приложения. Пример Dockerfile
# Используем официальный образ Python
FROM python:3.8-slim

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

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

# Устанавливаем зависимости
RUN pip install --no-cache-dir -r requirements.txt

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


Создание и загрузка Docker-образа в Docker Hub
docker build -t username/myapp:latest .
docker push username/myapp:latest


2⃣Создание конфигурационных файлов Kubernetes
Для развертывания приложения на Kubernetes, необходимо создать манифесты для деплоя (Deployment), сервиса (Service) и других необходимых ресурсов. Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: username/myapp:latest
ports:
- containerPort: 80


Service
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80


3⃣Применение конфигураций
Применение манифестов для создания ресурсов в кластере Kubernetes:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml


4⃣Проверка статуса
Проверка статуса развертывания и сервисов:
kubectl get deployments
kubectl get services
kubectl get pods


5⃣Настройка автоскейлинга (по желанию)
Для обеспечения высокой доступности и масштабируемости можно настроить горизонтальное авто-масштабирование:
kubectl autoscale deployment myapp-deployment --cpu-percent=50 --min=1 --max=10


6⃣Обновление приложения
Для обновления приложения необходимо изменить образ в деплойменте и применить изменения:
Обновление Docker-образа
docker build -t username/myapp:v2 .
docker push username/myapp:v2


Обновление манифеста Deployment
spec:
template:
spec:
containers:
- name: myapp
image: username/myapp:v2


Применение изменений
kubectl apply -f deployment.yaml


🚩Пример полного пайплайна

Пример .gitlab-ci.yml для автоматизации деплоя
stages:
- build
- push
- deploy

variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG

build:
stage: build
script:
- docker build -t $DOCKER_IMAGE .
only:
- main

push:
stage: push
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $DOCKER_IMAGE
only:
- main

deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
- kubectl apply -f service.yaml
only:
- main


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

Роли в Ansible позволяют:
- Структурировать код по компонентам (nginx, db, app)
- Переиспользовать код между проектами
- Хранить переменные, задачи, шаблоны отдельно
- Упрощают поддержку и читаемость плейбуков
Каждая роль — это изолированный модуль, что делает инфраструктуру более модульной и расширяемой.


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

Когда под (Pod) не работает или ведёт себя странно, нужно уметь его дебажить.

🟠Проверить статус пода
Сначала смотрим, работает ли под вообще
kubectl get pods


🟠Посмотреть логи контейнера
Если под запустился, но работает странно, смотрим логи:
kubectl logs pod-name


Если в поде несколько контейнеров:
kubectl logs pod-name -c container-name

Если под перезапускается, а нам нужны старые логи:
kubectl logs pod-name --previous


🟠Проверить события (`describe`)
Смотрим подробную информацию о поде:
kubectl describe pod pod-name


🟠Зайти внутрь контейнера (`exec`)
Если под запущен, можно подключиться внутрь и посмотреть файлы, процессы:
kubectl exec -it pod-name -- /bin/sh


Если в контейнере есть только bash:
kubectl exec -it pod-name -- /bin/bash


Полезные команды внутри контейнера:
ps aux           # Смотрим запущенные процессы  
netstat -tulnp # Проверяем открытые порты
env # Проверяем переменные окружения
cat /etc/resolv.conf # Проверяем DNS


🟠Проверить манифест пода (`get pod -o yaml`)
Если под ведёт себя странно, можно посмотреть его полное описание:
kubectl get pod pod-name -o yaml


🟠Проверить ресурсы (describe node)
Иногда под не запускается из-за нехватки CPU или памяти. Проверяем узел (node):
kubectl describe node node-name


Если проблема с ресурсами, будет что-то вроде:
Warning  FailedScheduling  insufficient memory


🟠Проверить сеть (`nslookup`, `ping`, `curl`)
Если под не может достучаться до сервиса, тестируем сеть:
kubectl exec -it pod-name -- nslookup service-name
kubectl exec -it pod-name -- ping 8.8.8.8
kubectl exec -it pod-name -- curl http://service-name:8080


🟠Дебажить с помощью `kubectl debug` (Kubernetes 1.23+)
Если под не стартует, можно запустить дебажный контейнер
kubectl debug pod-name -it --image=busybox


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

Unix — это семейство операционных систем, разработанное как многозадачная, многопользовательская система. Он стал основой для многих других ОС (Linux, BSD, macOS) и задал стандарты в системной архитектуре и командной строке.


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

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

🚩IaaS (Infrastructure as a Service)

IaaS предоставляет инфраструктуру как услугу. Пользователь получает доступ к виртуализированным вычислительным ресурсам, таким как серверы, хранилища, сети и операционные системы.

🟠Что предоставляет
Виртуальные машины, диски, сетевые ресурсы и другие элементы инфраструктуры.

🟠Примеры провайдеров
AWS EC2, Google Compute Engine, Microsoft Azure VMs.

🟠Что делает пользователь
Настраивает операционные системы, устанавливает ПО, управляет сетью и обеспечивает безопасность.

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

🚩Плюсы и минусы

Высокая гибкость и контроль.
Подходит для создания кастомных решений.
Требуется больше времени и усилий на настройку и управление.

🚩PaaS (Platform as a Service)

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

🟠Что предоставляет
Среду для разработки, включая операционную систему, базы данных, серверы приложений, инструменты разработки и т. д.

🟠Примеры провайдеров
AWS Elastic Beanstalk, Google App Engine, Heroku, Microsoft Azure App Service.

🟠Что делает пользователь
Пишет код, тестирует приложения и развертывает их на платформе.

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

🚩Плюсы и минусы

Быстрое развертывание приложений.
Не нужно беспокоиться об управлении инфраструктурой.
Ограниченная гибкость по сравнению с IaaS.
Зависимость от поставщика платформы.

🚩SaaS (Software as a Service)

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

🟠Что предоставляет
Полностью готовое приложение, доступное через браузер или клиентскую программу.

🟠Примеры провайдеров
Gmail, Microsoft 365, Google Drive, Salesforce, Slack.

🟠Что делает пользователь
Пользуется функциональностью приложения, не заботясь о технической стороне.

🟠Пример использования
Организация использует Google Workspace для корпоративной электронной почты и совместной работы.

🚩Плюсы и минусы

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊1
🤔 Как убрать нагрузку с Database Server?

- Вынести кэш в Redis/Memcached;
- Реплицировать базу и направить SELECT-запросы на слейвы;
- Использовать шардинг;
- Оптимизировать запросы и индексы;
- Перевести тяжёлые отчёты в async-процессы.


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

Чтобы мониторить Docker-контейнеры, нужно отслеживать ключевые метрики, которые помогут определить нагрузку, утечки памяти, падения контейнеров и проблемы с сетью.
CPU (Нагрузка на процессор)
Memory (Использование памяти)
Network (Сетевой трафик)
Disk I/O (Диск и файловая система)
Container Lifecycle (Состояние контейнеров)

🟠CPU (Загрузка процессора)
% использования CPU контейнером
% CPU в системе и пользователе
Throttling (ограничение CPU)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}"


Метрика в Prometheus (cadvisor)
rate(container_cpu_usage_seconds_total{name="my-container"}[5m]) * 100


🟠Memory (Использование памяти)
RSS (реальная память, используемая процессами)
Cache (используемая кэшированная память)
OOM (Out of Memory kills)
docker stats --format "table {{.Name}}\t{{.MemUsage}}"


Метрика в Prometheus
container_memory_usage_bytes{name="my-container"}


🟠Network (Сетевой трафик)
Rx/Tx Bytes (входящий и исходящий трафик)
Количество соединений
docker stats --format "table {{.Name}}\t{{.NetIO}}"


Метрика в Prometheus
rate(container_network_transmit_bytes_total{name="my-container"}[5m])


🟠Disk I/O (Чтение/запись на диск)
Количество операций чтения/записи
Объем данных, записанных/прочитанных контейнером
docker stats --format "table {{.Name}}\t{{.BlockIO}}"


Метрика в Prometheus
rate(container_fs_writes_bytes_total{name="my-container"}[5m])


🟠Container Lifecycle (Состояние контейнеров)
Перезапуски контейнера (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
👍8
🤔 В чём различия разделов во free?

- total — общее количество памяти;
- used — занято (включая кеши и буферы);
- free — физически свободно;
- shared — используется совместно;
- buff/cache — используется системой под буферы и кэш;
- available — сколько реально доступно для новых программ без вытеснения.


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

Коды ответа (HTTP status codes) от веб-сервера представляют собой числовые коды, которые отправляются клиенту (обычно веб-браузеру) в ответ на его запрос. Эти коды помогают клиенту понять, что произошло с его запросом: был ли он успешен, произошла ли ошибка, требуется ли дополнительное действие и т.д.

🚩HTTP-коды ответа разделены на пять основных категорий:

🟠1xx (Информационные):
Запрос принят, продолжается обработка.
100 Continue: Сервер получил начальную часть запроса, и клиент должен продолжать.
101 Switching Protocols: Сервер принимает запрос на изменение протокола.

🟠2xx (Успех):
Запрос успешно обработан.
200 OK: Запрос успешно обработан, и сервер возвращает запрошенные данные.
201 Created: Запрос успешно выполнен, и в результате создан новый ресурс.
202 Accepted: Запрос принят для обработки, но обработка еще не завершена.
204 No Content: Запрос успешно выполнен, но сервер не возвращает никакого содержимого.

🟠3xx (Перенаправление):
Для завершения обработки запроса требуется дальнейшее действие со стороны клиента.
301 Moved Permanently: Запрашиваемый ресурс был перемещен на новый постоянный URL.
302 Found: Запрашиваемый ресурс временно доступен по другому URL.
304 Not Modified: Запрашиваемый ресурс не изменился со времени последнего доступа (кэширование).
307 Temporary Redirect: Запрашиваемый ресурс временно доступен по другому URL. Клиент должен использовать исходный метод для нового запроса.

🟠4xx (Ошибка клиента):
Ошибка в запросе клиента.
400 Bad Request: Сервер не может обработать запрос из-за неверного синтаксиса.
401 Unauthorized: Запрос требует аутентификации.
403 Forbidden: Сервер понял запрос, но отказывается его выполнять.
404 Not Found: Запрашиваемый ресурс не найден на сервере.
405 Method Not Allowed: Метод, указанный в запросе, не разрешен для запрашиваемого ресурса.
409 Conflict: Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.

🟠5xx (Ошибка сервера):
Ошибка на стороне сервера при попытке обработки запроса.
500 Internal Server Error: Общая ошибка сервера. Сервер не может выполнить запрос.
501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
502 Bad Gateway: Сервер, действуя как шлюз или прокси, получил неверный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно недоступен, обычно из-за перегрузки или технического обслуживания.
504 Gateway Timeout: Сервер, действуя как шлюз или прокси, не дождался ответа от вышестоящего сервера.

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

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

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

Для определения размера узла (node) в кластере Kubernetes необходимо собрать информацию о различных ресурсах, таких как количество процессоров (CPU), объем оперативной памяти (RAM) и объем дискового пространства, доступные на узле. Эти данные можно получить с помощью команды kubectl.

🚩Шаги для определения размера узла

🟠Получение списка узлов
Для начала необходимо получить список узлов в кластере:
kubectl get nodes


🟠Получение информации о ресурсе узла
Для каждого узла из списка можно получить подробную информацию о ресурсах с помощью команды kubectl describe node <node-name>:
kubectl describe node <node-name>


🟠Получение информации о ресурсах узлов в формате JSON/YAML
Чтобы получить информацию о ресурсах узлов в удобном для обработки формате (JSON или YAML), можно использовать команду kubectl get node <node-name> -o json или kubectl get node <node-name> -o yaml:
kubectl get node <node-name> -o json


Пример вывода команды
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "node1"
},
"status": {
"capacity": {
"cpu": "4",
"memory": "16384000Ki",
"ephemeral-storage": "100Gi"
},
"allocatable": {
"cpu": "4",
"memory": "16334000Ki",
"ephemeral-storage": "98Gi"
}
}
}


🚩Расчет размера узла

- CPU: Количество процессоров.
- Memory: Объем оперативной памяти (в Ki, где 1 Ki = 1024 байт).
- Ephemeral Storage: Объем временного дискового пространства.
Допустим, узел имеет следующие ресурсы:
- CPU: 4
- Memory: 16334000Ki (примерно 15.58 GiB)
- Ephemeral Storage: 98Gi

🚩Конвертация памяти

Память в Kubernetes часто указывается в КиБ (Kibibytes). Для конвертации в гигабайты (GiB) используется следующая формула:
\text{Memory (GiB)} = \frac{\text{Memory (KiB)}}{1024 \times 1024}
Пример:
\text{Memory (GiB)} = \frac{16334000}{1024 \times 1024} \approx 15.58

🚩Объединение всех данных

В результате, размер узла можно представить как:
CPU: 4
Memory: 15.58 GiB
Ephemeral Storage: 98 GiB

🚩Пример команд для автоматизации

Если необходимо собрать и обработать данные для всех узлов в кластере, можно использовать скрипт. Например, на bash с использованием jq для обработки JSON:
#!/bin/bash

nodes=$(kubectl get nodes -o json | jq -r '.items[].metadata.name')

for node in $nodes; do
echo "Node: $node"
kubectl get node $node -o json | jq '.status.capacity, .status.allocatable'
echo ""
done


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊2
🤔 Рекомендуется ли GitLab, GitHub для хранения state file?

Нет, не рекомендуется. terraform.tfstate не должен храниться в Git или системах контроля версий, потому что:
- Он может содержать чувствительные данные (пароли, IP, токены).
- Возможны конфликты при одновременной работе.
- Отсутствует блокировка (lock) на время операций.
Рекомендуемые варианты:
- Terraform Cloud / Enterprise
- Remote backends: S3 с DynamoDB для блокировки, Azure Blob, GCS
- Использование lock-механизмов и шифрования


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

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

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

🟠Sandbox
Это изолированная среда, где настраиваются сетевые интерфейсы контейнера, такие как IP-адреса, маршруты и DNS. Что включает: veth-пара интерфейсов (виртуальный Ethernet): соединяет контейнер с внешней сетью. Конфигурации маршрутов и сетевых правил.

🟠Endpoint
Точка подключения контейнера к сети. Функции: Обеспечивает контейнеру связь с другими контейнерами или внешними сетями. Соединяет Sandbox с Network.

🟠Network
Логическая сущность, объединяющая Endpoints для обеспечения взаимодействия контейнеров. Типы сетей в Docker:
bridge: Локальная сеть, позволяющая контейнерам взаимодействовать на одном хосте.
host: Контейнеры используют сетевой стек хоста без изоляции.
none: Сеть отключена; контейнер полностью изолирован.
overlay: Распределенная сеть для связи контейнеров на разных хостах.
macvlan: Контейнеры получают прямой доступ к физической сети.

🚩Как это работает в Docker

Создается Sandbox, где настраиваются сетевые параметры контейнера.
Создается Endpoint, который подключает контейнер к выбранной сети.
Endpoint добавляется в Network, что позволяет контейнеру взаимодействовать с другими узлами.

🚩Плюсы

Гибкость
Легко подключать контейнеры к различным типам сетей.
Изоляция
Обеспечивает безопасность, изолируя сетевые пространства контейнеров.
Расширяемость
CNM поддерживает сторонние плагины для интеграции с другими сетевыми решениями (например, Calico, Flannel).
Управляемость
Позволяет контролировать настройки сети через команды Docker.

🚩Пример создания сети

1⃣Создание сети
docker network create my_bridge


2⃣Подключение контейнера к сети
docker run --network my_bridge -d nginx


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