How-to-Install-KVM-on-CentOS/RHEL-8 - Как установить KVM на Fedora / CentOS / RHEL 8?

Как установить KVM на Fedora / CentOS / RHEL 8?

KVM

Kernel-based Virtual Machine (сокращенно — KVM) — это стандартное решение для виртуализации с открытым исходным кодом, которое тесно интегрировано с Linux. Это загружаемый модуль ядра, который превращает Linux в гипервизор 1 типаbare-metal»), который создает виртуальную операционную платформу, используемую для запуска виртуальных машин (ВМ). Так как установить KVM на Fedora / CentOS / RHEL 8?

В KVM каждая виртуальная машина представляет собой процесс Linux, который контролируется ядром и управляется частным виртуальным оборудованием (т.е. процессором, сетевой картой, диском и т.д.). Он также поддерживает вложенную виртуализацию, которая позволяет вам запускать виртуальную машину внутри другой виртуальной машины.

Некоторые из его ключевых функций включают поддержку широкого спектра поддерживаемых Linux аппаратных платформ (аппаратное обеспечение x86 с расширениями виртуализации (Intel VT или AMD-V)), оно обеспечивает повышенную безопасность и изоляцию виртуальных машин, используя как SELinux, так и безопасную виртуализацию (sVirt), он наследует функции управления памятью ядра и поддерживает миграцию в автономном режиме и в режиме реального времени (миграция работающей виртуальной машины между физическими хостами).

В этой статье вы узнаете, как устанавливать виртуализацию KVM, создавать виртуальные машины и управлять ими в CentOS 8 и RHEL 8 Linux.

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

# grep -e 'vmx' /proc/cpuinfo #Intel systems
# grep -e 'svm' /proc/cpuinfo #AMD systems

 

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

# lsmod | grep kvm

 

Вот пример вывода тестовой системы на базе Intel:

Check-Virtualization-Support-on-CentOS-8 - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

В этой статье мы будем использовать веб-консоль Cockpit для создания виртуальных машин и управления ими.

 

 

Шаг 1. Настройка веб-консоли Cockpit в CentOS 8

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

Cockpit поставляется предварительно установленным и включенным в системах на базе CentOS 8 и RHEL 8. Если он не установлен, установите его с помощью следующей команды dnf. Для управления виртуальными машинами на основе Libvirt должно быть установлено расширение cockpit-machines:

# dnf install cockpit cockpit-machines

 

2. Когда установка пакета будет завершена, запустите сокет cockpit, включите его автоматический запуск при загрузке системы и проверьте его состояние, чтобы убедиться, что он запущен и работает:

# systemctl start cockpit.socket
# systemctl enable cockpit.socket
# systemctl status cockpit.socket

 

Verify-Cockpit-Status - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

3. Затем добавьте службу cockpit в системный брандмауэр, с помощью команды firewall-cmd и перезагрузите конфигурацию брандмауэра, чтобы применить новые изменения:

# firewall-cmd --add-service=cockpit --permanent
# firewall-cmd --reload

 

4. Чтобы получить доступ к веб-консоли cockpit, откройте веб-браузер и используйте следующий URL для навигации:

https://FQDN:9090/

 

Или же:

https://SERVER_IP:9090/

 

 

В cockpit используется самоподписанный сертификат для включения HTTPS, просто подтвердите соединение, когда вы получите предупреждение от браузера. На странице входа в систему используйте учетные данные пользователя вашего сервера:

Cockpit-Login - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

Cockpit-Dashboard - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

Шаг 2: Установка виртуализации KVM CentOS 8

5. Затем установите модуль виртуализации и другие пакеты виртуализации следующим образом. Пакет virt-install предоставляет инструмент для установки виртуальных машин из интерфейса командной строки, а virt-viewer используется для просмотра виртуальных машин:

# dnf module install virt
# dnf install virt-install virt-viewer

 

6. Затем выполните команду virt-host-validate, чтобы проверить, настроен ли хост-компьютер для запуска драйверов гипервизора libvirt:

# virt-host-validate

 

validate-host-virtualization-setup - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

7. Затем запустите демон libvirtd и включите его автоматический запуск при каждой загрузке. Теперь проверьте его статус, чтобы убедиться, что он запущен и работает:

# systemctl start libvirtd.service
# systemctl enable libvirtd.service
# systemctl status libvirtd.service

 

Verify-Libvirtd-Service - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

Шаг 3: Настройка сетевого моста (виртуальный сетевой коммутатор) через cockpit

8. Теперь создайте сетевой мост (виртуальный сетевой коммутатор) для интеграции виртуальных машин в ту же сеть, что и хост. По умолчанию после запуска демона libvirtd он активирует сетевой интерфейс по умолчанию virbr0, представляющий виртуальный сетевой коммутатор, который работает в режиме NAT.

Для этой статьи мы создадим сетевой интерфейс в режиме моста с именем br0. Это позволит виртуальным машинам быть доступными в хост-сетях.

В главном интерфейсе cockpit нажмите «Networking», затем нажмите «Add Bridge», как показано на следующем скриншоте:

Add-Bridge-Network - Как установить KVM на Fedora / CentOS / RHEL 8?

 

 

9. Во всплывающем окне введите имя моста и выберите подчиненные устройства моста или портовые устройства (например, enp2s0, представляющий интерфейс Ethernet), как показано на следующем скриншоте. Затем нажмите «Apply»:

Enter-Network-Bridge-Settings

 

 

10. Теперь, когда вы вновь посмотрите на список интерфейсов, там должен появиться новый мост, и через несколько секунд интерфейс Ethernet должен быть отключен:

