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

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

  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с 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
      

    Воспользуйтесь методом Сreate для ресурса 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с помощью метода Сreate для ресурса Subnets.

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

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

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

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

    Результат выполнения команды:

    id: fd8iv792kirahcnqnt0q
    folder_id: standard-images
    created_at: "2021-01-29T13:30:22Z"
    name: container-optimized-image-1611926453
    description: Build by Assembly-Workshop-build-66870
    family: container-optimized-image
    storage_size: "6157238272"
    min_disk_size: "10737418240"
    product_ids:
    - f2elj2f52bbqe4af8tfd
    status: READY
    os:
      type: LINUX
    
  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-v2 # Идентификатор платформы.
      resources_spec:
        memory: 2G # Количество памяти (RAM).
        cores: 2 # Количество ядер процессора (vCPU).
      boot_disk_spec:
        mode: READ_WRITE # Режим доступа к диску: чтение и запись.
        disk_spec:
          image_id: fd8iv792kirahcnqnt0q # Идентификатор публичного образа Container Optimized Image.
          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-rsa 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
    

    Воспользуйтесь методом СreateFromYaml для ресурса 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
    
В этой статье:
  • Перед началом работы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
  • Проверьте группу ВМ с Container Optimized Image и несколькими Docker-контейнерами
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»