Показаны различия между двумя версиями страницы.
— |
методология_devops:изучение_компонентов_управления_kubernetes:start [2025/05/31 21:10] (текущий) kirill создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | # Изучение компонентов управления Kubernetes (Control Plane) | ||
+ | ## Введение в Control Plane | ||
+ | |||
+ | * **Роль: | ||
+ | * **Ключевые компоненты: | ||
+ | * **Взаимодействие: | ||
+ | |||
+ | ## 1. kube-apiserver | ||
+ | |||
+ | * **Функция: | ||
+ | * **Роль: | ||
+ | * **Единственная точка входа: | ||
+ | * **Аутентификация и авторизация: | ||
+ | * **Валидация: | ||
+ | * **Хранение: | ||
+ | * **Интерфейс: | ||
+ | * **Принцип работы: | ||
+ | 1. Пользователь (через `kubectl` или API-клиент) отправляет запрос на создание, | ||
+ | 2. kube-apiserver аутентифицирует и авторизует запрос. | ||
+ | 3. Запрос валидируется. | ||
+ | 4. kube-apiserver сохраняет или обновляет состояние объекта в etcd. | ||
+ | 5. Другие компоненты Control Plane (например, | ||
+ | |||
+ | ## 2. etcd | ||
+ | |||
+ | * **Функция: | ||
+ | * **Роль: | ||
+ | * **Основной источник истины: | ||
+ | * **Консистентность: | ||
+ | * **Надежность: | ||
+ | * **Наблюдение (Watch):** Предоставляет механизм для других компонентов Kubernetes отслеживать изменения в хранимых данных. | ||
+ | * **Важность: | ||
+ | |||
+ | ## 3. kube-scheduler | ||
+ | |||
+ | * **Функция: | ||
+ | * **Роль: | ||
+ | * **Отслеживание новых Pod' | ||
+ | * **Фильтрация узлов: | ||
+ | * **Ранжирование узлов: | ||
+ | * **Назначение узла:** Обновляет объект Pod'а в kube-apiserver, | ||
+ | * **Принцип работы: | ||
+ | 1. kube-scheduler получает информацию о новом Pod'е без назначенного узла от kube-apiserver. | ||
+ | 2. Он фильтрует все доступные узлы, чтобы найти те, которые удовлетворяют требованиям Pod' | ||
+ | 3. Отфильтрованные узлы ранжируются на основе заданных политик. | ||
+ | 4. Узел с наивысшим рейтингом выбирается, | ||
+ | |||
+ | ## 4. kube-controller-manager | ||
+ | |||
+ | * **Функция: | ||
+ | * **Роль: | ||
+ | * **Реализация желаемого состояния: | ||
+ | * **Примеры контроллеров: | ||
+ | * **Node Controller: | ||
+ | * **Replication Controller / ReplicaSet Controller / Deployment Controller: | ||
+ | * **StatefulSet Controller: | ||
+ | * **Service Controller: | ||
+ | * **Volume Controller: | ||
+ | * **Namespace Controller: | ||
+ | * **Endpoint Controller: | ||
+ | * **Принцип работы: | ||
+ | 1. Контроллеры наблюдают за состоянием объектов Kubernetes через kube-apiserver. | ||
+ | 2. Они сравнивают текущее состояние с желаемым состоянием, | ||
+ | 3. Если текущее состояние не соответствует желаемому, | ||
+ | |||
+ | ## 5. cloud-controller-manager | ||
+ | |||
+ | * **Функция: | ||
+ | * **Роль: | ||
+ | * **Управление облачными ресурсами: | ||
+ | * **Абстракция от облачного провайдера: | ||
+ | * **Примеры контроллеров (в составе cloud-controller-manager): | ||
+ | * **Node Controller (cloud-specific): | ||
+ | * **Service Controller (cloud-specific): | ||
+ | * **Volume Controller (cloud-specific): | ||
+ | * **Запуск: | ||
+ | |||
+ | ## Взаимодействие компонентов Control Plane: | ||
+ | |||
+ | 1. Пользователь взаимодействует с кластером через `kubectl`, который отправляет запросы к **kube-apiserver**. | ||
+ | 2. **kube-apiserver** аутентифицирует, | ||
+ | 3. **kube-scheduler** наблюдает за созданием новых Pod' | ||
+ | 4. **kube-controller-manager** (и его контроллеры) наблюдает за состоянием объектов и предпринимает действия для достижения желаемого состояния (например, | ||
+ | 5. **cloud-controller-manager** (при использовании облачного провайдера) взаимодействует с API облачного провайдера для управления облачными ресурсами на основе запросов от **kube-apiserver** (например, | ||
+ | 6. Узлы (через **kubelet**) наблюдают за назначенными им Pod' | ||
+ | |||
+ | ## Отказоустойчивость Control Plane: | ||
+ | |||
+ | * Для обеспечения высокой доступности Control Plane ключевые компоненты (kube-apiserver, | ||
+ | * **etcd** использует протокол Raft для обеспечения консистентности между репликами. | ||
+ | * **kube-apiserver** работает за балансировщиком нагрузки. | ||
+ | * **kube-scheduler** и **kube-controller-manager** работают в режиме leader election (выбирается один активный экземпляр). | ||
+ | |||
+ | ## Заключение: | ||
+ | |||
+ | Понимание компонентов Control Plane Kubernetes и их взаимодействия является ключевым для эффективного управления кластером и устранения неполадок. Эти компоненты совместно обеспечивают автоматическую оркестрацию контейнеризированных приложений, |