KubeVirt: на внедрение виртуальных машин в мир Kubernetes потребовалось 7 лет
KubeVirt: на внедрение виртуальных машин в мир Kubernetes потребовалось 7 лет

Привет всем, меня зовут Чжан Цзиньтао.

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

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

Это основа и цель проекта KubeVirt.

KubeVirt — это проект с открытым исходным кодом, который позволяет развертывать, использовать и управлять виртуальными машинами Kubernetes, как контейнерами. Он предоставляет унифицированную платформу, которая позволяет пользователям создавать облачные приложения с использованием контейнеров или виртуальных машин в соответствии с различными потребностями. Проект KubeVirt был запущен в 2016 году, его продвигают и поддерживают совместно Red Hat, IBM, Google, Intel, SUSE и другие компании и организации. После 7 лет неустанных усилий KubeVirt выпустила версию 1.0.0 в июле 2023 года, отметив, что она достигла уровня готовности к производству и имеет здоровое сообщество. (До этого он использовался в производственных средах многими компаниями)

В этой статье я рассмотрю История развития Кубе Вирт, введение Основные возможности и преимущества KubeVirt и анализ Будущее Кубе Виртуальный прогноз и вызов.

История развития KubeVirt

Идея KubeVirt восходит к 2015 году. На первом KubeCon инженер Red Hat Фабиан Дойч поднял вопрос: Можно ли запустить виртуальную машину на Kubernetes? Ответ на тот момент был неопределенным, но вопрос вызвал большой интерес и дискуссии. В течение следующего года Фабиан Дойч и его коллеги начали работу над прототипами и экспериментами, исследуя различные решения и технологии. В конце концов они решили использовать libvirt и QEMU для запуска и управления виртуальными машинами в Kubernetes.

существовать 2016 В конце года KubeVirt Проект официально запущен и существует GitHub Открытый исходный код. Основная цель проекта – предоставить Kubernetes Собственный API виртуализации и время выполнения, позволяя пользователям использовать что-то вроде Pod и Deployment Используйте тот же VirtualMachine и VirtualMachineInstance определить иурегулирующую виртуальную машина. Основная задача проекта — как интегрировать виртуальную машинаи Kubernetes из модели ресурсов,планировщик,сеть,Система хранения данных и другие компоненты интегрированы и скоординированы.

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

  • 2017 В конце года KubeVirt Реализована базовая извиртуальная машина создает и удаляет функции и Опубликовано v0.1.0 Версия.
  • 2018 В начале года KubeVirt переработанный VirtualMachine из API и опубликовано v0.2.0 Версия.
  • 2018 Середина года, KubeVirt Совместимый Kubernetes изсеть,И оффлайн поддержка виртуальной машины,и Опубликовано v0.3.0 Версия.
  • 2018 В конце года KubeVirt Поддерживает пустую инициализацию ПВ и liveness и готовности и опубликовано v0.9.0 ~ v0.11.0 Версия.
  • 2019 Середина года, KubeVirt Поддерживается virtctl migrate,и Опубликовано v0.21.0 Версия.
  • 2022 В начале года KubeVirt Удален старый из пары GPU Поддержка устройства может быть унифицирована и опубликована. v0.50.0 Версия.
  • 2023 Середина года, KubeVirt Опубликовано v1.0.0 Версия.

На самом деле вы можете увидеть KubeVirt Хотя он не был выпущен v1.0 версию, но она сохранила относительно частую частоту выпусков. существуетэтот процесс, KubeVirt Сообщество также растет и активно. На данный момент Кубе Вирт из GitHub На складе уже имеется более 270 участники, более 17k представить, превысить 4.5k star。

KubeVirt Число пользователей и партнеров постоянно увеличивается, в том числе IBM, Google, Intel, SUSE, Red Hat, Huawei, VMware, Canonical, Rancher Многие известные компании и организации.

Основные возможности и преимущества KubeVirt

KubeVirt Основная функция – существование Kubernetes начальствобегатьиуправлятьвиртуальная машина. Чтобы реализовать эту функцию, KubeVirt Предлагает решения по следующим аспектам:

API виртуализации

KubeVirt определил набор Kubernetes Собственный API виртуализация, позволяющая пользователям использовать Pod и Deployment Используйте тот же VirtualMachine и VirtualMachineInstance определить иурегулирующую виртуальную машина。VirtualMachine Декларативный тип ресурса, который представляет собой извиртуальное ожидание. машинасостояние。VirtualMachineInstance Тип ресурса реального времени, который представляет собой положительную извиртуальную реальность существования. экземпляр машины. Пользователи могут пройти YAML файл или kubectl Команды для создания, обновления, удаления или запроса этих ресурсов. Например:

