Создать группу ВМ с Container Optimized Image в Compute Cloud
Для запуска нескольких экземпляров сервиса в Docker-контейнерах вы можете создать группу виртуальных машин на базе образа Container Optimized Image. В такой группе обновлять Docker-контейнер можно с помощью метаданных ВМ используя COI или Docker Compose спецификацию.
Внимание
Создавая группы ВМ, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Network Load Balancer, ВМ и диски. Вместо этого измените или удалите группу полностью.
По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.
Чтобы создать группу ВМ на базе Container Optimized Image:
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Посмотрите описание команды CLI для создания группы ВМ:
CLIyc compute instance-group create --help
-
Проверьте, есть ли в каталоге сети:
CLIyc vpc network list
Если нет ни одной сети, создайте ее.
-
Создайте YAML-файл с именем, например,
specification.yaml
. -
Узнайте идентификатор последней версии публичного образа Container Optimized Image.
Образ Container Optimized Image в реестре Container Registry может обновляться и меняться в соответствии с релизами. При этом образ на виртуальной машине не обновится автоматически до последней версии. Чтобы создать группу ВМ с последней версией Container Optimized Image, необходимо самостоятельно проверить ее наличие:
CLIYandex Cloud Marketplaceyc compute image get-latest-from-family container-optimized-image --folder-id standard-images
Результат:
id: <идентификатор_последней_версии_COI> folder_id: standard-images ...
- Перейдите на страницу Cloud Marketplace и выберите образ с нужной конфигурацией:
- В блоке Идентификаторы продукта скопируйте значение
image_id
.
-
Опишите в YAML-файле
specification.yaml
, который вы создали:-
Общую информацию о группе:
name: container-optimized-group service_account_id: aje3932acd8a******** description: "This instance group was created from YAML config."
Где:
-
name
— произвольное имя группы ВМ. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа. -
service_account_id
— идентификатор сервисного аккаунта.Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
description
— произвольное описание группы ВМ.
-
-
instance_template: platform_id: standard-v3 resources_spec: memory: 2G cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: <идентификатор_последней_версии_COI> type_id: network-hdd size: 32G network_interface_specs: - network_id: c64mknqgnd8a******** primary_v4_address_spec: {} security_group_ids: - enps0ar5s3ti******** placement_policy: placement_group_id: rmppvhrgm77g******** metadata: docker-container-declaration: |- spec: containers: - name: nginx image: cr.yandex/mirror/nginx:1.17.4-alpine securityContext: privileged: false tty: false stdin: false
По умолчанию размер диска указывается в байтах. Вы можете указать другую единицу измерения с помощью соответствующего суффикса.
Суффикс Приставка и множитель Пример k
кило- (210) 640k
= 640 × 210 =655360
m
мега- (220) 48m
= 48 × 220 =50331648
g
гига- (230) 10g
= 10 × 230 =10737418240
t
тера- (240) 4t
= 4 × 240 =4398046511104
p
пета- (250) 2p
= 2 × 250 =2251799813685248
Где:
platform_id
— идентификатор платформы.memory
— количество памяти (RAM).cores
— количество ядер процессора (vCPU).mode
— режим доступа к диску:READ_ONLY
— доступ на чтение.READ_WRITE
— доступ на чтение и запись.
image_id
— идентификатор публичного образа Container Optimized Image.type_id
— тип диска.size
— размер диска. Должен быть не менее 30 ГБ.network_id
— идентификатор сетиdefault-net
.primary_v4_address_spec
— спецификация версии интернет протокола IPv4. На данный момент доступен только протокол IPv4. Вы можете предоставить публичный доступ к ВМ группы, указав версию IP для публичного IP-адреса.security_group_ids
— список идентификаторов групп безопасности.metadata
— значения, которые будут переданы в метаданные ВМ.docker-container-declaration
— ключ в метаданных ВМ, при котором используется COI спецификация Docker-контейнера. Вы можете использовать в метаданных Docker Compose спецификацию, для этого вместо ключаdocker-container-declaration
укажите ключdocker-compose
.placement_policy
— (опционально) параметры группы размещения ВМ:placement_group_id
— идентификатор группы размещения.
-
deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a instance_tags_pool: - first - second - third
Где:
deploy_policy
— политика развертывания ВМ в группе.scale_policy
— политика масштабирования ВМ в группе.allocation_policy
— политика распределения ВМ по зонам доступности.
Полный код файла
specification.yaml
:name: container-optimized-group service_account_id: aje3932acd8a******** description: "This instance group was created from YAML config." instance_template: service_account_id: aje3932acd8a******** # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам. platform_id: standard-v3 resources_spec: memory: 2G cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: <идентификатор_последней_версии_COI> type_id: network-hdd size: 32G network_interface_specs: - network_id: c64mknqgnd8a******** primary_v4_address_spec: {} security_group_ids: - enps0ar5s3ti******** placement_policy: placement_group_id: rmppvhrgm77g******** metadata: docker-container-declaration: |- spec: containers: - name: nginx image: cr.yandex/mirror/nginx:1.17.4-alpine securityContext: privileged: false tty: false stdin: false deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a instance_tags_pool: - first - second - third
Примечание
Чтобы использовать в
specification.yaml
Docker Compose спецификацию, вместо ключаdocker-container-declaration
укажите ключdocker-compose
.
-
-
Создайте группу ВМ в каталоге по умолчанию:
CLIyc compute instance-group create --file specification.yaml
Команда создаст группу из трех однотипных ВМ со следующими характеристиками:
- С именем
container-optimized-group
. - Из последней версии публичного образа Container Optimized Image.
- С запущенным Docker-контейнером на основе
cr.yandex/mirror/nginx:1.17.4-alpine
. - В сети
default-net
. - В зоне доступности
ru-central1-a
. - С 2 vCPU и 2 ГБ RAM.
- С сетевым HDD-диском объемом 32 ГБ.
- С именем