Инструменты пользователя

Инструменты сайта


k8s:overall

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
k8s:overall [2024/06/09 00:27]
admin создано
k8s:overall [2024/09/23 11:01] (текущий)
admin
Строка 1: Строка 1:
-====== Общее ======+====== Мат часть ====== 
 +{{ :k8s:снимок_экрана_2024-08-15_в_15.23.10.png?direct&600 |}} 
 + 
 +**Docker**\\ 
 +ПО для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации (cgroup в ядре)\\ 
 +Изначально использовал LXC, в последствии собственная библиотека. libcotainer\\ 
 + 
 + 
 +**Kubernetes**\\ 
 +ПО для автоматизации развертывания, масштабирования контейнерных приложений и управления ими. Поддерживает основные технологии контейнеризации, включая Докер, Rkt, так же возможна поддержка аппаратной виртуализации\\ 
 + 
 + 
 +**OpenShift**\\ 
 +Платформа облачной разработки как услуга (PaaS), разработанная Red Hat.\\ 
 +Позволяет разрабатывать и развертывать свои приложения в облачной инфраструктуре. В целом это семейство ПО для контейнеризации, разработанного Red Hat\\ 
 + 
 + 
 +**Контейнеризация** (контейнеризация на уровне ОС, контейнерная виртуализация, зонная виртуализация)\\ 
 +Метод виртуализации, при котором ядро ОС поддерживает несколько изолированных экземпляров пространств пользователя вместо одного.\\ 
 +Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга\\ 
 + 
 + 
 +**Виртуализация**\\ 
 +Предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от аппаратной реализации и обеспечивающее при этом логическую изоляцию друг от друга вычислительных процессов\\ 
 + 
 + 
 +**Эмуляция**\\ 
 +Комплекс программных, аппаратных средств или их сочетание, для копирования (или эмулирования) функции одной системы на другую\\ 
 + 
 + 
 +**chroot**\\ 
 +Операция изменения корневого каталога. Программа будет иметь доступ только к файлам содержащимся внутри этого каталога\\ 
 + 
 + 
 +==== Docker ==== 
 +**Docker-клиент**\\ 
 +Программа docker, главный интерфейс к Docker. Получает команды от пользователя и взаимодействует с Docker-демоном\\ 
 + 
 + 
 +**Docker-образ**\\ 
 +Read-only шаблон. Образы используются для создания контейнеров\\ 
 + 
 + 
 +**Docker-реестр** (registry)\\ 
 +Хранит образы Есть публичные и приватные реестры\\ 
 + 
 + 
 +**Контейнеры**\\ 
 +В контейнерах содержится все что нужно для работы приложения. Каждый контейнер создается из образа.\\ 
 + 
 + 
 +**CGroup (Control Groups)**\\ 
 +Докер активно использует контрольные группы. Ключ в работе приложений в изоляции, предоставление ему только тех ресурсов, которые вы хотите предоставить. Контролировать разделение ресурсов\\ 
 + 
 + 
 +=== Namespaces === 
 +При создании контейнера, Докер, для каждого контейнера создает набор пространств имен, для организации работы\\ 
 +Такие как, pid (изоляция процесса), net (управление сетевыми интерфейсами), inc (управление IPC ресурсами),  mnt (управление точками монтирования), utc (для изолирования ядра и контроля генерации версий)\\ 
 + 
 + 
 + 
 +==== Kubernetes ==== 
 +Открытое ПО для автоматизации развертывания, масштабирования контейнеризированных приложений и управления ими\\ 
 +Управление кластером контейнеров Linux как единой системой. Управляет и запускает контейнеры Докер на большом кол-ве хостов, а так же обеспечивает совместное размещение и репликация большого кол-ва контейнеров\\ 
 + 
 +Преследует две цели: как масштабировать и запускать контейнеры сразу на большом кол-ве хостов а так же выполнять их балансировку. В проекте предлагается высокоуровневый API, определяющий логическое группирование контейнеров, позволяющий определять пулы контейнеров, балансировать нагрузку, а так же задавать их размещение.\\ 
 + 
 +Основные возможности: 
 +  * Мониторинг и распределение нагрузки 
 +  * Оркестрация хранилища 
 +  * Авто-развертывание и откаты. Описывается желаемое состояние 
 +  * Автораспределение нагрузки, указывается объем ресурсов доступных контейнеру 
 +  * Самоконтроль состояния контейнеров 
 +  *   Управление конфиденциальной инфой  
 + 
 +Kubernetes это не монолитное решение, поэтому возможности являются дополнительными и подключаемыми\\ 
 +Kubernetes это не просто система оркестрации, фактически он устраняет необходимость в этом.\\ 
 +Технически оркестрами это выполнение определенного рабочего процесса: сначала А, затем Б, потом С. Напротив, Куб содержит набор независимых, компонуемых процессов управления, которые непрерывно переводят текущее состояние к предполагаемому.\\ 
 +Неважно как добраться от А до С. Не требуется так же централизованный контроль.\\ 
 + 
 + 
 +=== Архитектура === 
 +{{ :k8s:снимок_экрана_2024-08-15_в_16.11.54.png?direct&600 |}} 
 + 
 +Куб как правило развертывается в кластере, кластер состоит из нескольких машин, т.н. Узлы (ноды), которые запускают контейнеризированные приложения. Кластер имеет как минимум один рабочий узел\\ 
 +В рабочих узлах размещены Поды, являющиеся компонентами приложения. \\ 
 +Еще есть некая «плоскость управления»\\ 
 + 
 +== Плоскость управления == 
 +Компоненты панели управления отвечают за основные операции кластера, а так же обрабатывают события кластера (запуск нового Пода при replicas Low)\\ 
 +Может быть запущена на любой машине в кластере, рекоммендуется отдельная\\ 
 + 
 + 
 +==  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 ==== 
 +{{ :k8s:снимок_экрана_2024-08-15_в_17.42.02.png?direct&600 |}} 
 + 
 +=== Типы ресурсов === 
 +== Deployment == 
 +Описывает желаемое состояние конкретного компонента приложения, в воде Pod. С помощью деплойментов создаются ReplicaSet, которые являются экземплярами приложений (Подами)\\ 
 + 
 +<details> 
 +<summary>:!: Example </summary> 
 +<code> 
 +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/hello-openshift:latest 
 +        ports: 
 +        - containerPort: 80 
 +</code> 
 +</details> 
 + 
 + 
 + 
 +== ConfigMap == 
 +Содержит пары ключ-значение конфигурационных данных, которые могут использоваться при запуске подов с приложением или для хранения конфигурационных данных для системных компонент\\ 
 + 
 +<details> 
 +<summary>:!: Example </summary> 
 +<code> 
 +kind: ConfigMap 
 +apiVersion: v1 
 +metadata: 
 +   creationTimestamp: 2016-02-18T19:14:38Z 
 +   name: example-config 
 +   namespace: default 
 +data: 
 +   example.property.1: hello 
 +   example.property.2: world 
 +   example.property.file: |- 
 +      property.1=value-1 
 +      property.2=value-2 
 +      property.3=value-3 
 +</code> 
 +</details> 
 + 
 + 
 + 
 +== Service конфиг == 
 +Служит в качестве внутреннего балансировка нагрузки. Идентифицирует набор репетированных модулей (подов), для того чтобы проксировать соединения, которые он получает, к ним\\ 
 +Поды могут быть добавлены или удалены, а service продолжает быть постоянно доступным, позволяя ссылаться н него по внутреннему адресу\\ 
 + 
 +<details> 
 +<summary>:!: Example </summary> 
 +<code> 
 +apiVersion: v1 
 +kind: Service 
 +metadata: 
 +   name: docker-registry 
 +spec: 
 +   selector: 
 +      docker-registry: default 
 +   ports: 
 +    - nodePort: 0 
 +      port: 5000 
 +      protocol: TCP 
 +      targetPort: 5000 
 +</code> 
 +</details> 
 + 
 + 
 + 
  
  
 ===== Консоль WSL ===== ===== Консоль WSL =====
 Для двухфакторной авторизации через браузер, помогает утилита [[https://wslutiliti.es/wslu/install.html|wslu]] ([[https://superuser.com/questions/1262977/open-browser-in-host-system-from-windows-subsystem-for-linux|info]])\\ Для двухфакторной авторизации через браузер, помогает утилита [[https://wslutiliti.es/wslu/install.html|wslu]] ([[https://superuser.com/questions/1262977/open-browser-in-host-system-from-windows-subsystem-for-linux|info]])\\
 +
 +
 +
  
  
k8s/overall.1717892836.txt.gz · Последнее изменение: 2024/06/09 00:27 — admin