Cockpit – веб-панель для управления Linux-сервером

   В данной инструкции мы запустим несколько баз данных Mysql на одном физическом сервере используя установленную версию Mysql-5.5. Запуск нескольких Mysql серверов на одном сервере бывает нужно для того, чтобы запустить репликацию на одном, либо дать доступ кому либо (програмист, друг, клиент) к отдельной чистой Mysql базе данных. Настройка базы проводится на операционной системе Debian GNU/Linux.

Принятые термины

  1. Хостовая машина, HOST – наш сервер или десктопная машина, “реальная”, на которой и работает гипервизор с виртуальными машинами.
  2. Гостевая машина, VM – собственно, сама виртуальная машина, которых, к слову, может быть несколько. Создавал как-то конфигурацию с одновременно работающими 6-ю гостевыми машинами. Ну вот нужно было )
  3. Мост, Bridge – механизм объединения двух сетевых интерфейсов. Условно, как патчкорд, соединяющий два порта. Может быть программным.
  4. NAT – механизм трансляции сетевых адресов, когда на хосте работает специальная служба, которая занимается самой трансляцией – отображением виртуального (частного) адреса или группы адресов в один реальный и обратно.
  5. Сегмент – некое подобие VLAN, чисто на программном уровне, объединение различных виртуальных интерфейсов в один домен коллизий.

Описание Cockpit

Часто при упоминании Linux-сервера представляется консоль. Действительно так – через терминал в большинстве случаев выполняется управление и администрирование *NIX систем. Нельзя сказать, что это по душе всем, особенно, новичкам. Тем не менее, у GUI есть ряд преимуществ — наглядность, простота в использовании, понятность и меньшая вероятность ошибки.

Довольно сложно выбрать веб-панель из большого ряда подобных проектов. Одним из самых функциональных и “проверенных” временем (около 16 лет проекту) является webmin, а с темой оформления Authentic (-theme) выглядит уже совсем современно. Но вернемся ближе к теме: почему я выбрал Cockpit?

История создания

Проект Kubernetes (сокращенно K8s) вырос из системы управления кластерами Borg. Внутренний продукт поискового гиганта Google получил название в честь кибер-рассы боргов из легендарного сериала «Звездный путь».

Команде разработчиков Google Borg была поставлена масштабная задача — создать открытое программное обеспечение для оркестрирования* контейнеров, которое станет вкладом Google в развитие мировых IT-технологий. Приложение было написано на основе языка Go.

* Под «оркестрированием» подразумевается автоматизированное управление связанными сущностями — контейнерами или виртуальными машинами.

На этапе разработки K8s назвался Project Seven («Проект «Седьмая»). Это было прямой отсылкой к персонажу «Звездного пути» Seven of Nine («Седьмая-из-девяти») — андроиду-боргу, сумевшему вернуть себе человечность. Позже проект получил имя «Кубернетес», от греческого слова κυβερνήτης, которое означает «управляющий», «рулевой» или «кормчий».

В 2014 году общественности представили исходные коды, а годом позже появилась первая версия программы Kubernetes 1.0. В дальнейшем все права на продукт были переданы некоммерческому фонду Cloud Native Computing Foundation (CNCF), куда входят Google, The Linux Foundation и ряд крупнейших технологических корпораций.

Hardware

Nodes

Node — это самая маленькая единица 'computing hardware в k8s. Это представление одной машины в вашем кластере. В большинстве производственных систем нодой, корее всего, будет либо физическая машина в датацентре, либо виртуальная машина, размещенная на облачном провайдере, таком как Google Cloud Platform, Azure, AWS. Однако, вы можете сделать ноду практически из чего угодно (например Rasbery PI).

Hardware

Если обсуждать про машину как "ноду", можем разбавить это слоем абстракции, мы можем представлять ее как некий набор CPU, RAM ресурсов которые можно использовать. Таким образом любая такая машина может заменить любую другую машину как k8s кластер.

Читайте также:  Вышла третья версия iOS 12.4 beta 3 — что нового в обновлении

Cluster

Хотя работа с отдельными нодами может быть полезной, это не путь kubernetes. В общем, вы должны думать о кластере в целом, а не беспокоиться о состоянии отдельных нодов.

Hardware

В Kubernetes ноды объединяют свои ресурсы для формирования более мощной машины. Когда вы развертываете программы в кластере, он балансирует нагрузку по индивидуальным нодам для вас. Если какие-либо nodes добавляются или удаляются, кластер будет перемещаться по мере необходимости. Для программы или девелопера не должно быть важно, на каких машинах выполняется код в k8s. Можно сравнить такую систему с улием.

Persistent Volumes

Поскольку программы, работающие в вашем кластере, не гарантированно выполняются на определенной ноде, данные не могут быть сохранены в любом произвольном месте в файловой системе. Если программа пытается сохранить данные в файл, но затем перемещается на новую ноду, файл больше не будет там, где программа ожидает его. По этой причине традиционное локальное хранилище, связанное с каждой нодой, рассматривается как временный кэш для хранения программ, но нельзя ожидать, что любые данные, сохраненные локально, сохранятся.

Hardware

Для постоянного хранения данных Kubernetes использует Persistent Volumes. Хотя ресурсы ЦП и ОЗУ всех нодов эффективно объединяются и управляются кластером, постоянного хранение файлов — нет. Вместо этого локальные или облачные диски могут быть подключены к кластеру как постоянный том (Persistent Volumes). Это можно рассматривать как подключение внешнего жесткого диска к кластеру. Persistent Volumes предоставляют файловую систему, которая может быть подключена к кластеру без привязки к какому-либо конкретному ноду.

Что такое Docker Image?

Docker образ (он же Docker Image), похож на Game Boy картридж — это просто программное обеспечение. Это стандартизированное программное обеспечение, которое запускается на любой приставке Game Boy. Вы можете дать игру вашему другу, и он сможет просто вставить картридж в приставку, и играть.

Читайте также:  Реклама на телевидении: преимущества и недостатки

Как в случае с картриджами, бывают различные игры, так и Docker имеет различные образы ПО: ubuntu, php (который наследуется от оригинального образа Ubuntu), nodejs, и т.д.

Рассмотрим пример скачивания нашего первого образа. Для этого, существует команда: docker pull <IMAGE_NAME>, где <IMAGE_NAME> — имя скачиваемого образа

Зная эту команду, скачаем образ Ubuntu :

docker pull ubuntu:

Эта команда сообщает Докеру о том, что нужно скачать образ Ubuntu с (не путать с pornhub) — основной репозиторий Docker-образов, на котором вы и можете посмотреть весь их список и подобрать нужный образ для вашей программы.

Это как поездка за новым картриджем в магазин, только намного быстрее :).

Теперь, для того, чтобы посмотреть список всех загруженных образов, нужно выполнить:

docker images

У вас, как и на скрине, должен появиться только что скачанный образ Ubuntu И, как обсуждалось выше, по поводу маленького размера образов, чистый образ Ubuntu при установке из Docker-образа, весит всего 74 МБ. Не чудо ли?

Проводя аналогии, команда docker images выглядит как коллекция картриджей от приставки, которые у вас есть сейчас: