Қызмет архитектурасы
Cloud Containers сервисі VK Cloud платформасында Kubernetes кластерлерімен жұмыс істеу ортасын қамтамасыз етеді. OpenStack негізіндегі сервис архитектурасы пайдаланушыларға жұмыс істеу үшін кең мүмкіндіктер береді, істен шығуға төзімділікті, масштабталуды және платформаның басқа сервистерімен интеграцияны қамтамасыз етеді.
Cloud Containers сервисіндегі Kubernetes кластеры екі түрлі түйіндерден (nodes) тұрады — master-түйіндер және worker-түйіндер:
-
Master-түйіндер бүкіл кластердің күйі туралы ақпаратты сақтайды және жұмыс жүктемесін worker-түйіндер арасында бөлуді басқарады. Пайдаланушыларға master-түйіндерді басқару қолжетімді емес, ол VK Cloud платформасы жағында жүзеге асырылады.
Kubernetes кластерін құрған кезде, Cloud Containers оның master-түйіндері үшін ең аз сәйкес келетін конфигурация үлгісін таңдайды. Әдепкі бойынша бұл Intel Cascade Lake процессоры, 2 CPU және 6 ГБ жедел жады бар ВМ. Master-түйіндердің диск түрі — 20 ГБ көлеміндегі High-IOPS SSD.
Master-түйіндерде автоматты масштабтау әдепкі бойынша қосылған, сондықтан кластерге түсетін жүктеме өзгерген кезде оның есептеу ресурстарының саны автоматты түрде өзгертіледі.
-
Worker-түйіндер жұмыс жүктемесін (workload) орындайды. Олар worker-түйіндер топтарына ұйымдастырылуы мүмкін. Істен шығуға төзімділікті арттыру үшін топтарды әртүрлі қолжетімділік аймақтарында орналастырыңыз. Worker-түйіндерді басқару да VK Cloud платформасы жағында жүзеге асырылады, бірақ олар пайдаланушылар жобаларымен желілік байланысқа ие.
Кластердің істен шығуға төзімділігі master-түйіндердің санына және олардың қолжетімділік аймақтары бойынша бөлінуіне байланысты. Мүмкін конфигурациялар:
-
Бір master-түйіні бар Kubernetes кластеры.
Мұндай кластер істен шығуға төзімді емес: worker-түйіндер бірнешеу болса және олар топтарға ұйымдастырылса да, жалғыз master-түйін жоғалған жағдайда кластер жұмысқа жарамсыз болады.
-
3 немесе 5 master-түйіннен тұратын стандартты Kubernetes кластеры.
Мұндай кластер қолжетімділік аймағы деңгейінде істен шығуға төзімді: қолжетімділік аймағы тұрақты жұмыс істеген және бірнеше master-түйін жоғалған жағдайда, master-түйіндердің жартысынан көбі жұмыс істеп тұрғанша кластер жұмысын сақтайды. Бір master-түйін қалған кезде кластер жұмысын тоқтатады.
-
3 немесе 5 master-түйіннен тұратын істен шығуға төзімді Kubernetes кластеры.
Істен шығуға төзімді кластерлердің master-түйіндері аймақтың барлық қолжетімділік аймақтары бойынша бөлінеді. Мұндай кластер барынша істен шығуға төзімді: бір қолжетімділік аймағы істен шыққан кезде жүктеме басқа қолжетімділік аймақтарында орналасқан master-түйіндер арасында бөлінеді. Алайда, стандартты кластерлердегідей, істен шығуға төзімді кластер master-түйіндердің жартысынан көбі жұмыс істеп тұрғанша жұмысқа қабілеттілігін сақтайды және бір master-түйін қалған кезде жұмысын тоқтатады.
Таңдалған кластер топологиясына қарамастан, master-түйіндер кластер күйі туралы ақпаратты сақтау үшін etcd таратылған «кілт-мән» сақтау қоймасын пайдаланады:
- Бір master-түйіні бар кластерде бір
etcdданасы болады. - Бірнеше master-түйіні бар кластерлерде істен шығуға төзімділік үшін кластерлік режимде жұмыс істейтін бірнеше
etcdданасы бар. - Әрбір
etcdданасына бөлек жоғары өнімді SSD-диск (High-IOPS) бөлінген. Бұл минималды кідірістер кезінде кластердің API-эндпоинтімен барынша жылдам өзара әрекеттесуді ұйымдастыруға мүмкіндік береді.
Worker-түйіндер деңгейіндегі істен шығуға төзімділік үшін әртүрлі қолжетімділік аймақтарында бірнеше worker-түйіндер топтарын құру және қосымша репликаларын осы түйіндерде репликалар да әртүрлі қолжетімділік аймақтарында болатындай орналастыру ұсынылады.
Master- және worker-түйіндерде AlmaLinux операциялық жүйесі пайдаланылады (Kubernetes 1.31 нұсқасынан бастап).
Кластер контейнерлерді Kubernetes Container Runtime Interface (CRI) арқылы CRI-O көмегімен іске қосады.
Толығырақ Kubernetes қолжетімді нұсқалары және нұсқаларды қолдау саясаты бөлімінде.
Кластермен барлық өзара әрекеттесу Kubernetes API арқылы жүзеге асырылады.
Cloud Containers кластерлерінің API-эндпоинті жеке жүктеме теңгергішінің артында орналасқан, сондықтан кластер API-іне қолжетімділікті master-түйіндер санына қарамастан бір IP-мекенжай арқылы алуға болады.
VK Cloud платформасымен интеграция стандартты Kubernetes интерфейстері арқылы жүзеге асырылады:
-
Container Storage Interface (CSI) — деректерді сақтау сервистерімен интеграция.
Кластерлерде VK Cloud сақтау қоймасын тұрақты томдар (persistent volumes) түрінде пайдалануға мүмкіндік береді. Persistent Volume Claim (PVC) пайдалану қолжетімді.
Интеграция OpenStack Cinder API көмегімен жүзеге асырылады. Толығырақ Кластердегі сақтау қоймасы бөлімінде.
-
Container Network Interface (CNI) — желілік ішкі жүйелермен интеграция.
Cloud Containers сервисінде жасайтын Kubernetes кластерлерінде CNI қолдайтын плагиндер іске асырылған: Calico және Cilium (тек екінші буындағы кластерлер үшін қолжетімді). Олар мыналарды қамтамасыз етеді:
- контейнерлер, подтар және кластер түйіндері арасындағы желілік байланысты;
- Kubernetes желілік саясаттарын (Network Policies) қолдану және сақтау.
Calico және Cilium SDN Sprut көмегімен VK Cloud платформасымен интеграцияланады. Толығырақ Кластердегі желі бөлімінде.
Cloud Containers кластерлеріне Open Policy Agent Gatekeeper кірістірілген. Ол Kubernetes ресурстары үшін қауіпсіздік саясаттарын қолдануға мүмкіндік береді. Сондай-ақ мұндай кластерлерде әдепкі қауіпсіздік саясаттары қолданылады.
Cloud Containers кластеры master-түйіндер мен worker-түйіндерді масштабтаудың кірістірілген мүмкіндіктеріне ие.
Соның ішінде, жұмыс жүктемесінің қажеттіліктеріне байланысты түйіндер саны автоматты түрде реттелетін кластер түйіндерін автоматты масштабтау қолдау табады:
- Master-түйіндер үшін ол әдепкі бойынша қосылған және оны өшіру мүмкін емес.
- Worker-түйіндер үшін ол Cluster Autoscaler көмегімен жүзеге асырылады және әрбір түйін тобы үшін параметрлерді анықтау кезінде қолмен қосылады.