Язык кода:javascript
копировать
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  annotations:
    kubevirt.io/latest-observed-api-version: v1
    kubevirt.io/storage-observed-api-version: v1
  creationTimestamp: "2023-09-01T00:25:41Z"
  finalizers:
  - kubevirt.io/virtualMachineControllerFinalize
  generation: 1
  name: testvm
  namespace: default
  resourceVersion: "12691"
  uid: d5509381-5f21-438b-9440-cb7c9ee82b37
spec:
  running: false
  template:
    metadata:
      creationTimestamp: null
      labels:
        kubevirt.io/domain: testvm
        kubevirt.io/size: small
    spec:
      architecture: amd64
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: containerdisk
          - disk:
              bus: virtio
            name: cloudinitdisk
          interfaces:
          - masquerade: {}
            name: default
        machine:
          type: q35
        resources:
          requests:
            memory: 64M
      networks:
      - name: default
        pod: {}
      volumes:
      - containerDisk:
          image: quay.io/kubevirt/cirros-container-disk-demo
        name: containerdisk
      - cloudInitNoCloud:
          userDataBase64: SGkuXG4=
        name: cloudinitdisk

этот YAML Файл определяет файл с именем testvm извиртуальная машина, у нее есть 2 диск. Один из дисков — это образ контейнера, а другой — конфигурация инициализации облака. Пользователи могут пройти kubectl apply -f testvm.yaml создать эту виртуальную машина, или kubectl get vm testvm чтобы проверить его статус.

Язык кода:javascript
копировать
moelove $ kubectl get vms
NAME     AGE     STATUS    READY
testvm   3m20s   Running   True

среда выполнения виртуализации

KubeVirt Реализован набор окружения выполнения виртуализации,Разрешить пользователямсуществовать Kubernetes из любого узла кластера выполняется иуправлениевиртуальная машина。KubeVirt среда выполнения в основном состоит из следующих компонентов:

  • virt-controller: Отвечает за мониторинг и настройку виртуальной машины. Статус машины и обработка виртуальная машинаизсобытия жизненного цикла,Если создано,удалить,запускать,останавливаться,Миграция и т. д.
  • virt-handler:Ответственныйсуществоватькаждый узелначальствоосуществлятьвиртуальная автоматизация операций, таких как запуск, остановка, пауза, возобновление и т. д. Он также несет ответственность за libvirt и QEMU Общаться и собирать отчеты виртуальная машинаиз показателей производительности.
  • virt-operator:Ответственныйсуществоватькаждый узелначальствозапускатьиуправлять libvirt и QEMU процесс.
  • virt-api: отвечает за предоставление API. виртуализации из конечной точки службы, а также аутентифицировать и преобразовывать запросы пользователей.
Язык кода:javascript
копировать
moelove $ kubectl get pods -n kubevirt
NAME                               READY   STATUS    RESTARTS   AGE
virt-operator-6c649b9567-m2tbl     1/1     Running   0          6m36s
virt-operator-6c649b9567-kqfnl     1/1     Running   0          6m36s
virt-api-66859f4c8d-tnf68          1/1     Running   0          5m53s
virt-controller-8545966675-wskv9   1/1     Running   0          5m17s
virt-controller-8545966675-z68gb   1/1     Running   0          5m17s
virt-handler-h8zx4                 1/1     Running   0          5m17s

KubeVirt изruntime принимает Kubernetes из собственной архитектуры и режима, что позволяет пользователям использовать контейнеры управления, такие как управлениевиртуальная машина. Например:

  • Пользователи могут использовать kubectl logs Команда для просмотра виртуальная машинаиз журнала.

сетевые решения

