С какими технологиями виртуализации и контейнеризации вы работали?

«С какими технологиями виртуализации и контейнеризации вы работали?» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мой опыт охватывает несколько уровней абстракции инфраструктуры:

  1. Виртуализация на уровне ОС (Контейнеризация):

    • Docker: Основной инструмент для создания, распространения и запуска контейнеризированных приложений. Использовал Docker Compose для оркестрации мультиконтейнерных сред на этапе разработки и тестирования.
    • containerd / runc: Работал с ними как низкоуровневыми runtime-движками внутри Kubernetes.
  2. Виртуализация на уровне гипервизора:

    • KVM (Kernel-based Virtual Machine): Основная технология для управления виртуальными машинами в Linux-средах. Использовал стек libvirt/QEMU с инструментами CLI (virsh, virt-install) и веб-интерфейсом virt-manager для развертывания и администрирования ВМ.
    • VMware vSphere/ESXi: Имею опыт администрирования кластеров vSphere, создания шаблонов ВМ, настройки vSwitch и распределенных портов (vDS).
  3. Облачные виртуальные машины (IaaS):

    • Amazon EC2, Google Compute Engine (GCE): Широко использовал для развертывания production-нагрузки. Управлял ими через Terraform и CLI соответствующих облаков.
  4. Инструменты для управления виртуальными средами:

    • Vagrant: Часто применял для быстрого создания одноразовых виртуальных сред для локальной разработки и тестирования скриптов (Provisioning с помощью Ansible или Shell).

Пример создания ВМ с помощью virt-install (KVM):

virt-install 
  --name app-server 
  --ram 4096 
  --vcpus 2 
  --disk path=/var/lib/libvirt/images/app-server.qcow2,size=20 
  --os-variant ubuntu22.04 
  --network bridge=br0 
  --graphics spice 
  --console pty,target_type=serial 
  --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/' 
  --extra-args 'console=ttyS0,115200n8 serial'

В современном DevOps-стеке основное внимание смещено на контейнеризацию (Docker) и оркестрацию (Kubernetes), но понимание работы классических ВМ необходимо для гибридных сред и работы с унаследованными системами.