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

Создание группы виртуальных машин с Container Optimized Image и несколькими Docker-контейнерами

Статья создана
Yandex Cloud
  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  • Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

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

Для создания Docker-контейнеров будет использоваться Docker Compose спецификация.

Внимание

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

Перед началом работы

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

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

Подготовьте окружение

  1. Создайте сервисный аккаунт с именем group-coi и назначьте ему роль editor:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сервисный аккаунт.
    2. Выберите вкладку Сервисные аккаунты.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя group-coi.
    5. Чтобы назначить сервисному аккаунту роль на текущий каталог, нажмите Добавить роль и выберите роль editor.
    6. Нажмите кнопку Создать.
    1. Создайте сервисный аккаунт:

      yc iam service-account create --name group-coi
      

      Результат:

      id: ajeabccde01d23efl1v5
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-02-08T14:32:18.900092Z"
      name: group-coi
      
    2. Назначьте роль сервисному аккаунту:

      yc resource-manager folder add-access-binding b0g12ga82bcv0cdeferg \
        --role editor \
        --subject serviceAccount:ajeabccde01d23efl1v5
      

    Воспользуйтесь методом Create для ресурса ServiceAccount.

  2. Создайте сеть с именем yc-auto-network и подсеть в одной зоне доступности:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сеть.
    2. Выберите сервис Virtual Private Cloud.
    3. Нажмите кнопку Создать сеть.
    4. Задайте имя сети yc-auto-network.
    5. Выберите дополнительную опцию Создать подсети.
    6. Нажмите кнопку Создать сеть.
    1. Создайте сеть:

      yc vpc network create --name yc-auto-network
      

      Результат:

      id: enpabce123hde4ft1r3t
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2020-11-30T14:57:15Z"
      name: yc-auto-network
      
    2. Создайте подсеть в зоне ru-central1-a:

      yc vpc subnet create --network-id enpabce123hde4ft1r3t --range 192.168.1.0/24 --zone ru-central1-a
      

      Результат:

      id: e1lnabc23r1c9d0efoje
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2020-11-30T16:23:12Z"
      network_id: enpabce123hde4ft1r3t
      zone_id: ru-central1-a
      v4_cidr_blocks:
      - 192.168.1.0/24
      
    1. Создайте сеть с помощью метода Create для ресурса Networks.
    2. Создать подсеть в зоне доступности ru-central1-aс помощью метода Create для ресурса Subnets.

Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

  1. Узнайте идентификатор последней версии публичного образа Container Optimized Image.

    Образ Container Optimized Image в реестре Yandex Container Registry может обновляться и меняться в соответствии с релизами. При этом образ на виртуальной машине не обновится автоматически до последней версии. Чтобы создать группу ВМ с последней версией Container Optimized Image, необходимо самостоятельно проверить ее наличие:

    CLI
    Marketplace
    yc compute image get-latest-from-family container-optimized-image --folder-id standard-images
    

    Результат:

    id: <идентификатор последней версии COI>
    folder_id: standard-images
    ...
    
    1. Перейдите на страницу Cloud Marketplace и выберите образ с нужной конфигурацией:
      • Container Optimized Image.
      • Container Optimized Image GPU.
    2. В блоке Идентификаторы продукта скопируйте значение image_id.
  2. Сохраните спецификацию группы ВМ с Container Optimized Image и несколькими Docker-контейнерами в файл specification.yaml:

    name: group-coi-containers # Имя группы ВМ, уникальным в рамках каталога.
    service_account_id: ajeabccde01d23efl1v5 # Идентификатор сервисного аккаунта.
    instance_template:
      service_account_id: ajeabccde01d23efl1v5 # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам.
      platform_id: standard-v3 # Идентификатор платформы.
      resources_spec:
        memory: 2G # Количество памяти (RAM).
        cores: 2 # Количество ядер процессора (vCPU).
      boot_disk_spec:
        mode: READ_WRITE # Режим доступа к диску: чтение и запись.
        disk_spec:
          image_id: <идентификатор последней версии COI>
          type_id: network-hdd # Тип диска.
          size: 32G # Размер диска.
      network_interface_specs:
       - network_id: enpabce123hde4ft1r3t # Идентификатор сети.
         subnet_ids:
           - e1lnabc23r1c9d0efoje # Идентификатор подсети.
         primary_v4_address_spec: {
           one_to_one_nat_spec: {
             ip_version: IPV4 # Спецификация версии интернет-протокола IPv4 для публичного доступа к ВМ.
           }
         }
      metadata: # Значения, которые будут переданы в метаданные ВМ.
       docker-compose: |- # Ключ в метаданных ВМ, при котором используется Docker Compose спецификация.
         version: '3.7'
         services:
           app1:
             container_name: nginx
             image: "nginx"
             ports:
               - "80:80"
             restart: always
           app2:
             container_name: redis
             image: "redis"
             restart: always
       ssh-keys: | # Параметр для передачи SSH-ключа на ВМ.
         yc-user:ssh-ed25519 ABC...d01 user@desktop.ru # Имя пользователя для подключения к ВМ.
    deploy_policy: # Политика развертывания ВМ в группе.
      max_unavailable: 1
      max_expansion: 0
    scale_policy: # Политика масштабирования ВМ в группе.
      fixed_scale:
        size: 2
    allocation_policy: # Политика распределения ВМ по зонам и регионам.
      zones:
        - zone_id: ru-central1-a
    

    Примечание

    Передать SSH-ключ в метаданных ВМ можно с помощью параметра ssh-keys или в строке с пользовательскими метаданными user-data. В этом практическом руководстве используется первый вариант.

  3. Создайте группу ВМ с именем group-coi-containers с помощью спецификации specification.yaml:

    CLI
    API

    Выполните команду:

    yc compute instance-group create --file=specification.yaml
    

    Результат:

    done (48s)
    id: cl0q12abcd4ef8m966de
    folder_id: b0g12ga82bcv0cdeferg
    ...
      target_size: "2"
    service_account_id: ajeabccde01d23efl1v5
    status: ACTIVE
    

    Воспользуйтесь методом CreateFromYaml для ресурса InstanceGroup.

  4. Убедитесь, что группа ВМ с Container Optimized Image и несколькими Docker-контейнерами создана:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы создали группу ВМ.
    2. Выберите сервис Compute Cloud.
    3. Перейдите в раздел Группы виртуальных машин.
    4. Нажмите на имя группы ВМ group-coi-containers.
    yc compute instance-group list-instances group-coi-containers
    

    Результат:

    +----------------------+---------------------------+----------------+-------------+------------------------+----------------+
    |     INSTANCE ID      |           NAME            |  EXTERNAL IP   | INTERNAL IP |         STATUS         | STATUS MESSAGE |
    +----------------------+---------------------------+----------------+-------------+------------------------+----------------+
    | fhmabcv0de123fo50d0b | cl0q12abcs4gq8m966de-fmar | 84.201.128.110 | 10.130.0.14 | RUNNING_ACTUAL [2h35m] |                |
    | fhmab0cdqj12tcv18jou | cl0q12abcs4gq8m966de-fqeg | 84.252.131.221 | 10.130.0.47 | RUNNING_ACTUAL [2h35m] |                |
    +----------------------+---------------------------+----------------+-------------+------------------------+----------------+
    

    Посмотрите список созданных ВМ с помощью метода List для ресурса InstanceGroup.

Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами

  1. Подключитесь к одной из созданных ВМ по SSH:

    CLI
    ssh yc-user@84.201.128.110
    

    Результат:

    Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-54-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    Last login: Mon Feb  8 15:23:28 2021 from 123.456.789.101
    
  2. Посмотрите список запущенных на ВМ Docker-контейнеров:

    CLI
    sudo docker ps -a
    

    Результат:

    CONTAINER ID   IMAGE   COMMAND                  CREATED              STATUS              PORTS                NAMES
    c0a125a1765a   redis   "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp             redis
    01288d7e382f   nginx   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginx
    

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  • Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами