Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
k8s:overall [2024/06/09 00:27] admin создано |
k8s:overall [2024/09/23 11:01] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Общее ====== | + | ====== |
+ | {{ : | ||
+ | |||
+ | **Docker**\\ | ||
+ | ПО для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации (cgroup в ядре)\\ | ||
+ | Изначально использовал LXC, в последствии собственная библиотека. libcotainer\\ | ||
+ | |||
+ | |||
+ | **Kubernetes**\\ | ||
+ | ПО для автоматизации развертывания, | ||
+ | |||
+ | |||
+ | **OpenShift**\\ | ||
+ | Платформа облачной разработки как услуга (PaaS), разработанная Red Hat.\\ | ||
+ | Позволяет разрабатывать и развертывать свои приложения в облачной инфраструктуре. В целом это семейство ПО для контейнеризации, | ||
+ | |||
+ | |||
+ | **Контейнеризация** (контейнеризация на уровне ОС, контейнерная виртуализация, | ||
+ | Метод виртуализации, | ||
+ | Ядро обеспечивает полную изолированность контейнеров, | ||
+ | |||
+ | |||
+ | **Виртуализация**\\ | ||
+ | Предоставление набора вычислительных ресурсов или их логического объединения, | ||
+ | |||
+ | |||
+ | **Эмуляция**\\ | ||
+ | Комплекс программных, | ||
+ | |||
+ | |||
+ | **chroot**\\ | ||
+ | Операция изменения корневого каталога. Программа будет иметь доступ только к файлам содержащимся внутри этого каталога\\ | ||
+ | |||
+ | |||
+ | ==== Docker | ||
+ | **Docker-клиент**\\ | ||
+ | Программа docker, главный интерфейс к Docker. Получает команды от пользователя и взаимодействует с Docker-демоном\\ | ||
+ | |||
+ | |||
+ | **Docker-образ**\\ | ||
+ | Read-only шаблон. Образы используются для создания контейнеров\\ | ||
+ | |||
+ | |||
+ | **Docker-реестр** (registry)\\ | ||
+ | Хранит образы Есть публичные и приватные реестры\\ | ||
+ | |||
+ | |||
+ | **Контейнеры**\\ | ||
+ | В контейнерах содержится все что нужно для работы приложения. Каждый контейнер создается из образа.\\ | ||
+ | |||
+ | |||
+ | **CGroup (Control Groups)**\\ | ||
+ | Докер активно использует контрольные группы. Ключ в работе приложений в изоляции, | ||
+ | |||
+ | |||
+ | === Namespaces === | ||
+ | При создании контейнера, | ||
+ | Такие как, pid (изоляция процесса), | ||
+ | |||
+ | |||
+ | |||
+ | ==== Kubernetes ==== | ||
+ | Открытое ПО для автоматизации развертывания, | ||
+ | Управление кластером контейнеров Linux как единой системой. Управляет и запускает контейнеры Докер на большом кол-ве хостов, | ||
+ | |||
+ | Преследует две цели: как масштабировать и запускать контейнеры сразу на большом кол-ве хостов а так же выполнять их балансировку. В проекте предлагается высокоуровневый API, определяющий логическое группирование контейнеров, | ||
+ | |||
+ | Основные возможности: | ||
+ | * Мониторинг и распределение нагрузки | ||
+ | * Оркестрация хранилища | ||
+ | * Авто-развертывание и откаты. Описывается желаемое состояние | ||
+ | * Автораспределение нагрузки, | ||
+ | * Самоконтроль состояния контейнеров | ||
+ | * | ||
+ | |||
+ | Kubernetes это не монолитное решение, | ||
+ | Kubernetes это не просто система оркестрации, | ||
+ | Технически оркестрами это выполнение определенного рабочего процесса: | ||
+ | Неважно как добраться от А до С. Не требуется так же централизованный контроль.\\ | ||
+ | |||
+ | |||
+ | === Архитектура === | ||
+ | {{ : | ||
+ | |||
+ | Куб как правило развертывается в кластере, | ||
+ | В рабочих узлах размещены Поды, являющиеся компонентами приложения. \\ | ||
+ | Еще есть некая «плоскость управления»\\ | ||
+ | |||
+ | == Плоскость управления == | ||
+ | Компоненты панели управления отвечают за основные операции кластера, | ||
+ | Может быть запущена на любой машине в кластере, | ||
+ | |||
+ | |||
+ | == kube-apiserver == | ||
+ | Компонент который предоставляет API Kubernetes | ||
+ | |||
+ | |||
+ | == etcd == | ||
+ | Состояние мастера хранится в etcd. Это высоконадежное и распределенное хранилище данных в формате «ключ-значение». Используется в качестве основного хранилища всех данных кластера\\ | ||
+ | |||
+ | |||
+ | == kube-scheduler == | ||
+ | Привязывает незапушенные Поды к нодам. Отслеживает созданные Поды без привязанного узла и выбирает узел на котором они должны крутится\\ | ||
+ | |||
+ | |||
+ | == kube-controller-manager == | ||
+ | Все остальные функции уровня кластера представлены в Controller Manager. В него входят такие как: Node Controller, Replication Controller, Endpoints Controller, Account & Token Controllers\\ | ||
+ | |||
+ | == cloud-controller-manager == | ||
+ | Контроллеры которые взаимодействуют с основными облачными провайдерами\\ | ||
+ | |||
+ | |||
+ | == Компоненты узла == | ||
+ | Т.е. Работают на каждом узле, поддерживая работу годов и среды выполнения куба: | ||
+ | **kubelet** - Агент, следит чтобы контейнеры были запущены в Поде. Kubelet управляет Подами, | ||
+ | |||
+ | **kube-proxy** - На каждой ноте запускается простой прокси-балансировщик. Может выполнять простейшее перенаправление потоков TCP и UDP между набором бекендов\\ | ||
+ | Конфигурирует правила сети на узлах, при помощи них разрешаются сетевые подключения к вашим подам изнутри и снаружи кластера\\ | ||
+ | |||
+ | |||
+ | == Дополнения == | ||
+ | **DNS** - кластерный ДНС сервер, | ||
+ | Каждый контейнер в кубе автоматически подключает этот ДНАС сервер\\ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Openshift ==== | ||
+ | {{ : | ||
+ | |||
+ | === Типы ресурсов === | ||
+ | == Deployment == | ||
+ | Описывает желаемое состояние конкретного компонента приложения, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | apiVersion: apps/v1 | ||
+ | kind: Deployment | ||
+ | metadata: | ||
+ | name: hello-openshift | ||
+ | spec: | ||
+ | replicas: 1 | ||
+ | selector: | ||
+ | matchLabels: | ||
+ | app: hello-openshift | ||
+ | template: | ||
+ | metadata: | ||
+ | labels: | ||
+ | app: hello-openshift | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: hello-openshift | ||
+ | image: openshift/ | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | == ConfigMap == | ||
+ | Содержит пары ключ-значение конфигурационных данных, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | kind: ConfigMap | ||
+ | apiVersion: v1 | ||
+ | metadata: | ||
+ | | ||
+ | name: example-config | ||
+ | | ||
+ | data: | ||
+ | | ||
+ | | ||
+ | | ||
+ | property.1=value-1 | ||
+ | property.2=value-2 | ||
+ | property.3=value-3 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | == Service конфиг == | ||
+ | Служит в качестве внутреннего балансировка нагрузки. Идентифицирует набор репетированных модулей (подов), | ||
+ | Поды могут быть добавлены или удалены, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | apiVersion: v1 | ||
+ | kind: Service | ||
+ | metadata: | ||
+ | name: docker-registry | ||
+ | spec: | ||
+ | | ||
+ | docker-registry: | ||
+ | | ||
+ | - nodePort: 0 | ||
+ | port: 5000 | ||
+ | protocol: TCP | ||
+ | targetPort: 5000 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
===== Консоль WSL ===== | ===== Консоль WSL ===== | ||
Для двухфакторной авторизации через браузер, | Для двухфакторной авторизации через браузер, | ||
+ | |||
+ | |||
+ | |||