Verify-New-Network-Bridge

 

 

Шаг 4. Создание виртуальных машин и управление ими через веб-консоль Cockpit

11. В главном интерфейсе cockpit выберите параметр «Virtual Machines», как показано на следующем скриншоте. На странице «Virtual Machines» нажмите «Create VM»:

Create-a-New-Virtual-Machine

 

 

12. Появится окно с параметрами для создания новой виртуальной машины. Введите Connection, Name (например — ubuntu18.04), Installation Source Type (в тестовой системе мы сохранили образы ISO в пуле хранения, т.е. /var/lib/libvirt/images/), Installation Source, Storage, Size, Memory, как показано на следующем скриншоте. Поставщик ОС и операционная система должны выбираться автоматически после ввода источника установки.

Также отметьте опцию немедленного запуска VM, затем нажмите «Create»:

Add-New-Virtual-Machine-in-KVM

 

 

13. После нажатия кнопки «Create» на предыдущем шаге виртуальная машина должна автоматически запуститься и загрузиться с использованием предоставленного образа ISO. Продолжите установку гостевой операционной системы (в нашем случае Ubuntu 18.04):

Install-Guest-OS-on-KVM

 

 

Если вы нажмете на «Network Interfaces» виртуальной машины, сетевой источник должен указать недавно созданный сетевой мостовой:

Network-Bridge-of-VM

 

 

А во время установки на этапе настройки сетевого интерфейса вы должны заметить, что интерфейс Ethernet виртуальных машин получает IP-адрес от DHCP-сервера хост-сети:

IP-Address-of-VM

 

 

Обратите внимание, что вам нужно установить пакет OpenSSH для доступа к гостевой ОС через SSH с любого компьютера в сети хоста, как описано в последнем разделе.

 

14. После завершения установки гостевой ОС перезагрузите VM, затем перейдите на Disks и отсоедините/удалите устройство cdrom. Затем нажмите Run, чтобы запустить виртуальную машину:

Detach-Cdrom-After-VM-Installation

 

 

Run-VM-Console

 

 

15. Теперь в разделе «Consoles» вы можете войти в гостевую ОС, используя учетную запись пользователя, которую вы создали во время установки ОС:

VM-Login

 

 

Шаг 5: Доступ к гостевой ОС виртуальной машины через SSH

16. Чтобы получить доступ к вновь установленной гостевой ОС из хост-сети через SSH, выполните следующую команду (замените 10.42.0.197 на IP-адрес вашей гостевой системы):

$ ssh [email protected]

 

Guest-VM-SSH-Login

 

 

17. Чтобы выключить, перезапустить или удалить виртуальную машину, нажмите на неё в списке виртуальных машин, затем используйте кнопки, выделенные на следующем скриншоте:

Delete-Guest-VM-from-KVM

 

 

На этом пока все! В этой статье мы показали, как устанавливать пакеты виртуализации KVM, а также создавать и управлять виртуальными машинами через веб-консоль cockpit.

 

18. Для проброса портов на виртуальную машину, воспользуемся хуками, для этого создадим файл:

vim /etc/libvirt/hooks/qemu

 

Добавляем следующее содержимое:



#!/bin/bash

# ip адрес гипервизора
HOST_IPADDR=167.71.44.12

# Имя виртуальной машине, как указывали в панеле
GUEST_NAME_11=web

# Порт который нужно пробрасывать
HOST_PORT_11=80

# На какой ip адрес гостевой машины пересылать пакеты
GUEST_IPADDR_11=192.168.122.21

# Порт назначения на гостевой машине
GUEST_PORT_11=80

if [ "$1" = "$GUEST_NAME_11" ]; then
if [ "$2" = start ]; then
iptables -t nat -A PREROUTING -p tcp -d $HOST_IPADDR --dport "$HOST_PORT_11" \
-j DNAT --to "$GUEST_IPADDR_11:$GUEST_PORT_11"
iptables -I FORWARD -d "$GUEST_IPADDR_11/32" -p tcp -m state \
--state NEW -m tcp --dport "$GUEST_PORT_11" -j ACCEPT
elif [ "$2" = stopped ]; then
iptables -t nat -D PREROUTING -p tcp -d $HOST_IPADDR --dport "$HOST_PORT_11" \
-j DNAT --to "$GUEST_IPADDR_11:$GUEST_PORT_11"
iptables -D FORWARD -d "$GUEST_IPADDR_11/32" -p tcp -m state \
--state NEW -m tcp --dport "$GUEST_PORT_11" -j ACCEPT
fi
fi

 

Спасибо за уделенное время на прочтение статьи о том, как установить KVM!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
KVM

Больше похожих постов

3 комментария. Оставить новый

  • Добрый день! Вы приложили скрипт, который лежит по пути /etc/libvirt/hooks/qemu
    Вопрос такой, скажите, пожалуйста, как его использовать если у него несколько гостевых машин? Я предполагаю, что нужно их плодить под каждую гостивую машину?
    Ответить
  • Поддерживаю вопрос. Хотелось бы уточнить, что нужно сделать, чтобы корректно настроить проброс портов на несколько гостевых машин.

    И второй вопрос, как настроить туда грамотный ssh доступ? Нужно делать проброс 24-ого порта?

    Просто гипотетически у меня будет 4 машины, все приходят на 1 ip, а как дальше их разделать если все приходит на 80-ый порт? Заранее спасибо за ответы

    Ответить
  • Сергей, в этом-же файле, ниже, прописывайте правила для каждой гостевой машины.
    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню