Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Container Solution
  • Начало работы
  • Сценарии использования
    • Все сценарии
    • Создать ВМ с Container Optimized Image
    • Создать ВМ с Container Optimized Image и дополнительным томом для Docker-контейнера
    • Создать ВМ с Container Optimized Image и несколькими Docker-контейнерами
    • Создать группу ВМ с Container Optimized Image
    • Изменить ВМ с Container Optimized Image
    • Настройка вывода информации из Docker-контейнера в серийный порт
    • Создать ВМ и группу ВМ с Container Optimized Image с помощью Terraform
  • Концепции
    • Образ Container Optimized Image
    • Квоты и лимиты
  • Правила тарификации
  • Вопросы и ответы
  1. Сценарии использования
  2. Создать группу ВМ с Container Optimized Image

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

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

    Внимание

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

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

    Чтобы создать группу ВМ на базе Container Optimized Image:

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

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

    3. Посмотрите описание команды CLI для создания группы ВМ:

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

      CLI
      yc vpc network list
      

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

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

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

      Узнайте идентификатор последней версии образа Container Optimized Image:

      CLI
      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: 2G
            cores: 2
          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-адреса.
        • metadata — значения, которые будут переданы в метаданные ВМ.
        • docker-container-declaration — ключ в метаданных ВМ, при котором используется COI спецификация Docker-контейнера. Вы можете использовать в метаданных Docker Compose спецификацию, для этого вместо ключа docker-container-declaration укажите ключ docker-compose.
      • Политики:

        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:
          service_account_id: aje3932acd8avp6edhbt # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам.
          platform_id: standard-v1
          resources_spec:
            memory: 2G
            cores: 2
          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
        

        Примечание

        Чтобы использовать в specification.yaml Docker Compose спецификацию, вместо ключа docker-container-declaration укажите ключ docker-compose.

    8. Создайте группу ВМ в каталоге по умолчанию:

      CLI
      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.
      • С 2 vCPU и 2 ГБ RAM.
      • С сетевым HDD-диском объемом 32 ГБ.
    Language
    Вакансии
    Политика конфиденциальности
    Условия использования
    © 2021 ООО «Яндекс.Облако»