VK Cloud logo

Spark кластерін құру

Мақалада VK Cloud платформасында Terraform көмегімен Spark кластерін құру мысалы келтірілген.

Кластерді құру кезінде мыналар пайдаланылады:

Параметрлердің толық сипаттамасы — Terraform провайдерінің құжаттамасында.

Кластерді құру алдында

  1. Квоталарды тексеріңіз. Таңдалған аймақта кластерді құру үшін ресурстар жеткілікті екеніне көз жеткізіңіз. Әртүрлі аймақтар үшін әртүрлі квоталар бапталуы мүмкін.

    Қажет болса, квоталарды ұлғайтыңыз.

  2. Бұл әлі жасалмаса, Terraform орнатып, ортаны баптаңыз.

  3. vkcs_provider.tf файлында провайдердің 0.7.0 немесе одан жоғары нұсқасы көрсетілгеніне көз жеткізіңіз. Егер провайдер нұсқасы төмен болса, провайдерді жаңартыңыз.

1. Кластер сипаттамасы бар файлды жасаңыз

Төмендегі мысалда кластер келесі конфигурацияда құрылады:

  • әдепкі аймақ, қолжетімділік аймағы GZ1;
  • worker-түйіндерінің ең аз саны — 2, worker-түйіндерінің ең көп саны — 100;
  • кластердің жұмыс режимі — DEV;
  • 120 минут әрекетсіздіктен кейін кластерді ұйқы режиміне көшіру;
  • 1440 минут әрекетсіздіктен кейін кластерді жою.

Мазмұны келесі Terraform конфигурация файлын main.tf жасаңыз:

locals {  spark_configuration = {    "spark.eventLog.dir"     = "s3a://spark-bucket"    "spark.eventLog.enabled" = "true"  }  spark_environment_variables = {    "ENV_VAR_1" : "env_var_1_value"    "ENV_VAR_2" : "env_var_2_value"  }}resource "vkcs_mlplatform_spark_k8s" "spark_k8s" {  name              = "tf-example"  availability_zone = "GZ1"  network_id        = vkcs_networking_network.app.id  subnet_id         = vkcs_networking_subnet.app.id  node_groups = [    {      node_count          = 2      flavor_id           = data.vkcs_compute_flavor.basic.id      autoscaling_enabled = true      min_nodes           = 2      max_nodes           = 100    }  ]  cluster_mode = "DEV"  registry_id  = vkcs_mlplatform_k8s_registry.k8s_registry.id  ip_pool      = data.vkcs_networking_network.extnet.id  suspend_after_inactive_min = 120  delete_after_inactive_min  = 1440  spark_configuration   = yamlencode(local.spark_configuration)  environment_variables = yamlencode(local.spark_environment_variables)}

Мұнда:

  • network_id — кластер орналастырылатын желінің идентификаторы. Кластер бар желіде немесе жаңа желіде орналастырылуы мүмкін. Идентификаторды манифестте көрсетуге, деректер көзінен немесе ресурстан алуға болады.

  • flavor_id — ВМ түрінің идентификаторы. Идентификаторды манифестте көрсетуге немесе деректер көзінен алуға болады.

  • registry_id — Spark тапсырмаларын іске қосу кезінде пайдаланылатын образдар алынатын Docker тізілімінің идентификаторы. Жаңа тізілім жасауға немесе барын пайдалануға болады.

  • ip_pool — кластердің IP мекенжайлар пулы үшін сыртқы желі идентификаторы.

  • spark_configurationSpark конфигурациясына жауап беретін қасиеттер (properties) тізімі.

  • environment_variablesSpark үшін орта айнымалыларының тізімі.

2. K8S Docker Registry инстансының сипаттамасы бар файлды жасаңыз

K8S Docker Registry инстансының сипаттамасы бар Terraform конфигурация файлын registry.tf жасаңыз:

resource "vkcs_mlplatform_k8s_registry" "k8s_registry" {  name              = "tf-example"  admin_name        = "admin"  admin_password    = "Password12!Password"  flavor_id         = data.vkcs_compute_flavor.basic.id  availability_zone = "GZ1"  boot_volume = {    volume_type = "ceph-ssd"  }  networks = [    {      network_id = vkcs_networking_network.app.id      ip_pool = data.vkcs_networking_network.extnet.id    },  ]}

Мұнда:

  • flavor_id — ВМ түрінің идентификаторы. Идентификаторды манифестте көрсетуге немесе деректер көзінен алуға болады.

  • network_id — инстанс орналастырылатын желінің идентификаторы. Инстанс бар желіде немесе жаңа желіде орналастырылуы мүмкін. Идентификаторды манифестте көрсетуге, деректер көзінен немесе ресурстан алуға болады.

  • ip_pool — кластердің IP мекенжайлар пулы үшін сыртқы желі идентификаторы.

3. (Опционалды) ВМ түріне арналған деректер көзінің сипаттамасы бар файлды жасаңыз

Қажетті ВМ түрінің сипаттамасы бар Terraform конфигурация файлын flavor.tf жасаңыз:

data "vkcs_compute_flavor" "basic" {  name = "STD2-4-4"}

Файлда көрсетілген ВМ түрі Terraform жобаңызда инстанстарды жасау үшін пайдаланылады.

4. (Опционалды) Кластер үшін желілік инфрақұрылым сипаттамасы бар файлды жасаңыз

Кластерге арналған желілік инфрақұрылым сипаттамасы бар Terraform конфигурация файлын network.tf жасаңыз:

Жобада бар желіге арналған деректер көзі сипаттамасының мысалы:

data "vkcs_networking_network" "default" {  name = "default"  sdn = "neutron"}

5. Terraform көмегімен қажетті ресурстарды жасаңыз

  1. Terraform конфигурация файлдарын бір директорияға орналастырыңыз:

    • vkcs_provider.tf;
    • main.tf;
    • registry.tf;
    • flavor.tf (егер жасалса);
    • network.tf(егер жасалса).
  2. Осы директорияға өтіңіз.

  3. Конфигурация файлдарының дұрыс екенін және қажетті өзгерістерді қамтитынын тексеріңіз:

    terraform validate && terraform plan
  4. Өзгерістерді қолданыңыз:

    terraform apply

    Растауды сұрағанда, yes енгізіңіз.

  5. Операцияның аяқталуын күтіңіз.

6. Конфигурацияның қолданылуын тексеріңіз

Spark кластері сәтті құрылғанына көз жеткізіңіз:

  1. VK Cloud жеке кабинетіне өтіңіз.
  2. ML PlatformИнстансы бөліміне өтіңіз. Spark кластері құрылғанына және белсенді екеніне көз жеткізіңіз.

Пайдаланылмайтын ресурстарды жойыңыз

Егер Terraform көмегімен жасалған ресурстар енді қажет болмаса, оларды жойыңыз:

  1. Terraform конфигурация файлдары бар директорияға өтіңіз.

  2. Келесі пәрменді орындаңыз:

    terraform destroy

    Растауды сұрағанда, yes енгізіңіз.

  3. Операцияның аяқталуын күтіңіз.