Қолжетімді есептеу ресурстары
Kubernetes кластерлерін жасаған кезде кластер түйіндеріне қолжетімді есептеу ресурстарын анықтайтын виртуалды машиналардың әртүрлі конфигурация қалыптарын таңдауға болады. Қалыптардың бір бөлігі бірден қолжетімді, ал бір бөлігі қолдау қызметіне сұрау бойынша беріледі.
Кластерлер үшін CPU және RAM таңдауға арналған ұсынымдар:
-
Шағын тестілік кластерлер үшін: 1 vCPU, 2 немесе 4 ГБ RAM.
-
Көпшілік кластерлер үшін: 2-ден 6 vCPU-ға дейін, 2-ден 24 ГБ RAM-ға дейін.
-
Жоғары өнімді кластерлер үшін: 8-ден 16 vCPU-ға дейін, 8-ден 64 ГБ RAM-ға дейін.
Техникалық қолдау қызметіне сұрау бойынша мыналар қолжетімді болады:
-
Жоғары өнімді CPU бар қалыптар: 16 vCPU-дан, 64 ГБ RAM-нан бастап. Бұл процессорлар өнімдірек.
-
Ерекше қажеттіліктерге арналған жеке конфигурация қалыптары.
Kubernetes кластеры тұрақты жұмыс істеуі үшін:
-
Жоспарланған жұмыс жүктемесіне қажет ресурстар көлемін бағалаңыз.
-
Кластерді келесі параметрлермен жасаңыз:
- vCPU саны: жоспарланған жүктеме үшін есептелген мөлшерден 5-10% көп.
- RAM көлемі: жоспарланған жүктеме үшін есептелген көлемнен 20% көп.
- Сақтау көлемі: жоспарланған деректер көлемінен 10% көп.
- Сақтау түрі:
Ceph SSDнемесеHigh-IOPS SSD. - Master-түйіндерінің саны: істен шығуға төзімді конфигурация үшін тақ сан (кемінде үшеу).
- Worker-түйіндерінің саны: жоспарланған жүктеме үшін есептелген мөлшерден 10% көп.
Kubernetes кластеріндегі әр түйінде kubelet агенті жұмыс істейді. Kubelet, жүйелік процестер және операциялық жүйенің өзі белгілі бір мөлшерде ресурс қажет етеді, яғни түйіннің барлық ресурстары контейнерлерді іске қосу үшін қолжетімді болмайды.
Көп жағдайда CPU ресурстары мынадай түрде резервтеледі:
- Бірінші ядроның 6%.
- Екінші ядроның 1% (2 ядроға дейін).
- Үшінші және төртінші ядролардың 0.5% (4 ядроға дейін).
- Төрттен жоғары барлық ядролардың 0.25%.
Жадты резервтеу әдетте мынадай түрде ұйымдастырылады:
- Алғашқы 4 ГБ жадтың 25%.
- Келесі 4 ГБ жадтың 20% (8 ГБ-қа дейін).
- Келесі 8 ГБ жадтың 10% (16 ГБ-қа дейін).
- Келесі 112 ГБ жадтың 6% (128 ГБ-қа дейін).
- 128 ГБ-тан жоғары кез келген жадтың 2%.
Резервтелген ресурстардан бөлек, түйіндерде үнемі жұмыс істейтін және жадты да тұтынатын жүйелік подтар жасалады:
Пoд атауы | CPU Requests | CPU Limits | RAM Requests | RAM Limits |
|---|---|---|---|---|
calico-node | 100 m | 0 | 512 Mi | 0 |
csi-cinder-nodeplugin | 75 m | 300 m | 96 Mi | 384 Mi |
haproxy | 20 m | 800 m | 80 Mi | 500 Mi |
Әдетте ығыстыру шегі (eviction threshold) 100 МБ құрайды. Бұл — түйіндегі бос жад көлемі, осы мәннен төмен түскенде kubelet жад тапшылығына байланысты подтарды ығыстыра бастайды.
Ірілеу түйіндер кіші өлшемді түйіндермен салыстырғанда резервтеудің пайыздық үлесі төмен болғандықтан ресурстарды тиімдірек пайдалана алады. Алайда кластерді масштабтау қосымша түйіндерді іске қосуға уақытты қажет етеді. Жаңа түйіндер қосылған кезде контейнер образдарын жаймалауға және кэштеуге кететін уақыт артады, бұл істен шығуға төзімділікті сақтау үшін маңызды.
Түйінде іске қосылатын подтар саны кластердің өнімділігіне әсер етеді. Ең көбі 110 подты іске қосуға болады, бірақ түйіннің жақсы өнімділігі үшін бір түйінге 30–40 подтан жоспарлаған дұрыс.
Кластердегі түйіндердің өлшемі мен санын таңдағанда, ресурстарды пайдалануды барынша арттыратын және қажетті істен шығуға төзімділік пен масштабталу деңгейін сақтайтын бөлініске басымдық беріңіз.
Түйіндегі қолжетімді CPU ресурстары:
Node CPU | CPU Available |
|---|---|
1 | 0,94 |
2 | 1,93 |
4 | 3,92 |
6 | 5,915 |
8 | 7,91 |
12 | 11,9 |
16 | 15,89 |
Түйіндегі қолжетімді RAM ресурстары:
Node RAM (ГБ) | Node RAM Capacity (Ki) | RAM Allocatable (Ki) | RAM Allocatable (Mi) |
|---|---|---|---|
2 | 2 005 132 | 1 641 612 | 1 603 |
4 | 4 000 132 | 2 849 156 | 2 782 |
6 | 6 056 116 | 4 905 140 | 4 790 |
8 | 8 122 536 | 6 132 699 | 5 989 |
12 | 12 238 576 | 10 248 739 | 10 009 |
16 | 16 365 320 | 13 536 622 | 13 219 |
18 | 18 406 708 | 15 452 181 | 15 090 |
24 | 24 599 856 | 21 267 842 | 20 769 |
32 | 32 856 944 | 29 021 613 | 28 341 |
36 | 36 935 672 | 32 848 683 | 32 079 |
48 | 49 321 092 | 44 479 128 | 43 437 |
64 | 65 836 152 | 59 987 556 | 58 582 |
GPU-үдетілген серверлер машиналық оқыту және үлкен деректерді өңдеу саласында күрделі әрі ресурс сыйымды есептеулерді орындауға мүмкіндік береді.
Кластер түйіндерінде GPU бар конфигурация қалыптарын пайдалану үшін Cloud GPU сервисін қосуға өтінім қалдырыңыз.
GPU бар конфигурация қалыбын кластердің тек worker-түйіндері үшін ғана пайдалана аласыз. GPU бар конфигурация қалыбы оны пайдаланатын түйінмен бірдей қолжетімділік аймағында болуы керек.
Егер кластерді Terraform немесе CLI арқылы жасасаңыз не өңдесеңіз, GPU бар түйін үшін сізге берілген GPU орналасқан қолжетімділік аймағын көрсетіңіз. Әйтпесе кластер жасалмайды немесе дұрыс жұмыс істемейді.
VK Cloud жеке кабинеті арқылы жұмыс істеген кезде Тип Node-узлов өрісінде тек осы түйінмен бір қолжетімділік аймағында орналасқан GPU бар қалыптар ғана қолжетімді болады.
Іс жүзінде машиналық оқыту және үлкен деректерді өңдеу процестері GPU ресурсының барлығын пайдаланбайды. Сондықтан GPU процессорлары не тек ішінара жұмыс істейді, не күрделі тапсырмаларға қоса қалыпты міндеттерді орындайды. Бұл GPU пайдалануды қымбат етеді.
GPU-ді ортақ пайдалану технологиялары бір графикалық процессорды бірнеше процесс немесе инстанс бір уақытта пайдалануына мүмкіндік береді: әртүрлі қолданбалар немесе әртүрлі data-мамандар өз жұмысында бір GPU-ді ортақ пайдалана алады.
VK Cloud платформасында Kubernetes кластерлерінде осындай екі технология қолжетімді — MIG және MPS.
MIG (Multi-Instance Graphics) — бұл бір графикалық процессорды бірнеше тәуелсіз GPU-ге бөлуге мүмкіндік беретін GPU виртуализациялау технологиясы. Әр бөліктің өз ресурстары (жады, есептеу блоктары) болады және ол басқаларынан оқшау жұмыс істей алады.
Технология виртуалдандырылған орталарда (мысалы, серверлерде) графикалық процессорларды пайдаланудың тиімділігін арттыруға арналған, мұнда шығындарды азайта отырып, әр пайдаланушыға немесе қолданбаға оқшауланған қолжетімділікті қамтамасыз ету маңызды.
MIG технологиясы GPU барлық модельдеріне қолжетімді емес. NVIDIA ресми құжаттамасында технология және ол қолжетімді болатын GPU модельдері толығырақ сипатталған.
MPS (CUDA Multi-Process Service) — бұл GPU-дің есептеу қуатын бірнеше процесс арасында бөлуге мүмкіндік беретін механизм. Әр процесс GPU ресурстарының бөлінген жиынтығын алады және олар бір-бірімен процестер арасындағы өзара әрекеттесу (IPC) арқылы байланысады.
Бұл технология жоғары параллельдік пен GPU есептеу қуаты маңызды болатын, бірақ қолданбаларға бір-бірінің жадына немесе ресурстарына тікелей қолжетімділік қажет емес тапсырмалар үшін қолайлы.
Толығырақ NVIDIA ресми құжаттамасында.