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

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


k8s:overall

Мат часть

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 это не просто система оркестрации, фактически он устраняет необходимость в этом.
Технически оркестрами это выполнение определенного рабочего процесса: сначала А, затем Б, потом С. Напротив, Куб содержит набор независимых, компонуемых процессов управления, которые непрерывно переводят текущее состояние к предполагаемому.
Неважно как добраться от А до С. Не требуется так же централизованный контроль.

Архитектура

Куб как правило развертывается в кластере, кластер состоит из нескольких машин, т.н. Узлы (ноды), которые запускают контейнеризированные приложения. Кластер имеет как минимум один рабочий узел
В рабочих узлах размещены Поды, являющиеся компонентами приложения.
Еще есть некая «плоскость управления»

Плоскость управления

Компоненты панели управления отвечают за основные операции кластера, а так же обрабатывают события кластера (запуск нового Пода при 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

Типы ресурсов

Deployment

Описывает желаемое состояние конкретного компонента приложения, в воде Pod. С помощью деплойментов создаются ReplicaSet, которые являются экземплярами приложений (Подами)

:!: Example
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
ConfigMap

Содержит пары ключ-значение конфигурационных данных, которые могут использоваться при запуске подов с приложением или для хранения конфигурационных данных для системных компонент

:!: Example
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
Service конфиг

Служит в качестве внутреннего балансировка нагрузки. Идентифицирует набор репетированных модулей (подов), для того чтобы проксировать соединения, которые он получает, к ним
Поды могут быть добавлены или удалены, а service продолжает быть постоянно доступным, позволяя ссылаться н него по внутреннему адресу

:!: Example
apiVersion: v1
kind: Service
metadata:
   name: docker-registry
spec:
   selector:
      docker-registry: default
   ports:
    - nodePort: 0
      port: 5000
      protocol: TCP
      targetPort: 5000

Консоль WSL

Для двухфакторной авторизации через браузер, помогает утилита wslu (info)

k8s/overall.txt · Последнее изменение: 2024/09/23 11:01 — admin