Spark кластерін құру
Мақалада VK Cloud платформасында Terraform көмегімен Spark кластерін құру мысалы келтірілген.
Кластерді құру кезінде мыналар пайдаланылады:
- vkcs_mlplatform_spark_k8s ресурсы;
- vkcs_mlplatform_k8s_registry ресурсы;
- vkcs_networking_network ресурсы;
- vkcs_compute_flavor деректер көзі;
- vkcs_networking_network деректер көзі.
Параметрлердің толық сипаттамасы — Terraform провайдерінің құжаттамасында.
-
Квоталарды тексеріңіз. Таңдалған аймақта кластерді құру үшін ресурстар жеткілікті екеніне көз жеткізіңіз. Әртүрлі аймақтар үшін әртүрлі квоталар бапталуы мүмкін.
Қажет болса, квоталарды ұлғайтыңыз.
-
Бұл әлі жасалмаса, Terraform орнатып, ортаны баптаңыз.
-
vkcs_provider.tfфайлында провайдердің 0.7.0 немесе одан жоғары нұсқасы көрсетілгеніне көз жеткізіңіз. Егер провайдер нұсқасы төмен болса, провайдерді жаңартыңыз.
Төмендегі мысалда кластер келесі конфигурацияда құрылады:
- әдепкі аймақ, қолжетімділік аймағы
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.idsubnet_id = vkcs_networking_subnet.app.idnode_groups = [{node_count = 2flavor_id = data.vkcs_compute_flavor.basic.idautoscaling_enabled = truemin_nodes = 2max_nodes = 100}]cluster_mode = "DEV"registry_id = vkcs_mlplatform_k8s_registry.k8s_registry.idip_pool = data.vkcs_networking_network.extnet.idsuspend_after_inactive_min = 120delete_after_inactive_min = 1440spark_configuration = yamlencode(local.spark_configuration)environment_variables = yamlencode(local.spark_environment_variables)}
Мұнда:
-
network_id— кластер орналастырылатын желінің идентификаторы. Кластер бар желіде немесе жаңа желіде орналастырылуы мүмкін. Идентификаторды манифестте көрсетуге, деректер көзінен немесе ресурстан алуға болады. -
flavor_id— ВМ түрінің идентификаторы. Идентификаторды манифестте көрсетуге немесе деректер көзінен алуға болады. -
registry_id— Spark тапсырмаларын іске қосу кезінде пайдаланылатын образдар алынатын Docker тізілімінің идентификаторы. Жаңа тізілім жасауға немесе барын пайдалануға болады. -
ip_pool— кластердің IP мекенжайлар пулы үшін сыртқы желі идентификаторы. -
spark_configuration— Spark конфигурациясына жауап беретін қасиеттер (properties) тізімі. -
environment_variables— Spark үшін орта айнымалыларының тізімі.
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.idavailability_zone = "GZ1"boot_volume = {volume_type = "ceph-ssd"}networks = [{network_id = vkcs_networking_network.app.idip_pool = data.vkcs_networking_network.extnet.id},]}
Мұнда:
-
flavor_id— ВМ түрінің идентификаторы. Идентификаторды манифестте көрсетуге немесе деректер көзінен алуға болады. -
network_id— инстанс орналастырылатын желінің идентификаторы. Инстанс бар желіде немесе жаңа желіде орналастырылуы мүмкін. Идентификаторды манифестте көрсетуге, деректер көзінен немесе ресурстан алуға болады. -
ip_pool— кластердің IP мекенжайлар пулы үшін сыртқы желі идентификаторы.
Қажетті ВМ түрінің сипаттамасы бар Terraform конфигурация файлын flavor.tf жасаңыз:
data "vkcs_compute_flavor" "basic" {name = "STD2-4-4"}
Файлда көрсетілген ВМ түрі Terraform жобаңызда инстанстарды жасау үшін пайдаланылады.
Кластерге арналған желілік инфрақұрылым сипаттамасы бар Terraform конфигурация файлын network.tf жасаңыз:
Жобада бар желіге арналған деректер көзі сипаттамасының мысалы:
data "vkcs_networking_network" "default" {name = "default"sdn = "neutron"}
-
Terraform конфигурация файлдарын бір директорияға орналастырыңыз:
vkcs_provider.tf;main.tf;registry.tf;flavor.tf(егер жасалса);network.tf(егер жасалса).
-
Осы директорияға өтіңіз.
-
Конфигурация файлдарының дұрыс екенін және қажетті өзгерістерді қамтитынын тексеріңіз:
terraform validate && terraform plan -
Өзгерістерді қолданыңыз:
terraform applyРастауды сұрағанда,
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.
Spark кластері сәтті құрылғанына көз жеткізіңіз:
- VK Cloud жеке кабинетіне өтіңіз.
- ML Platform → Инстансы бөліміне өтіңіз. Spark кластері құрылғанына және белсенді екеніне көз жеткізіңіз.
Егер Terraform көмегімен жасалған ресурстар енді қажет болмаса, оларды жойыңыз:
-
Terraform конфигурация файлдары бар директорияға өтіңіз.
-
Келесі пәрменді орындаңыз:
terraform destroyРастауды сұрағанда,
yesенгізіңіз. -
Операцияның аяқталуын күтіңіз.