Исходный код вики Kubevirt Запуск виртуальных машин в кластере Kubernetes
Редактировал(а) Сергей Коршунов 2024/10/09 20:39
Скрыть последних авторов
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | = Kubevirt Запуск виртуальных машин в кластере Kubernetes = |
| 2 | |||
| 3 | Kubevirt позволяет разработчикам легко контейнеризировать приложения и использовать Kubernetes для запуска виртуальных машин. Узнайте больше о Kubevirt и о том, как он используется[[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/KubeVirt-Kubernetes-Virtual-Machines-780x470.png||alt="Kubevirt виртуальные машины kubernetes"]] | ||
| 4 | |||
| 5 | Kubevirt виртуальные машины kubernetes | ||
| 6 | |||
| 7 | Кажется, что мы прошли полный круг, поскольку Kubernetes повзрослел и значительно расширился за последние несколько лет, чтобы делать некоторые действительно удивительные вещи. Одна из удивительных вещей, которые вы можете делать сейчас с Kubernetes, — это запускать виртуальные машины. Kubevirt делает это возможным. В этой статье давайте рассмотрим Kubevirt и эту функциональность. | ||
| 8 | |||
| 9 | Оглавление | ||
| 10 | |||
| 11 | == Что такое Кубевирт? == | ||
| 12 | |||
| 13 | Давайте поговорим о [[Kubevirt>>url:https://kubevirt.io/]] и о том, что это такое. Kubevirt — это решение с открытым исходным кодом, которое позволяет кластерам Kubernetes запускать и управлять виртуальными машинами, включая Linux и Windows, а также собственными рабочими нагрузками контейнеров Kubernetes (pods) и позволяет разработчикам быстро контейнеризировать приложения. Предприятия ищут способы стандартизации своей инфраструктуры и использования согласованного инструментария. Использование [[Kubernetes для контейнеров и виртуальных машин>>url:https://www.virtualizationhowto.com/2022/06/rancher-kubevirt-with-harvester-virtual-machines-with-kubernetes/]] помогает в этом.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Kubevirt-allows-you-to-run-virtual-machines-in-your-Kubernetes-cluster.png~|~|alt="Kubevirt позволяет запускать виртуальные машины в кластере Kubernetes"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Kubevirt-allows-you-to-run-virtual-machines-in-your-Kubernetes-cluster.png]] | ||
| 14 | |||
| 15 | Kubevirt позволяет запускать виртуальные машины в кластере Kubernetes | ||
| 16 | |||
| 17 | Kubevirt предоставляет API виртуализации, позволяя API Kubernetes [[управлять как контейнерами, так и несколькими виртуальными машинами>>url:https://www.virtualizationhowto.com/2023/02/migrate-unifi-controller-from-a-virtual-machine-to-a-docker-container/]] , предоставляя единую унифицированную платформу разработки для обоих. Kubevirt является частью облачного вычислительного фонда и имеет много участников из сообщества. | ||
| 18 | |||
| 19 | == Почему разработчикам может быть интересно использовать Kubevirt? == | ||
| 20 | |||
| 21 | Для команд разработчиков, переходящих на инфраструктуру Kubernetes и [[облачные вычисления>>url:https://www.virtualizationhowto.com/2014/03/cloud-computing-matured/]] , особенно тех, у кого есть существующие рабочие нагрузки на основе виртуальных машин (ВМ) с гостевыми установками операционной системы, которые нелегко контейнеризировать. KubeVirt заполняет пробел между традиционными конфигурациями ВМ и современными контейнеризированными средами для рабочих процессов разработки и производства. С Kubevirt вам больше не нужна отдельная [[среда гипервизора для запуска рабочих нагрузок виртуальных машин>>url:https://www.virtualizationhowto.com/2024/01/virtual-machine-platform-vs-hyper-v-vs-windows-hypervisor-platform/]] . Он также позволяет взаимодействовать с вашими ресурсами Kubernetes с помощью стандартных инструментов, таких как **kubectl.** | ||
| 22 | |||
| 23 | Технология Kubevirt обеспечивает более плавный и быстрый переход для команд с рабочими процессами на основе виртуальных машин для быстрой контейнеризации виртуализированных рабочих нагрузок. Она позволяет командам использовать существующие [[виртуальные машины VM для приложений, пока они работают>>url:https://www.virtualizationhowto.com/2011/09/linux-network-connection-not-working-virtual-machine-esxi/]] над стратегией развертывания приложений, находящихся в архитектурах на основе контейнеров. | ||
| 24 | |||
| 25 | == Архитектура Кубеврита == | ||
| 26 | |||
| 27 | Пользователи, взаимодействующие со службами виртуализации, общаются через API виртуализации для организации желаемых экземпляров виртуальных машин (VMI). С Kubevirt Kubernetes отвечает за управление планированием, сетевым взаимодействием и хранением данных для ваших виртуальных машин.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Layers-of-the-Kubevirt-stack.png~|~|alt="Слои стека kubevirt"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Layers-of-the-Kubevirt-stack.png]] | ||
| 28 | |||
| 29 | Слои стека kubevirt | ||
| 30 | |||
| 31 | Ниже представлена упрощенная схема, показывающая основы того, как дополнительные контроллеры и демоны взаимодействуют с Kubernetes и где хранятся дополнительные типы. Архитектура Kubevirt интегрируется с существующими кластерами Kubernetes, используя оставшиеся виртуализированные компоненты. Эта интеграция становится возможной благодаря Kubevirt Operator и Custom Resource Definitions (CRD), которые расширяют возможности Kubernetes.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Simplified-diagram-of-the-Kubevirt-architecture.png~|~|alt="Упрощенная схема архитектуры kubevirt"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Simplified-diagram-of-the-Kubevirt-architecture.png]] | ||
| 32 | |||
| 33 | Упрощенная схема архитектуры kubevirt | ||
| 34 | |||
| 35 | == Как можно использовать Кубевирт? == | ||
| 36 | |||
| 37 | Существует несколько дистрибутивов Kubernetes, которые вы можете использовать для тестирования Kubevirt и предоставления отзывов о решениях. Обратите внимание на следующие руководства по быстрому старту, предоставленные Kubevirt.io: | ||
| 38 | |||
| 39 | * [[KubeVirt на killercoda>>url:https://killercoda.com/kubevirt]] | ||
| 40 | * [[KubeVirt — это миникуб.>>url:https://kubevirt.io/quickstart_minikube/]] | ||
| 41 | * [[KubeVirt на вид>>url:https://kubevirt.io/quickstart_kind/]] | ||
| 42 | * [[KubeVirt о облачных провайдерах>>url:https://kubevirt.io/quickstart_cloud/]] | ||
| 43 | |||
| 44 | == Rancher Harvester: легкий Кубевирт == | ||
| 45 | |||
| 46 | Кроме того, если вам нужно выделенное решение для простого тестирования Kubevirt, Rancher Harvester — это решение с открытым исходным кодом, содержащее все пакеты, необходимые для запуска программного обеспечения Kubevirt, которое позволяет вам устанавливать Harvester на физических серверах или вложенных виртуальных машинах. Оно обеспечивает управление виртуальными машинами, а также запуск собственных модулей Kubernetes и извлечение образов контейнеров из реестра контейнеров. | ||
| 47 | |||
| 48 | Используя Kubevirt с Harvester, вы можете запускать свои виртуальные машины с конструкциями масштабируемости, безопасности, rbac и производительности для вашей рабочей среды, так же, как вы можете это делать с вашими контейнерными pod. Вы можете ознакомиться с проектом Harvester и документацией здесь: [[Harvester – гиперконвергентная инфраструктура с открытым исходным кодом (harvesterhci.io)>>url:https://harvesterhci.io/]] . Вы также можете ознакомиться с официальными репозиториями и релизами здесь: [[GitHub – harvester/harvester: программное обеспечение гиперконвергентной инфраструктуры с открытым исходным кодом (HCI)>>url:https://github.com/harvester/harvester]] . | ||
| 49 | |||
| 50 | Ниже я загрузил ISO-образ Harvester и создал новый кластер Harvester на ваших узлах.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Create-a-new-Harvester-cluster.png~|~|alt="Создать новый кластер харвестера"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Create-a-new-Harvester-cluster.png]] | ||
| 51 | |||
| 52 | Создать новый кластер харвестера | ||
| 53 | |||
| 54 | После установки Rancher Harvester и ожидания готовности кластера Harvester и IP-адреса управления.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Harvester-cluster-ready-to-go.png~|~|alt="Кластерный агрегат готов к работе"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Harvester-cluster-ready-to-go.png]] | ||
| 55 | |||
| 56 | Кластерный агрегат готов к работе | ||
| 57 | |||
| 58 | Вход в Harvester.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Logging-into-Harvester.png~|~|alt="Вход в комбайн"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Logging-into-Harvester.png]] | ||
| 59 | |||
| 60 | Вход в комбайн | ||
| 61 | |||
| 62 | Ниже я создал новую виртуальную машину Ubuntu 22.04 и загрузил VM для установки с помощью Kubevirt в Harvester. Очень круто! Опыт управления в Harvester отличный.[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Installing-a-virtual-machine-using-Kubevirt-and-Harvester.png~|~|alt="Установка виртуальной машины с помощью kubevirt и harvester"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/Installing-a-virtual-machine-using-Kubevirt-and-Harvester.png]] | ||
| 63 | |||
| 64 | Установка виртуальной машины с помощью kubevirt и harvester | ||
| 65 | |||
| 66 | == Конфигурация файла YAML для виртуальной машины Kubevirt == | ||
| 67 | |||
| 68 | Одной из действительно крутых вещей в использовании Kubevirt для создания виртуальных машин является возможность описывать их в файле YAML. Создавая виртуальную машину Ubuntu 22.04 LTS в Harvester, я использовал следующий код YAML для манифеста виртуальной машины в качестве примера в приведенной выше демонстрации: | ||
| 69 | |||
| 70 | {{{apiVersion: kubevirt.io/v1 | ||
| 71 | kind: VirtualMachine | ||
| 72 | metadata: | ||
| 73 | annotations: | ||
| 74 | harvesterhci.io/vmRunStrategy: RerunOnFailure | ||
| 75 | harvesterhci.io/volumeClaimTemplates: >- | ||
| 76 | [{"metadata":{"name":"ubuntu-01-disk-0-fhsec","annotations":{"harvesterhci.io/imageId":"default/image-675pg"}},"spec":{"accessModes":["ReadWriteMany"],"resources":{"requests":{"storage":"20Gi"}},"volumeMode":"Block","storageClassName":"longhorn-image-675pg"}}] | ||
| 77 | kubevirt.io/latest-observed-api-version: v1 | ||
| 78 | kubevirt.io/storage-observed-api-version: v1alpha3 | ||
| 79 | network.harvesterhci.io/ips: '[]' | ||
| 80 | creationTimestamp: '2024-01-21T14:45:14Z' | ||
| 81 | finalizers: | ||
| 82 | - harvesterhci.io/VMController.UnsetOwnerOfPVCs | ||
| 83 | generation: 2 | ||
| 84 | labels: | ||
| 85 | harvesterhci.io/creator: harvester | ||
| 86 | harvesterhci.io/os: ubuntu | ||
| 87 | managedFields: | ||
| 88 | - apiVersion: kubevirt.io/v1alpha3 | ||
| 89 | fieldsType: FieldsV1 | ||
| 90 | fieldsV1: | ||
| 91 | f:metadata: | ||
| 92 | f:annotations: | ||
| 93 | f:kubevirt.io/latest-observed-api-version: {} | ||
| 94 | f:kubevirt.io/storage-observed-api-version: {} | ||
| 95 | manager: Go-http-client | ||
| 96 | operation: Update | ||
| 97 | time: '2024-01-21T14:45:15Z' | ||
| 98 | - apiVersion: kubevirt.io/v1 | ||
| 99 | fieldsType: FieldsV1 | ||
| 100 | fieldsV1: | ||
| 101 | f:metadata: | ||
| 102 | f:annotations: | ||
| 103 | .: {} | ||
| 104 | f:harvesterhci.io/vmRunStrategy: {} | ||
| 105 | f:harvesterhci.io/volumeClaimTemplates: {} | ||
| 106 | f:network.harvesterhci.io/ips: {} | ||
| 107 | f:finalizers: | ||
| 108 | .: {} | ||
| 109 | v:"harvesterhci.io/VMController.UnsetOwnerOfPVCs": {} | ||
| 110 | f:labels: | ||
| 111 | .: {} | ||
| 112 | f:harvesterhci.io/creator: {} | ||
| 113 | f:harvesterhci.io/os: {} | ||
| 114 | f:spec: | ||
| 115 | .: {} | ||
| 116 | f:runStrategy: {} | ||
| 117 | f:template: | ||
| 118 | .: {} | ||
| 119 | f:metadata: | ||
| 120 | .: {} | ||
| 121 | f:annotations: | ||
| 122 | .: {} | ||
| 123 | f:harvesterhci.io/sshNames: {} | ||
| 124 | f:labels: | ||
| 125 | .: {} | ||
| 126 | f:harvesterhci.io/vmName: {} | ||
| 127 | f:spec: | ||
| 128 | .: {} | ||
| 129 | f:accessCredentials: {} | ||
| 130 | f:affinity: {} | ||
| 131 | f:domain: | ||
| 132 | .: {} | ||
| 133 | f:cpu: | ||
| 134 | .: {} | ||
| 135 | f:cores: {} | ||
| 136 | f:sockets: {} | ||
| 137 | f:threads: {} | ||
| 138 | f:devices: | ||
| 139 | .: {} | ||
| 140 | f:disks: {} | ||
| 141 | f:inputs: {} | ||
| 142 | f:interfaces: {} | ||
| 143 | f:features: | ||
| 144 | .: {} | ||
| 145 | f:acpi: | ||
| 146 | .: {} | ||
| 147 | f:enabled: {} | ||
| 148 | f:machine: | ||
| 149 | .: {} | ||
| 150 | f:type: {} | ||
| 151 | f:resources: | ||
| 152 | .: {} | ||
| 153 | f:limits: | ||
| 154 | .: {} | ||
| 155 | f:cpu: {} | ||
| 156 | f:memory: {} | ||
| 157 | f:evictionStrategy: {} | ||
| 158 | f:hostname: {} | ||
| 159 | f:networks: {} | ||
| 160 | f:terminationGracePeriodSeconds: {} | ||
| 161 | f:volumes: {} | ||
| 162 | manager: harvester | ||
| 163 | operation: Update | ||
| 164 | time: '2024-01-21T14:45:36Z' | ||
| 165 | - apiVersion: kubevirt.io/v1alpha3 | ||
| 166 | fieldsType: FieldsV1 | ||
| 167 | fieldsV1: | ||
| 168 | f:status: | ||
| 169 | .: {} | ||
| 170 | f:conditions: {} | ||
| 171 | f:created: {} | ||
| 172 | f:printableStatus: {} | ||
| 173 | f:ready: {} | ||
| 174 | f:volumeSnapshotStatuses: {} | ||
| 175 | manager: Go-http-client | ||
| 176 | operation: Update | ||
| 177 | subresource: status | ||
| 178 | time: '2024-01-21T15:03:12Z' | ||
| 179 | name: ubuntu-01 | ||
| 180 | namespace: default | ||
| 181 | resourceVersion: '538511' | ||
| 182 | uid: 3e3f0426-a70b-427b-8aba-113b3fa2a5e7 | ||
| 183 | spec: | ||
| 184 | runStrategy: RerunOnFailure | ||
| 185 | template: | ||
| 186 | metadata: | ||
| 187 | annotations: | ||
| 188 | harvesterhci.io/sshNames: '[]' | ||
| 189 | creationTimestamp: null | ||
| 190 | labels: | ||
| 191 | harvesterhci.io/vmName: ubuntu-01 | ||
| 192 | spec: | ||
| 193 | affinity: {} | ||
| 194 | domain: | ||
| 195 | cpu: | ||
| 196 | cores: 2 | ||
| 197 | sockets: 1 | ||
| 198 | threads: 1 | ||
| 199 | devices: | ||
| 200 | disks: | ||
| 201 | - bootOrder: 1 | ||
| 202 | cdrom: | ||
| 203 | bus: sata | ||
| 204 | name: disk-0 | ||
| 205 | - disk: | ||
| 206 | bus: virtio | ||
| 207 | name: cloudinitdisk | ||
| 208 | inputs: | ||
| 209 | - bus: usb | ||
| 210 | name: tablet | ||
| 211 | type: tablet | ||
| 212 | interfaces: | ||
| 213 | - macAddress: 52:54:00:de:68:02 | ||
| 214 | masquerade: {} | ||
| 215 | model: virtio | ||
| 216 | name: default | ||
| 217 | features: | ||
| 218 | acpi: | ||
| 219 | enabled: true | ||
| 220 | machine: | ||
| 221 | type: q35 | ||
| 222 | memory: | ||
| 223 | guest: 1948Mi | ||
| 224 | resources: | ||
| 225 | limits: | ||
| 226 | cpu: '2' | ||
| 227 | memory: 2Gi | ||
| 228 | requests: | ||
| 229 | cpu: 125m | ||
| 230 | memory: 1365Mi | ||
| 231 | evictionStrategy: LiveMigrate | ||
| 232 | hostname: ubuntu-01 | ||
| 233 | networks: | ||
| 234 | - name: default | ||
| 235 | pod: {} | ||
| 236 | terminationGracePeriodSeconds: 120 | ||
| 237 | volumes: | ||
| 238 | - name: disk-0 | ||
| 239 | persistentVolumeClaim: | ||
| 240 | claimName: ubuntu-01-disk-0-fhsec | ||
| 241 | - cloudInitNoCloud: | ||
| 242 | networkDataSecretRef: | ||
| 243 | name: ubuntu-01-ixwie | ||
| 244 | secretRef: | ||
| 245 | name: ubuntu-01-ixwie | ||
| 246 | name: cloudinitdisk | ||
| 247 | status: | ||
| 248 | conditions: | ||
| 249 | - lastProbeTime: null | ||
| 250 | lastTransitionTime: '2024-01-21T15:03:09Z' | ||
| 251 | status: 'True' | ||
| 252 | type: Ready | ||
| 253 | - lastProbeTime: null | ||
| 254 | lastTransitionTime: null | ||
| 255 | status: 'True' | ||
| 256 | type: LiveMigratable | ||
| 257 | created: true | ||
| 258 | printableStatus: Running | ||
| 259 | ready: true | ||
| 260 | volumeSnapshotStatuses: | ||
| 261 | - enabled: false | ||
| 262 | name: disk-0 | ||
| 263 | reason: 2 matching VolumeSnapshotClasses for longhorn-image-675pg | ||
| 264 | - enabled: false | ||
| 265 | name: cloudinitdisk | ||
| 266 | reason: Snapshot is not supported for this volumeSource type [cloudinitdisk] | ||
| 267 | }}} | ||
| 268 | |||
| 269 | == Использование интерфейса командной строки virtctl == | ||
| 270 | |||
| 271 | Вы также можете взаимодействовать с вашими виртуальными машинами Kubevirt с помощью инструмента командной строки virtctl. Вам может потребоваться установить virtctl. Однако при работе с Harvester он устанавливается по умолчанию. | ||
| 272 | |||
| 273 | Обратите внимание на следующие команды: | ||
| 274 | |||
| 275 | * **addvolume ** – добавить том к работающей виртуальной машине | ||
| 276 | * автодополнение – сгенерировать скрипт автодополнения для указанной оболочки | ||
| 277 | * **консоль ** – подключиться к консоли экземпляра виртуальной машины | ||
| 278 | * **expose ** – предоставить экземпляр виртуальной машины, виртуальную машину или набор реплик экземпляра виртуальной машины в качестве новой службы | ||
| 279 | * **fslist ** – возвращает полный список файловых систем, доступных на гостевой машине | ||
| 280 | * **guestfs ** – запустить оболочку в модуле libguestfs | ||
| 281 | * **guestosinfo ** – возвращает информацию гостевого агента об операционной системе | ||
| 282 | * **помощь ** – помощь по любой команде | ||
| 283 | * **image** -upload – загрузить образ виртуальной машины в DataVolume/PersistentVolumeClaim | ||
| 284 | * **память** – **дамп ** – дамп памяти работающей виртуальной машины в указанный pvc | ||
| 285 | * **migrate ** – перенести виртуальную машину | ||
| 286 | * **миграция** – **отмена ** – отмена миграции виртуальной машины | ||
| 287 | * **пауза ** – приостановка виртуальной машины | ||
| 288 | * **разрешено** – **устройства ** – список разрешенных устройств для vmis | ||
| 289 | * **порт** – **переслать ** – переслать [[локальные порты>>url:https://www.virtualizationhowto.com/2012/10/local-port-printers-network-printers-windows-7/]] на виртуальную машину или экземпляр виртуальной машины | ||
| 290 | * **removevolume ** – удалить том из работающей виртуальной машины | ||
| 291 | * **перезапуск ** – перезапуск виртуальной машины | ||
| 292 | * **scp** – файлы scp из/в экземпляр виртуальной машины | ||
| 293 | * **[[soft>>url:https://www.virtualizationhowto.com/2015/05/windows-server-technical-preview-2-soft-reboot/]]**[[ – **reboot**>>url:https://www.virtualizationhowto.com/2015/05/windows-server-technical-preview-2-soft-reboot/]]** ** – мягкая перезагрузка экземпляра виртуальной машины | ||
| 294 | * s **s** h – открыть SSH-соединение с экземпляром виртуальной машины | ||
| 295 | * **запуск ** – запуск виртуальной машины | ||
| 296 | * **остановить ** – остановить виртуальную машину | ||
| 297 | * **unpause ** – снять с паузы виртуальную машину | ||
| 298 | * **usbredir ** – перенаправить USB-устройство на экземпляр виртуальной машины | ||
| 299 | * **userlist ** – возвращает полный список вошедших в систему пользователей на гостевой машине | ||
| 300 | * **версия ** – распечатать информацию о версии клиента и сервера | ||
| 301 | * **vnc ** – открыть vnc-соединение с экземпляром виртуальной машины[[~[~[image:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/The-virtctl-command-line-tool-to-work-with-Kubevirt.png~|~|alt="Инструмент командной строки virtctl для работы с kubevirt"~]~]>>url:https://www.virtualizationhowto.com/wp-content/uploads/2024/01/The-virtctl-command-line-tool-to-work-with-Kubevirt.png]] | ||
| 302 | |||
| 303 | Инструмент командной строки virtctl для работы с kubevirt | ||
| 304 | |||
| 305 | == Подводя итоги, можно сказать, что Kubevirt — отличный инструмент в экосистеме Kubernetes. == | ||
| 306 | |||
| 307 | В этом вводном блоге о Kubevirt мы увидели, что это интересный и мощный инструмент при запуске сред Kubernetes. Он позволяет компании использовать мощь современных приложений в подах Kubernetes и виртуальных машинах поверх кластерного узла Kubernetes для всех своих потребностей в виртуализации. Это делает Kubernetes не только средой для контейнеров, но и для виртуальных машин. | ||
| 308 | |||
| 309 | Поскольку он использует API Kubernetes, разработчики и инженеры DevOps могут использовать мощные API Kubernetes для автоматизации многих аспектов среды, включая политики, и применять эти же конечные точки API для автоматизации операций своих виртуальных машин. Поскольку запуск Kubernetes становится все более интересным и используется организациями по всему миру, мне интересно, сколько из них заинтересованы в переходе от традиционных гипервизоров к использованию Kubernetes для всего. Если вы уже перенесли виртуальные машины в Kubernetes, какие результаты вы увидели и с какими проблемами столкнулись? Используете ли вы это или заинтересованы в использовании этого в ядре или на периферии? Есть ли какая-то функция, которой вам не хватает между Kubevirt и традиционными продуктами гипервизоров? Дайте мне знать в комментариях или на форумах. |