KubeVirt Поддерживает различные подключаемые решения, позволяющие пользователям предоставлять виртуальную среду в соответствии с различными потребностями. Машина обеспечивает подходящее подключение и настройку. Кубе Вирт изсетевые Решения в основном включают в себя следующие категории:

  • Pod сеть: Это самое простое и наиболее часто используемое решение, которое делает виртуальную Поделилось машиной Pod иссеть пространство имен и интерфейс. Таким образом, виртуальная машина может быть такой Pod Доступ к ресурсам внутри и за пределами кластера осуществляется одинаковым образом, и к ним могут обращаться ресурсы внутри и за пределами кластера.
  • Мульти-сеть: это более гибкое и продвинутое решение, которое делает виртуальную Машина может иметь несколько сетевых интерфейсов и подключаться к разным плоскостям иссеть. Таким образом, виртуальная Вы можете использовать разные стратегии и конфигурации в соответствии с различными вариантами использования и сценариями. Например, виртуальная машина Может быть, есть тот, который можно использовать Вуправлятьизсетьинтерфейс,Интерфейс, использующий передачу данных,Интерфейс для доступа к изсети с использованием общедоступной сети.
  • Мостовая сеть: это схема, более близкая к традиционной виртуализацииизсети, которая делает виртуальную Машина может напрямую использовать физический сетевой интерфейс и адрес узла. Таким образом, виртуальная машина может быть такой То же, что и физическая машина,Общайтесь с другими устройствами на узле начальствоиз,И вы можете использовать инструмент безопасности и мониторинга узла «начальствоизсеть».
  • SR-IOV сеть: это решение с более высокой производительностью, меньшей задержкой и зсетью, которое позволяет виртуальную Машина может напрямую использовать узел начального уровня физической сетевой карты из виртуальных функций. Таким образом, виртуальная машина может обойти накладные расходы программного уровня,Прямой доступ к ресурсам аппаратного уровня,И вы можете наслаждаться аппаратным ускорением и оптимизацией.

решения для хранения

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

  • контейнер Диск: Это контейнерное зеркалоиз решения для хранения данных, которое делает виртуальную машина может использовать контейнер-зеркало в качестве корневого диска. Таким образом, виртуальная машина может быть такойконтейнер Такой же,быстрозапускатьиостанавливаться,И наслаждайтесь удобством и безопасностью контейнеров.
  • Постоянный объем: это тип Kubernetes из Решения для хранения данных, которые делают виртуальную машину можно использовать Kubernetes изPersistent Volume (PV) и Persistent Volume Claim (PVC) в качестве диска с данными. Таким образом, виртуальная машина может быть такой Pod То же, используйте Kubernetes изStorage Class (StorageClass) для динамического запроса и освобождения места хранения, его можно использовать Kubernetes плагины хранилища для подключения к различным хранилищам.
  • Хозяин Диск: Этоузелиз Решения для хранения данных, которые делают виртуальную машину можно использоватьузелначальствоизлокальный диск или каталог в качестве диска данных。так,виртуальная машина может использовать преимущества производительности и емкости хранилища узла.,И можно избежать накладных расходов и задержек на сетевом уровне.
  • CDI Диск: Это CDI(Containerized Data Importer) решение для хранения проектов, которое позволяет пользователям импортировать данные из разных источников, таких как HTTP, S3, Registry и т. д.) импортировать или клонировать данные в Kubernetes из постоянного тома и может автоматически конвертировать данные из формата (например, qcow2, raw, vmdk ждать). Таким образом, пользователи могут легко конвертировать существующие извиртуальные машиназеркало или миграция данных или копировать в Kubernetes внутри и может быть использован KubeVirt Чтобы руководить иуправлять ими.

Зеркальное решение

KubeVirt Поддерживает множество подключаемых модулей зеркала, позволяющих пользователям настраивать виртуальную виртуальную систему в соответствии с различными потребностями. Машина предоставляет подходящий исходный код и конфигурацию иззеркало. Кубе Вирт из Зеркальное Решение в основном включает в себя следующие категории:

  • Зеркало-контейнер: Это решение, основанное на технологии В-контейнера и ззеркало, что позволяет пользователям могут использоватьконтейнерзеркалокаквиртуальная машинаиз корневого диска или CD-ROM。так,Пользователи могут воспользоваться преимуществами контейнерной технологии,например, легкий,быстрыйзапускать,Легко распространять,Безопасная изоляция и т. д.
  • виртуальная машиназеркало: Это схема, основанная на традиционной виртуализации и ззеркало, которая делает Пользователи могут использоватьвиртуальная машиназеркалокаквиртуальная автоматизация конфигурации инициализации.

Будущее Кубе Вирта

сейчас KubeVirt Уже опубликовано v1.0 версия, одним из основателей которой является Red Hat, существует OpenShift перенесено в виртуализацию KubeVirt。Kubermatic、Rancher、Google、Oracle и т. д. также предоставляют встроенный KubeVirt из продуктов. Civio,Пузл,Платформа9 и Другие компании будут KubeVirt Перенос в облако и предоставление хостинга и управление продуктами.

Ценность KubeVirt видят все.,В будущем все больше компаний будут применять его в своих средах.,И способствовать развитию общества.

ясуществовать 2019 Пробовал это годами KubeVirt в то время был не очень зрелым, поэтому я в конце концов не принял его. Теперь я думаю, что могу попробовать добавить его в свою систему. Я также поделюсь некоторыми KubeVirt Реальные сценарии использования и конкретные технологии

TheMoeLove

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose