Создать группу ВМ с Container Optimized Image

    Для запуска нескольких экземпляров сервиса в Docker-контейнерах вы можете создать группу виртуальных машин на базе образа Container Optimized Image. В такой группе обновлять Docker-контейнер можно с помощью метаданных ВМ.

    Предупреждение

    Создавая группы, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Load Balancer, виртуальные машины и диски. Для этого измените или удалите группу полностью.

    По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.

    Чтобы создать группу виртуальных машин на базе Container Optimized Image:

    1. Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

    2. По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

    3. Посмотрите описание команды CLI для создания группы виртуальных машин:

      $ yc compute instance-group create --help
      
    4. Проверьте, есть ли в каталоге сети:

      $ yc vpc network list
      

      Если ни одной сети нет, создайте ее.

    5. Создайте YAML-файл с именем, например, specification.yaml.

    6. Выберите последнюю версию образа Container Optimized Image из публичных образов.

      Чтобы узнать идентификтор последней версии образа Container Optimized Image, выполните следующую команду:

      $ yc compute image get-latest-from-family container-optimized-image --folder-id standard-images
      id: <ID образа>
      folder_id: standard-images
      ...
      
    7. Опишите в YAML-файле specification.yaml, который вы создали:

      • Общую информацию о группе:

        name: container-optimized-group
        service_account_id: aje3932acd8avp6edhbt
        description: "This instance group was created from YAML config"
        

        Ключи:

        Ключ Значение
        name Произвольное имя группы виртуальных машин. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа.
        service_account_id Идентификатор сервисного аккаунта.
        description Произвольное описание группы виртуальных машин.
      • Шаблон виртуальной машины:

        instance_template:
            platform_id: standard-v1
            resources_spec:
                memory: 4G
                cores: 1
            boot_disk_spec:
                mode: READ_WRITE
                disk_spec:
                    image_id: fd81a49qficqvt0dthu8
                    type_id: network-hdd
                    size: 32G
            network_interface_specs:
                - network_id: c64mknqgnd8avp6edhbt
                  primary_v4_address_spec: {}
            metadata:
                docker-container-declaration: |-
                    spec:
                        containers:
                            - name: nginx
                              image: cr.yandex/mirror/nginx:1.17.4-alpine
                              securityContext:
                                privileged: false
                              tty: false
                              stdin: false
        

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

        Название Пример написания в YAML-файле
        Килобайт 1073741824k
        Мегабайт 1048576m
        Гигабайт 1024g
        Терабайт 1t

        Ключи:

        Ключ Значение
        platform_id Идентификатор платформы.
        memory Количество памяти (RAM).
        cores Количество ядер процессора (vCPU).
        mode Режим доступа к диску.
        - READ_ONLY — доступ на чтение.
        - READ_WRITE — доступ на чтение и запись.
        image_id Идентификатор публичного образа Container Optimized Image.
        type_id Тип диска.
        size Размер диска.
        network_id Идентификатор сети default-net.
        primary_v4_address_spec Спецификация версии интернет протокола IPv4. На данный момент доступен только протокол IPv4. Вы можете предоставить публичный доступ к виртуальным машинам группы, указав версию IP для публичного IP-адреса. Подробнее читайте в разделе Описание шаблона в YAML-файле.
        metadata Значения, которые будут переданы в метаданные виртуальной машины.
        docker-container-declaration Ключ в метаданных виртуальной машины, по которому доступно описание Docker-контейнера.
      • Политики:

        deploy_policy:
            max_unavailable: 1
            max_expansion: 0
        scale_policy:
            fixed_scale:
                size: 3
        allocation_policy:
            zones:
                - zone_id: ru-central1-a
        

        Ключи:

        Ключ Значение
        deploy_policy Политика развертывания виртуальных машин в группе.
        scale_policy Политика масштабирования виртуальных машин в группе.
        allocation_policy Политика распределения виртуальных машин по зонам и регионам.

        Полный код файла specification.yaml:

        name: container-optimized-group
        service_account_id: aje3932acd8avp6edhbt
        description: "This instance group was created from YAML config"
        instance_template:
            platform_id: standard-v1
            resources_spec:
                memory: 4G
                cores: 1
            boot_disk_spec:
                mode: READ_WRITE
                disk_spec:
                    image_id: fd81a49qficqvt0dthu8
                    type_id: network-hdd
                    size: 32G
            network_interface_specs:
                - network_id: c64mknqgnd8avp6edhbt
                  primary_v4_address_spec: {}
            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
        
    8. Создайте группу виртуальных машин в каталоге по умолчанию:

      $ yc 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.
      • С одним vCPU и 4 ГБ RAM.
      • С сетевым HDD-диском объемом 32 ГБ.