From ed2b8ff9a6c4d994f4519e6e27fb9c37a93978be Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Mon, 27 Apr 2026 18:10:59 +0400 Subject: [PATCH 1/4] docs: add alert about NetworkPolicy restrictions for VM node access Signed-off-by: Vladislav Panfilov --- docs/USER_GUIDE.md | 4 ++++ docs/USER_GUIDE.ru.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index 4d1bc68edc..45daea7841 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -2391,6 +2391,10 @@ Predictable interface order works only on guest OS with systemd (e.g. Ubuntu, De Virtual machines can be accessed directly via their fixed IP addresses. However, this approach has limitations: direct use of IP addresses requires manual management, complicates scaling, and makes the infrastructure less flexible. An alternative is services—a mechanism that abstracts access to VMs by providing logical entry points instead of binding to physical addresses. +{{< alert level="info" >}} +If connecting to a VM from a cluster node does not work, check `NetworkPolicy` in the project. Project network policies can restrict access to the VM, including connections from cluster nodes. +{{< /alert >}} + Services simplify interaction with both individual VMs and groups of similar VMs. For example, the ClusterIP service type creates a fixed internal address that can be used to access both a single VM and a group of VMs, regardless of their actual IP addresses. This allows other system components to interact with resources through a stable name or IP, automatically directing traffic to the right machines. Services also serve as a load balancing tool: they distribute requests evenly among all connected machines, ensuring fault tolerance and ease of expansion without the need to reconfigure clients. diff --git a/docs/USER_GUIDE.ru.md b/docs/USER_GUIDE.ru.md index a5a6322270..5d00bcfb06 100644 --- a/docs/USER_GUIDE.ru.md +++ b/docs/USER_GUIDE.ru.md @@ -2410,6 +2410,10 @@ MAC-адреса остаются неизменными, но имена инт К виртуальным машинам можно обращаться напрямую по их фиксированным IP-адресам. Однако такой подход имеет ограничения: прямое использование IP-адресов требует ручного управления, усложняет масштабирование и делает инфраструктуру менее гибкой. Альтернативой служат сервисы — механизм, который абстрагирует доступ к ВМ, предоставляя логические точки входа вместо привязки к физическим адресам. +{{< alert level="info" >}} +Если подключение к ВМ с узла кластера не проходит, проверьте `NetworkPolicy` в проекте. Сетевые политики проекта могут ограничивать доступ к ВМ, в том числе соединения с узлов кластера. +{{< /alert >}} + Сервисы упрощают взаимодействие как с отдельными ВМ, так и с группами подобных ВМ. Например, тип сервиса ClusterIP создаёт фиксированный внутренний адрес, через который можно обращаться как к одной, так и к группе ВМ, независимо от их реальных IP-адресов. Это позволяет другим компонентам системы взаимодействовать с ресурсами через стабильное имя или IP, автоматически направляя трафик к нужным машинам. Сервисы также служат инструментом балансировки нагрузки: они равномерно распределяют запросы между всеми связанными машинами, обеспечивая отказоустойчивость и простоту расширения без необходимости перенастройки клиентов. From d224f4ed1822f558d757f8a62fbfdfc8bf5c78a5 Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Mon, 27 Apr 2026 19:05:53 +0400 Subject: [PATCH 2/4] docs: update maximum possible number of cores in CPU topology Signed-off-by: Vladislav Panfilov --- docs/USER_GUIDE.md | 6 +++--- docs/USER_GUIDE.ru.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index 45daea7841..d2e761f17d 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -1320,13 +1320,13 @@ Next, the system automatically determines the topology depending on the specifie - 8 sockets are used. - Cores are evenly distributed among the sockets. - Step change: 8 (the total number of cores must be a multiple of 8). - - Valid values: 72, 80, 88, 96, and so on up to 128. + - Valid values: 72, 80, 88, 96, and so on up to 248. - Limitations: minimum 9 cores per socket. - Example: If `.spec.cpu.cores` = 80, topology: 8 sockets with 10 cores each. The change step indicates by how much the total number of cores can be increased or decreased so that they are evenly distributed across the sockets. -The maximum possible number of cores is 128. +The maximum possible number of cores is 248. Summary table by `spec.cpu.cores` range: @@ -1335,7 +1335,7 @@ Summary table by `spec.cpu.cores` range: | `1 ≤ cores ≤ 16` | 1 | 1 | 1 | 16 | | `16 < cores ≤ 32` | 2 | 2 | 9 | 16 | | `32 < cores ≤ 64` | 4 | 4 | 9 | 16 | -| `64 < cores ≤ 128` | 8 | 8 | 9 | 16 | +| `64 < cores ≤ 248` | 8 | 8 | 9 | 16 | Memory overhead does not depend on the maximum possible vCPU topology; it is calculated from actively used cores: (sockets × cores per socket × threads per core) × 8 MiB per logical CPU. diff --git a/docs/USER_GUIDE.ru.md b/docs/USER_GUIDE.ru.md index 5d00bcfb06..943bd0b2ad 100644 --- a/docs/USER_GUIDE.ru.md +++ b/docs/USER_GUIDE.ru.md @@ -1338,13 +1338,13 @@ spec: - Используется 8 сокетов. - Ядра равномерно распределяются между сокетами. - Шаг изменения: 8 (общее количество ядер должно быть кратно 8). - - Допустимые значения: 72, 80, 88, 96 и так далее до 128. + - Допустимые значения: 72, 80, 88, 96 и так далее до 248. - Ограничения: минимум 9 ядер в сокете. - Пример: Если задано `.spec.cpu.cores` = 80, то топология: 8 сокетов по 10 ядер каждый. Шаг изменения указывает, на сколько можно увеличивать или уменьшать общее количество ядер, чтобы они равномерно распределялись по сокетам. -Максимально возможное количество ядер - 128. +Максимально возможное количество ядер - 248. Сводная таблица по диапазону `spec.cpu.cores`: @@ -1353,7 +1353,7 @@ spec: | `1 ≤ cores ≤ 16` | 1 | 1 | 1 | 16 | | `16 < cores ≤ 32` | 2 | 2 | 9 | 16 | | `32 < cores ≤ 64` | 4 | 4 | 9 | 16 | -| `64 < cores ≤ 128` | 8 | 8 | 9 | 16 | +| `64 < cores ≤ 248` | 8 | 8 | 9 | 16 | Overhead памяти не зависит от максимально возможной топологии по числу vCPU и вычисляется по фактически активным ядрам: (число сокетов × ядер на сокет × число потоков на ядро) × 8 MiB на каждое логическое ядро. From a1d62868f694adf4ae7e29552a536dc1b253b426 Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Wed, 29 Apr 2026 20:39:36 +0400 Subject: [PATCH 3/4] docs: update Ubuntu version Signed-off-by: Vladislav Panfilov --- docs/ADMIN_GUIDE.md | 40 ++++++++++++++--------------- docs/ADMIN_GUIDE.ru.md | 40 ++++++++++++++--------------- docs/USER_GUIDE.md | 58 +++++++++++++++++++++--------------------- docs/USER_GUIDE.ru.md | 58 +++++++++++++++++++++--------------------- 4 files changed, 98 insertions(+), 98 deletions(-) diff --git a/docs/ADMIN_GUIDE.md b/docs/ADMIN_GUIDE.md index 6bb53b0ee5..f4ad17a907 100644 --- a/docs/ADMIN_GUIDE.md +++ b/docs/ADMIN_GUIDE.md @@ -292,7 +292,7 @@ In this example, let's create a cluster image. apiVersion: virtualization.deckhouse.io/v1alpha2 kind: ClusterVirtualImage metadata: - name: ubuntu-22-04 + name: ubuntu-24-04 spec: # Source for creating an image. dataSource: @@ -305,17 +305,17 @@ In this example, let's create a cluster image. 1. To verify that the ClusterVirtualImage has been created, run the following command: ```bash - d8 k get clustervirtualimage ubuntu-22-04 + d8 k get clustervirtualimage ubuntu-24-04 # A short version of the command. - d8 k get cvi ubuntu-22-04 + d8 k get cvi ubuntu-24-04 ``` In the output, you should see information about the resource: ```console NAME PHASE CDROM PROGRESS AGE - ubuntu-22-04 Ready false 100% 23h + ubuntu-24-04 Ready false 100% 23h ``` Once created, the ClusterVirtualImage resource can be in one of the following states (phases): @@ -335,27 +335,27 @@ Diagnosing problems with a resource is done by analyzing the information in the You can trace the image creation process by adding the `-w` key to the command used for verification of the created resource: ```bash -d8 k get cvi ubuntu-22-04 -w +d8 k get cvi ubuntu-24-04 -w ``` Example output: ```console NAME PHASE CDROM PROGRESS AGE -ubuntu-22-04 Provisioning false 4s -ubuntu-22-04 Provisioning false 0.0% 4s -ubuntu-22-04 Provisioning false 28.2% 6s -ubuntu-22-04 Provisioning false 66.5% 8s -ubuntu-22-04 Provisioning false 100.0% 10s -ubuntu-22-04 Provisioning false 100.0% 16s -ubuntu-22-04 Ready false 100% 18s +ubuntu-24-04 Provisioning false 4s +ubuntu-24-04 Provisioning false 0.0% 4s +ubuntu-24-04 Provisioning false 28.2% 6s +ubuntu-24-04 Provisioning false 66.5% 8s +ubuntu-24-04 Provisioning false 100.0% 10s +ubuntu-24-04 Provisioning false 100.0% 16s +ubuntu-24-04 Ready false 100% 18s ``` You can get additional information about the downloaded image from the description of the ClusterVirtualImage resource. To check on the description, run the following command: ```bash -d8 k describe cvi ubuntu-22-04 +d8 k describe cvi ubuntu-24-04 ``` How to create an image from an HTTP server in the web interface: @@ -374,20 +374,20 @@ An image stored in a container registry has a certain format. Let's look at an e 1. First, download the image locally: ```bash - curl -L https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.img -o ubuntu2204.img + curl -L https://cloud-images.ubuntu.com/minimal/releases/noble/release/ubuntu-24.04-minimal-cloudimg-amd64.img -o ubuntu2404.img ``` 1. Next, create a `Dockerfile` with the following contents: ```Dockerfile FROM scratch - COPY ubuntu2204.img /disk/ubuntu2204.img + COPY ubuntu2404.img /disk/ubuntu2404.img ``` 1. Build the image and upload it to the container registry. The example below uses `docker.io` as the container registry. You would need to have a service account and a configured environment to run it. ```bash - docker build -t docker.io//ubuntu2204:latest + docker build -t docker.io//ubuntu2404:latest ``` Where `username` is the username specified when registering at `docker.io`. @@ -395,7 +395,7 @@ An image stored in a container registry has a certain format. Let's look at an e 1. Upload the created image to the container registry: ```bash - docker push docker.io//ubuntu2204:latest + docker push docker.io//ubuntu2404:latest ``` 1. To use this image, create a resource as an example: @@ -405,12 +405,12 @@ An image stored in a container registry has a certain format. Let's look at an e apiVersion: virtualization.deckhouse.io/v1alpha2 kind: ClusterVirtualImage metadata: - name: ubuntu-2204 + name: ubuntu-2404 spec: dataSource: type: ContainerImage containerImage: - image: docker.io//ubuntu2204:latest + image: docker.io//ubuntu2404:latest EOF ``` @@ -536,7 +536,7 @@ Images eligible for cleanup: KIND NAMESPACE NAME ClusterVirtualImage debian-12 VirtualDisk default debian-10-root -VirtualImage default ubuntu-2204 +VirtualImage default ubuntu-2404 ``` ## Virtual machine classes diff --git a/docs/ADMIN_GUIDE.ru.md b/docs/ADMIN_GUIDE.ru.md index 7c8609d701..86af7a9eea 100644 --- a/docs/ADMIN_GUIDE.ru.md +++ b/docs/ADMIN_GUIDE.ru.md @@ -294,7 +294,7 @@ spec: apiVersion: virtualization.deckhouse.io/v1alpha2 kind: ClusterVirtualImage metadata: - name: ubuntu-22-04 + name: ubuntu-24-04 spec: # Источник для создания образа. dataSource: @@ -307,17 +307,17 @@ spec: 1. Проверьте результат создания ресурса ClusterVirtualImage, выполнив следующую команду: ```bash - d8 k get clustervirtualimage ubuntu-22-04 + d8 k get clustervirtualimage ubuntu-24-04 # Короткий вариант команды. - d8 k get cvi ubuntu-22-04 + d8 k get cvi ubuntu-24-04 ``` В результате будет выведена информация о ресурсе: ```console NAME PHASE CDROM PROGRESS AGE - ubuntu-22-04 Ready false 100% 23h + ubuntu-24-04 Ready false 100% 23h ``` После создания ресурс ClusterVirtualImage может находиться в одном из следующих состояний (фаз): @@ -337,27 +337,27 @@ spec: Чтобы отследить процесс создания образа, добавьте ключ `-w` к команде проверки результата создания ресурса: ```bash -d8 k get cvi ubuntu-22-04 -w +d8 k get cvi ubuntu-24-04 -w ``` Пример вывода: ```console NAME PHASE CDROM PROGRESS AGE -ubuntu-22-04 Provisioning false 4s -ubuntu-22-04 Provisioning false 0.0% 4s -ubuntu-22-04 Provisioning false 28.2% 6s -ubuntu-22-04 Provisioning false 66.5% 8s -ubuntu-22-04 Provisioning false 100.0% 10s -ubuntu-22-04 Provisioning false 100.0% 16s -ubuntu-22-04 Ready false 100% 18s +ubuntu-24-04 Provisioning false 4s +ubuntu-24-04 Provisioning false 0.0% 4s +ubuntu-24-04 Provisioning false 28.2% 6s +ubuntu-24-04 Provisioning false 66.5% 8s +ubuntu-24-04 Provisioning false 100.0% 10s +ubuntu-24-04 Provisioning false 100.0% 16s +ubuntu-24-04 Ready false 100% 18s ``` В описании ресурса ClusterVirtualImage можно получить дополнительную информацию о скачанном образе. Для этого выполните следующую команду: ```bash -d8 k describe cvi ubuntu-22-04 +d8 k describe cvi ubuntu-24-04 ``` Как создать образ с HTTP-сервера в веб-интерфейсе: @@ -376,20 +376,20 @@ d8 k describe cvi ubuntu-22-04 1. Для начала загрузите образ локально: ```bash - curl -L https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.img -o ubuntu2204.img + curl -L https://cloud-images.ubuntu.com/minimal/releases/noble/release/ubuntu-24.04-minimal-cloudimg-amd64.img -o ubuntu2404.img ``` 1. Далее создайте `Dockerfile` со следующим содержимым: ```Dockerfile FROM scratch - COPY ubuntu2204.img /disk/ubuntu2204.img + COPY ubuntu2404.img /disk/ubuntu2404.img ``` 1. Соберите образ и загрузите его в реестр контейнеров. В качестве реестра контейнеров в примере ниже использован `docker.io`. Для выполнения вам необходимо иметь учётную запись сервиса и настроенное окружение. ```bash - docker build -t docker.io//ubuntu2204:latest + docker build -t docker.io//ubuntu2404:latest ``` где `` — имя пользователя, указанное при регистрации в `docker.io`. @@ -397,7 +397,7 @@ d8 k describe cvi ubuntu-22-04 1. Загрузите созданный образ в реестр контейнеров: ```bash - docker push docker.io//ubuntu2204:latest + docker push docker.io//ubuntu2404:latest ``` 1. Чтобы использовать этот образ, создайте в качестве примера ресурс: @@ -407,12 +407,12 @@ d8 k describe cvi ubuntu-22-04 apiVersion: virtualization.deckhouse.io/v1alpha2 kind: ClusterVirtualImage metadata: - name: ubuntu-2204 + name: ubuntu-2404 spec: dataSource: type: ContainerImage containerImage: - image: docker.io//ubuntu2204:latest + image: docker.io//ubuntu2404:latest EOF ``` @@ -539,7 +539,7 @@ Images eligible for cleanup: KIND NAMESPACE NAME ClusterVirtualImage debian-12 VirtualDisk default debian-10-root -VirtualImage default ubuntu-2204 +VirtualImage default ubuntu-2404 ``` ## Классы виртуальных машин diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index d2e761f17d..06e9c7c9d2 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -10,7 +10,7 @@ This guide is intended for users of the `virtualization` module in the Deckhouse ## Quick start on creating a VM -Example of creating a virtual machine with Ubuntu 22.04. +Example of creating a virtual machine with Ubuntu 24.04. 1. Create a virtual machine image from an external source: @@ -299,7 +299,7 @@ d8 k apply -f - </ubuntu2204:latest +docker build -t docker.io//ubuntu2404:latest ``` where `username` is the username specified when registering with docker.io. @@ -455,7 +455,7 @@ where `username` is the username specified when registering with docker.io. Load the created image into the container registry: ```bash -docker push docker.io//ubuntu2204:latest +docker push docker.io//ubuntu2404:latest ``` To use this image, create a resource as an example: @@ -465,13 +465,13 @@ d8 k apply -f - </ubuntu2204:latest + image: docker.io//ubuntu2404:latest EOF ``` @@ -483,7 +483,7 @@ How to create an image from Container Registry in the web interface: - Select "Upload data from container image" from the list. - In the form that opens, enter the image name in the "Image Name" field. - In the "Storage" field, select `ContainerRegistry`. -- In the "Image in Container Registry" field, specify `docker.io//ubuntu2204:latest`. +- In the "Image in Container Registry" field, specify `docker.io//ubuntu2404:latest`. - Click the "Create" button. - The image status is displayed at the top left, under the image name. @@ -751,14 +751,14 @@ When creating a disk, you can specify its desired size, which must be equal to o Using the example of the previously created image `VirtualImage`, let's consider the command that allows you to determine the size of the unpacked image: ```bash -d8 k get vi ubuntu-22-04 -o wide +d8 k get vi ubuntu-24-04 -o wide ``` Example output: ```txt NAME PHASE CDROM PROGRESS STOREDSIZE UNPACKEDSIZE REGISTRY URL AGE -ubuntu-22-04 Ready false 100% 285.9Mi 2.5Gi dvcr.d8-virtualization.svc/cvi/ubuntu-22-04:eac95605-7e0b-4a32-bb50-cc7284fd89d0 122m +ubuntu-24-04 Ready false 100% 285.9Mi 2.5Gi dvcr.d8-virtualization.svc/cvi/ubuntu-24-04:eac95605-7e0b-4a32-bb50-cc7284fd89d0 122m ``` The size you are looking for is specified in the **UNPACKEDSIZE** column and is 2.5Gi. @@ -783,7 +783,7 @@ spec: type: ObjectRef objectRef: kind: VirtualImage - name: ubuntu-22-04 + name: ubuntu-24-04 EOF ``` @@ -805,7 +805,7 @@ spec: type: ObjectRef objectRef: kind: VirtualImage - name: ubuntu-22-04 + name: ubuntu-24-04 EOF ``` @@ -1000,7 +1000,7 @@ The full description of virtual machine configuration parameters can be found at ### Creating a virtual machine -Below is an example of a simple virtual machine configuration running Ubuntu OS 22.04. The example uses the initial virtual machine initialization script (cloud-init), which installs the `qemu-guest-agent` guest agent and the `nginx` service, and creates the `cloud` user with the `cloud` password: +Below is an example of a simple virtual machine configuration running Ubuntu OS 24.04. The example uses the initial virtual machine initialization script (cloud-init), which installs the `qemu-guest-agent` guest agent and the `nginx` service, and creates the `cloud` user with the `cloud` password: The password in the example was generated using the command `mkpasswd --method=SHA-512 --rounds=4096 -S saltsalt` and you can change it to your own if necessary: diff --git a/docs/USER_GUIDE.ru.md b/docs/USER_GUIDE.ru.md index 943bd0b2ad..2a1020e3e3 100644 --- a/docs/USER_GUIDE.ru.md +++ b/docs/USER_GUIDE.ru.md @@ -10,7 +10,7 @@ weight: 50 ## Быстрый старт по созданию ВМ -Пример создания виртуальной машины с Ubuntu 22.04. +Пример создания виртуальной машины с Ubuntu 24.04. 1. Создайте образ виртуальной машины из внешнего источника: @@ -304,7 +304,7 @@ weight: 50 apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualImage metadata: - name: ubuntu-22-04 + name: ubuntu-24-04 spec: # Сохраним образ в DVCR. storage: ContainerRegistry @@ -319,16 +319,16 @@ weight: 50 1. Проверьте результат создания `VirtualImage`: ```bash - d8 k get virtualimage ubuntu-22-04 + d8 k get virtualimage ubuntu-24-04 # или более короткий вариант - d8 k get vi ubuntu-22-04 + d8 k get vi ubuntu-24-04 ``` Пример вывода: ```txt NAME PHASE CDROM PROGRESS AGE - ubuntu-22-04 Ready false 100% 23h + ubuntu-24-04 Ready false 100% 23h ``` После создания ресурс `VirtualImage` может находиться в следующих состояниях (фазах): @@ -349,26 +349,26 @@ weight: 50 Отследить процесс создания образа можно путем добавления ключа `-w` к предыдущей команде: ```bash -d8 k get vi ubuntu-22-04 -w +d8 k get vi ubuntu-24-04 -w ``` Пример вывода: ```txt NAME PHASE CDROM PROGRESS AGE -ubuntu-22-04 Provisioning false 4s -ubuntu-22-04 Provisioning false 0.0% 4s -ubuntu-22-04 Provisioning false 28.2% 6s -ubuntu-22-04 Provisioning false 66.5% 8s -ubuntu-22-04 Provisioning false 100.0% 10s -ubuntu-22-04 Provisioning false 100.0% 16s -ubuntu-22-04 Ready false 100% 18s +ubuntu-24-04 Provisioning false 4s +ubuntu-24-04 Provisioning false 0.0% 4s +ubuntu-24-04 Provisioning false 28.2% 6s +ubuntu-24-04 Provisioning false 66.5% 8s +ubuntu-24-04 Provisioning false 100.0% 10s +ubuntu-24-04 Provisioning false 100.0% 16s +ubuntu-24-04 Ready false 100% 18s ``` В описание ресурса `VirtualImage` можно получить дополнительную информацию о скачанном образе: ```bash -d8 k describe vi ubuntu-22-04 +d8 k describe vi ubuntu-24-04 ``` Как создать образ с HTTP-сервера в веб-интерфейсе: @@ -390,7 +390,7 @@ d8 k apply -f - </ubuntu2204:latest + docker build -t docker.io//ubuntu2404:latest ``` где `username` — имя пользователя, указанное при регистрации в docker.io. @@ -461,7 +461,7 @@ ubuntu-22-04-pvc Ready false 100% 23h 1. Загрузите созданный образ в container registry: ```bash - docker push docker.io//ubuntu2204:latest + docker push docker.io//ubuntu2404:latest ``` 1. Чтобы использовать этот образ, создайте в качестве примера ресурс: @@ -471,13 +471,13 @@ ubuntu-22-04-pvc Ready false 100% 23h apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualImage metadata: - name: ubuntu-2204 + name: ubuntu-2404 spec: storage: ContainerRegistry dataSource: type: ContainerImage containerImage: - image: docker.io//ubuntu2204:latest + image: docker.io//ubuntu2404:latest EOF ``` @@ -489,7 +489,7 @@ ubuntu-22-04-pvc Ready false 100% 23h - Из списка выберите «Загрузить данные из образа контейнера». - В открывшейся форме в поле «Имя образа» введите имя образа. - В поле «Хранилище» выберите `ContainerRegistry`. -- В поле «Образ в реестре контейнеров» укажите `docker.io//ubuntu2204:latest`. +- В поле «Образ в реестре контейнеров» укажите `docker.io//ubuntu2404:latest`. - Нажмите кнопку «Создать». - Статус образа отображается слева вверху, под именем образа. @@ -759,14 +759,14 @@ blank-disk Ready 100Mi 1m2s На примере ранее созданного проектного образа `VirtualImage`, рассмотрим команду позволяющую определить размер распакованного образа: ```bash -d8 k get vi ubuntu-22-04 -o wide +d8 k get vi ubuntu-24-04 -o wide ``` Пример вывода: ```txt NAME PHASE CDROM PROGRESS STOREDSIZE UNPACKEDSIZE REGISTRY URL AGE -ubuntu-22-04 Ready false 100% 285.9Mi 2.5Gi dvcr.d8-virtualization.svc/cvi/ubuntu-22-04:eac95605-7e0b-4a32-bb50-cc7284fd89d0 122m +ubuntu-24-04 Ready false 100% 285.9Mi 2.5Gi dvcr.d8-virtualization.svc/cvi/ubuntu-24-04:eac95605-7e0b-4a32-bb50-cc7284fd89d0 122m ``` Искомый размер указан в колонке **UNPACKEDSIZE** и равен 2.5Gi. @@ -791,7 +791,7 @@ spec: type: ObjectRef objectRef: kind: VirtualImage - name: ubuntu-22-04 + name: ubuntu-24-04 EOF ``` @@ -813,7 +813,7 @@ spec: type: ObjectRef objectRef: kind: VirtualImage - name: ubuntu-22-04 + name: ubuntu-24-04 EOF ``` @@ -1008,7 +1008,7 @@ d8 k patch vd disk2 --type=merge --patch '{"spec":{"persistentVolumeClaim":{"sto ### Создание виртуальной машины -Ниже представлен пример конфигурации виртуальной машины, запускающей ОС Ubuntu 22.04. В примере используется сценарий первичной инициализации виртуальной машины (cloud-init), который устанавливает гостевого агента `qemu-guest-agent` и сервис `nginx`, а также создает пользователя `cloud` с паролем `cloud`: +Ниже представлен пример конфигурации виртуальной машины, запускающей ОС Ubuntu 24.04. В примере используется сценарий первичной инициализации виртуальной машины (cloud-init), который устанавливает гостевого агента `qemu-guest-agent` и сервис `nginx`, а также создает пользователя `cloud` с паролем `cloud`: Пароль в примере был сгенерирован с использованием команды `mkpasswd --method=SHA-512 --rounds=4096 -S saltsalt` и при необходимости вы можете его поменять на свой: From 2814223b7f79deb0abe04cfdc847cccdba900339 Mon Sep 17 00:00:00 2001 From: Vladislav Panfilov Date: Wed, 6 May 2026 19:22:29 +0400 Subject: [PATCH 4/4] docs: add docs about memory hotplug Signed-off-by: Vladislav Panfilov --- docs/USER_GUIDE.md | 42 ++++++++++++++++++++++++++++++++++++++++++ docs/USER_GUIDE.ru.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index 06e9c7c9d2..ca19aff61a 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -1955,6 +1955,48 @@ Limitations: - If the change requires CPU topology reconfiguration, a VM restart is required. - When decreasing CPU count within the current topology, CPU distribution across sockets may become uneven. +### Memory hotplug + +Memory hotplug lets you increase `spec.memory.size` for a running VM without restart when the change can be applied through live migration. Decreasing memory always requires a VM restart. + +This functionality is disabled by default. + +To enable this functionality, add `HotplugMemoryWithLiveMigration` to `.spec.settings.featureGates` array in the ModuleConfig/virtualization: + +```yaml +kind: ModuleConfig +metadata: + name: virtualization +spec: + settings: + featureGates: + - HotplugMemoryWithLiveMigration +``` + +If the new `spec.memory.size` is greater than the current value and the VM is migratable, the change is applied through live migration. If you need to shrink memory, the VM originally had less than 1 GiB of memory, or the VM cannot be migrated, a VM restart is required. The need for restart is reflected by the `AwaitingRestartToApplyConfiguration` condition. + +Guest OS specifics: + +- After live migration, newly added memory blocks may require explicit activation inside the guest OS; memory configured at VM creation does not require extra activation. +- On Linux, added memory can be enabled through sysfs (see device names in `ls /sys/bus/memory/devices/`): + + ```bash + echo 1 > /sys/bus/memory/devices/memoryXXX/online + ``` + +- To automatically enable added memory on Linux, configure a `udev` rule. After that, added memory becomes visible in `free` and `lsmem`: + + ```bash + cat <<'EOF' > /etc/udev/rules.d/99-hotplug-memory.rules + SUBSYSTEM=="memory",ACTION=="add",DEVPATH=="/devices/system/memory/memory[0-9]*", TEST=="state", ATTR{state}!="online", ATTR{state}="online" + EOF + ``` + +Limitations: + +- Increasing memory without restart is possible only if the VM memory size is at least 1 GiB. If the VM was created with less than 1 GiB, any memory size change requires a restart. +- In the current module version, the maximum VM memory size is limited to 256 GiB. + ### Placement of VMs by nodes The following methods can be used to manage the placement of virtual machines (placement parameters) across nodes: diff --git a/docs/USER_GUIDE.ru.md b/docs/USER_GUIDE.ru.md index 2a1020e3e3..28378f4b56 100644 --- a/docs/USER_GUIDE.ru.md +++ b/docs/USER_GUIDE.ru.md @@ -1971,6 +1971,46 @@ spec: - Если изменение требует смены топологии CPU, необходима перезагрузка ВМ. - При уменьшении количества CPU в пределах текущей топологии распределение ядер по сокетам может стать неравномерным. +### Горячее подключение памяти + +Горячее подключение памяти позволяет увеличивать объём памяти (`spec.memory.size`) у работающей ВМ без перезагрузки, если изменение можно применить через живую миграцию. Уменьшение размера памяти всегда требует перезагрузки ВМ. + +По умолчанию эта функциональность отключена. Чтобы включить, добавьте `HotplugMemoryWithLiveMigration` в массив `.spec.settings.featureGates` в ModuleConfig/virtualization: + +```yaml +kind: ModuleConfig +metadata: + name: virtualization +spec: + settings: + featureGates: + - HotplugMemoryWithLiveMigration +``` + +Если новое значение `spec.memory.size` больше текущего и ВМ допускает миграцию, изменение применяется через живую миграцию. Если требуется уменьшить память, изначально заданный размер памяти меньше 1 ГБ или ВМ не может быть мигрирована, потребуется перезагрузка ВМ. Необходимость перезагрузки отражается в условии `AwaitingRestartToApplyConfiguration`. + +Особенности гостевых ОС: + +- После живой миграции при увеличении памяти новые блоки памяти могут потребовать явной активации в гостевой ОС; память, заданная при создании ВМ, дополнительной активации не требует. +- В Linux добавленную память можно включить через sysfs (имя устройства см. в выводе `ls /sys/bus/memory/devices/`): + + ```bash + echo 1 > /sys/bus/memory/devices/memoryXXX/online + ``` + +- Чтобы в Linux автоматически включать добавленную память, настройте правило `udev`. После этого добавленная память отображается в выводе `free` и `lsmem`: + + ```bash + cat <<'EOF' > /etc/udev/rules.d/99-hotplug-memory.rules + SUBSYSTEM=="memory",ACTION=="add",DEVPATH=="/devices/system/memory/memory[0-9]*", TEST=="state", ATTR{state}!="online", ATTR{state}="online" + EOF + ``` + +Ограничения: + +- Увеличение памяти без перезагрузки возможно только если размер памяти ВМ не меньше 1 ГБ. Если изначально задано меньше 1 ГБ, любое изменение размера потребует перезагрузки. +- Максимальный размер памяти для ВМ в текущей версии модуля ограничен значением 256 ГБ. + ### Размещение ВМ по узлам Для управления размещением виртуальных машин (параметров размещения) по узлам можно использовать следующие подходы: