Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Из каких компонентов состоит k8s и каково их назначение?
Kubernetes (K8s) включает в себя плоскость управления и плоскость данных.
Плоскость управления — это уровень управления, который работает на узлах, называемых главными узлами, и может работать в конфигурации с одним главным узлом или несколькими главными узлами.
Плоскость управления включает в себя:
— ETCD: хранилище конфигурации кластера
— Kubernetes API: предоставляет API для взаимодействия между компонентами K8s и клиентами внутри и вне кластера
— Kubernetes controller manager: реализует контроллеры, управляющие основными сущностями кластера, такими как контроллер узлов, контроллер задач и контроллер срезов конечных точек
— Kubernetes scheduler: выбирает узлы, на которых будут запускаться POD
— cloud controller manager: используется для реализации функций, специфичных для работы с облаком (если кластер K8s работает в облачной среде)
Плоскость данных состоит из компонентов, работающих на каждом узле:
— kubelet: отслеживает изменения конфигурации узла, применяет изменения конфигурации, выполняет проверки контейнера, сообщает о статусе контейнера, работает с плагином CRI и обеспечивает функции запуска и остановки контейнера
— kube-proxy: отвечает за сетевой компонент, работает с плагином CNI и обеспечивает работу сущности «сервис» на своем узле.
Kubernetes (K8s) включает в себя плоскость управления и плоскость данных.
Плоскость управления — это уровень управления, который работает на узлах, называемых главными узлами, и может работать в конфигурации с одним главным узлом или несколькими главными узлами.
Плоскость управления включает в себя:
— ETCD: хранилище конфигурации кластера
— Kubernetes API: предоставляет API для взаимодействия между компонентами K8s и клиентами внутри и вне кластера
— Kubernetes controller manager: реализует контроллеры, управляющие основными сущностями кластера, такими как контроллер узлов, контроллер задач и контроллер срезов конечных точек
— Kubernetes scheduler: выбирает узлы, на которых будут запускаться POD
— cloud controller manager: используется для реализации функций, специфичных для работы с облаком (если кластер K8s работает в облачной среде)
Плоскость данных состоит из компонентов, работающих на каждом узле:
— kubelet: отслеживает изменения конфигурации узла, применяет изменения конфигурации, выполняет проверки контейнера, сообщает о статусе контейнера, работает с плагином CRI и обеспечивает функции запуска и остановки контейнера
— kube-proxy: отвечает за сетевой компонент, работает с плагином CNI и обеспечивает работу сущности «сервис» на своем узле.
❤13👍2❤🔥1🥰1
🏛️🏛️ DbGate — open-source менеджер SQL и NoSQL БД
Это кроссплатформенный менеджер БД. Разработан, чтобы быть простым в использовании и эффективным при работе с несколькими базами одновременно.
Также имеет множество дополнительных функций, таких как сравнение схем, визуальный конструктор запросов, визуализация графиков или пакетный экспорт и импорт.
Поддерживает MySQL, PostgreSQL, SQL Server, MongoDB, SQLite.
Работает под Windows, Linux, Mac и как веб-приложение.
Исходники тут
#софт
Это кроссплатформенный менеджер БД. Разработан, чтобы быть простым в использовании и эффективным при работе с несколькими базами одновременно.
Также имеет множество дополнительных функций, таких как сравнение схем, визуальный конструктор запросов, визуализация графиков или пакетный экспорт и импорт.
Поддерживает MySQL, PostgreSQL, SQL Server, MongoDB, SQLite.
Работает под Windows, Linux, Mac и как веб-приложение.
Исходники тут
#софт
❤13👍8❤🔥5👏2🥰1
🧑🔬🧑🔬 Опыты в домашней лаборатории: собственный Let's Encrypt в OpenWRT
Приведенные ниже шаги довольно инвазивны и не гарантируют успех; возможно, сначала стоит их протестировать на виртуальном OpenWrt роутере. Автор начинает сразу после настройки динамических обновлений DNS зон в OpenWRT, но этот гайд самодостаточен, если у вас уже есть контроль над разрешением имен в вашей сети.
Продолжение тут
#гайд
Приведенные ниже шаги довольно инвазивны и не гарантируют успех; возможно, сначала стоит их протестировать на виртуальном OpenWrt роутере. Автор начинает сразу после настройки динамических обновлений DNS зон в OpenWRT, но этот гайд самодостаточен, если у вас уже есть контроль над разрешением имен в вашей сети.
Продолжение тут
#гайд
❤13🔥1🥰1
Очередной #дайджест для DevOps-ов
➕ Миграция в облако быстро и без ошибок — часть 3: миграция кластера Kubernetes
➕ Overmind CLI — мощный инструмент для анализа влияния изменений Terraform в режиме реального времени
➕ Уменьшение нагрузки с помощью node_systemd_unit_state — решение не устраняет проблему полностью, но уменьшает ее в 5 раз, что более чем достаточно для большинства практических целей.
➕ Гайд по деплою web-приложений для новичков — в статье пошагово рассматривается самый простой вариант деплоя приложения на хостинг
➕ Попрощайтесь с простоями — простое обновление PostgreSQL с 14 до 16 с помощью pg_upgrade
➕ Миграция в облако быстро и без ошибок — часть 3: миграция кластера Kubernetes
➕ Overmind CLI — мощный инструмент для анализа влияния изменений Terraform в режиме реального времени
➕ Уменьшение нагрузки с помощью node_systemd_unit_state — решение не устраняет проблему полностью, но уменьшает ее в 5 раз, что более чем достаточно для большинства практических целей.
➕ Гайд по деплою web-приложений для новичков — в статье пошагово рассматривается самый простой вариант деплоя приложения на хостинг
➕ Попрощайтесь с простоями — простое обновление PostgreSQL с 14 до 16 с помощью pg_upgrade
❤🔥12🥰4👍2
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Допустим, у вас есть YAML-файл, в котором описаны deployment и service. Вы вводите команду kubectl create -f file.yaml . Как можно подробнее опишите, что произойдёт после нажатия клавиши Enter.
В начале операции утилита kubectl будет искать и анализировать kubeconfig, извлекая оттуда данные о адресе Kubernetes API, сертификатах для проверки, и ключе доступа. Затем она отправит запрос.
API Kubernetes будет обрабатывать запрос, аутентифицировать пользователя, учитывая его права, и, в случае соответствия правам, сохранять информацию о новом развёртывании (deployment) и сервисе (service) в ETCD.
Контроллер Kubernetes узнает о созданном deployment и, используя Kubernetes API, запишет информацию в ETCD о replicaset и создаст необходимое количество PODов. В этот момент могут быть задействованы admission controller’ы для проверки корректности PODов или их преобразования.
Контроллер Kubernetes будет обнаруживать новые POD'ы и автоматически распределять их по узлам, учитывая их параметры, необходимые ресурсы, специфические требования к узлам (nodeSelector), а также другие настройки, такие как taints/tolerations, podAntiAffinity и т.д.
Kubelet, просматривая изменения в конфигурации ноды через Kubernetes API, начнет вносить изменения: запустит контейнеры через CRI, настроит сеть через kube-proxy, выполнит пробы и, по прохождении проб, изменит статус POD’а в ETCD на Ready через Kubernetes API.
Контроллер Kubernetes увидит готовые PODы, соответствующие service, и создаст записи о новых Endpoint’ах для соответствующих PODов.
Kubelet’ы на всех нодах кластера увидят изменения в конфигурации и вызовут kube-proxy для создания Endpoint’ов.
Kube-proxy вызовет CNI-плагины, которые реализуют Endpoint’ы на уровне инфраструктуры.
При обращении к сервису трафик будет направлен на новые поды.
В начале операции утилита kubectl будет искать и анализировать kubeconfig, извлекая оттуда данные о адресе Kubernetes API, сертификатах для проверки, и ключе доступа. Затем она отправит запрос.
API Kubernetes будет обрабатывать запрос, аутентифицировать пользователя, учитывая его права, и, в случае соответствия правам, сохранять информацию о новом развёртывании (deployment) и сервисе (service) в ETCD.
Контроллер Kubernetes узнает о созданном deployment и, используя Kubernetes API, запишет информацию в ETCD о replicaset и создаст необходимое количество PODов. В этот момент могут быть задействованы admission controller’ы для проверки корректности PODов или их преобразования.
Контроллер Kubernetes будет обнаруживать новые POD'ы и автоматически распределять их по узлам, учитывая их параметры, необходимые ресурсы, специфические требования к узлам (nodeSelector), а также другие настройки, такие как taints/tolerations, podAntiAffinity и т.д.
Kubelet, просматривая изменения в конфигурации ноды через Kubernetes API, начнет вносить изменения: запустит контейнеры через CRI, настроит сеть через kube-proxy, выполнит пробы и, по прохождении проб, изменит статус POD’а в ETCD на Ready через Kubernetes API.
Контроллер Kubernetes увидит готовые PODы, соответствующие service, и создаст записи о новых Endpoint’ах для соответствующих PODов.
Kubelet’ы на всех нодах кластера увидят изменения в конфигурации и вызовут kube-proxy для создания Endpoint’ов.
Kube-proxy вызовет CNI-плагины, которые реализуют Endpoint’ы на уровне инфраструктуры.
При обращении к сервису трафик будет направлен на новые поды.
👍10😁4😢3🥰1👾1
Привет, друзья! 👋
Мы готовим статью о влиянии страха ошибок на работу программистов и хотим услышать ваше мнение! 💻🤔
🔍 Как вы справляетесь со страхом совершить ошибку в коде?
🛠️ Какие инструменты или практики в вашей команде помогают уменьшить страх перед внесением изменений в код?
🌱 Как вы превращаете свои ошибки в возможности для роста и развития?
💬 Поделитесь своим опытом! Ваши ответы могут помочь другим разработчикам! Лучшие идеи войдут в нашу статью.
Мы готовим статью о влиянии страха ошибок на работу программистов и хотим услышать ваше мнение! 💻🤔
🔍 Как вы справляетесь со страхом совершить ошибку в коде?
🛠️ Какие инструменты или практики в вашей команде помогают уменьшить страх перед внесением изменений в код?
🌱 Как вы превращаете свои ошибки в возможности для роста и развития?
💬 Поделитесь своим опытом! Ваши ответы могут помочь другим разработчикам! Лучшие идеи войдут в нашу статью.
🥰2
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Как объединить две метрики?
В Prometheus объединение двух метрик можно выполнить с помощью функции *join()*. Функция *join()* объединяет два или более временных ряда на основе значений их меток. Она принимает два обязательных аргумента: *on* и *table*. Аргумент on указывает метки для объединения *on*, а аргумент *table* указывает временной ряд для объединения. На картинке пример того, как объединить две метрики с помощью функции join().
В Prometheus объединение двух метрик можно выполнить с помощью функции *join()*. Функция *join()* объединяет два или более временных ряда на основе значений их меток. Она принимает два обязательных аргумента: *on* и *table*. Аргумент on указывает метки для объединения *on*, а аргумент *table* указывает временной ряд для объединения. На картинке пример того, как объединить две метрики с помощью функции join().
🥰6
Шпаргалка по удалению томов в Docker
❤13🎉4🌚2🔥1
Мы пишем статью о способах измерения личностного роста программистов и нам нужна ваша помощь! 🚀
📊 Какие метрики вы используете для оценки своего прогресса?
🤔 Как вы понимаете, что выросли профессионально?
💡 Есть ли у вас свои уникальные способы отслеживания развития?
💬 Поделитесь вашим опытом в комментариях! Лучшие идеи попадут в нашу статью!
📊 Какие метрики вы используете для оценки своего прогресса?
🤔 Как вы понимаете, что выросли профессионально?
💡 Есть ли у вас свои уникальные способы отслеживания развития?
💬 Поделитесь вашим опытом в комментариях! Лучшие идеи попадут в нашу статью!
❤3🥰1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❤2
🧔🧔 Простой и удобный шаблон для bash-скриптов выполняемых по расписанию
Простой и полезный шаблон скрипта-обёртки для запуска заданий по cron (а сейчас и systemd timers).
С самого начала работы системным администратором linux, автор обнаруживал, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился парк серверов и виртуальных машин, тем больше приходит абсолютно бесполезных почтовых сообщений «From: Cron Daemon», в которых нельзя отформатировать тему почтового сообщения для удобной автосортировки.
Продолжение здесь
#туториал
Простой и полезный шаблон скрипта-обёртки для запуска заданий по cron (а сейчас и systemd timers).
С самого начала работы системным администратором linux, автор обнаруживал, что cron не очень удобный планировщик задач. При этом практически безальтернативный. Чем больше становился парк серверов и виртуальных машин, тем больше приходит абсолютно бесполезных почтовых сообщений «From: Cron Daemon», в которых нельзя отформатировать тему почтового сообщения для удобной автосортировки.
Продолжение здесь
#туториал
❤🔥12❤2🥰1👏1
#дайджест перед выходными
⬆️ Установка и настройка LibreNMS в Docker с авторизацией через Keycloak — не будет описана установка Docker, т.к. она доходчиво расписана на официальном сайте, просто выберите свою систему и полетели
⬆️ Docker Desktop 4.31 — добавили Air-Gapped Containers, Accelerated Builds и бета релиз виндового Docker Desktop on Arm, Compose File Viewer и GitHub Actions
⬆️ Расширяем меню и функционал Gitlab — попытка расширить функционал Gitlab получив практически «бесшовную» интеграцию со своими продуктами
⬆️ KEDA + Kafka — повышение производительности на 62,15% при пиковых нагрузках
⬆️ Что происходит при старте терминала — описаны все файлы участвующие при старте терминала помимо тех что лежат в домашней директории (bashrc, bash_profile)
⬆️ Установка и настройка LibreNMS в Docker с авторизацией через Keycloak — не будет описана установка Docker, т.к. она доходчиво расписана на официальном сайте, просто выберите свою систему и полетели
⬆️ Docker Desktop 4.31 — добавили Air-Gapped Containers, Accelerated Builds и бета релиз виндового Docker Desktop on Arm, Compose File Viewer и GitHub Actions
⬆️ Расширяем меню и функционал Gitlab — попытка расширить функционал Gitlab получив практически «бесшовную» интеграцию со своими продуктами
⬆️ KEDA + Kafka — повышение производительности на 62,15% при пиковых нагрузках
⬆️ Что происходит при старте терминала — описаны все файлы участвующие при старте терминала помимо тех что лежат в домашней директории (bashrc, bash_profile)
❤🔥15❤2👍2🥰1