Аддондар
Cloud Containers кластерлері үшін әртүрлі аддондар (қосымша сервистер) қолжетімді. Оларды кез келген комбинацияда таңдап, не Terraform көмегімен кластерді құру кезінде, не бұрыннан бар кластерге кейінірек орнатуға болады. Орнату процесі автоматтандырылған және пайдаланушының ең аз араласуын талап етеді.
-
Аддондар кластердің worker-тораптарына орнатылады және олардың есептеу ресурстарын тұтынады.
Төменде аддонды баптау кодындағы Kubernetes ресурстары үшін стандартты requests және limits мәндеріне негізделген аддондардың жүйелік талаптары келтірілген. Стандартты емес мәндер пайдаланылған кезде аддондардың жүйелік талаптары өзгереді.
-
Аддондар арнайы бөлінген worker-тораптар тобына немесе Kubernetes жоспарлаушысы таңдаған worker-тораптарға орнатылуы мүмкін. Бірінші тәсілді пайдалану кластерде жайылған production-сервистердің жұмысына аддондардың әсерін болдырмауға мүмкіндік береді.
Бөлінген worker-тораптар тобының есептеу ресурстары барлық аддондарға жеткілікті болуы тиіс, тіпті әрбір аддон жүйелік талаптарда көрсетілген ресурстардың максимумын тұтынса да. Осындай тораптар тобы үшін автоматты масштабтауды баптау ұсынылады.
-
Аддондарды орнату үш нұсқада мүмкін:
- Аддонды баптау кодын өзгерте отырып, Kubernetes жоспарлаушысы таңдаған worker-тораптарға стандартты орнату.
- Аддонды баптау кодын өзгерте отырып, бөлінген worker-тораптарға орнату.
- Аддонды баптау кодын өзгертпей, Kubernetes жоспарлаушысы таңдаған worker-тораптарға жылдам орнату (әдепкі баптаулармен).
Барлық аддондар орнатудың осы үш нұсқасының бәрін қолдамайды.
Орнату процесі Аддондарды орнату және баптау бөлімінде сипатталған.
Белгілі бір аддондардың қолжетімділігі кластерді орналастыру жоспарланатын өңірге байланысты.
Argo CD — GitOps тәсілін пайдаланатын Kubernetes үшін үздіксіз жеткізу (continuous delivery, CD) құралы. Ол Git-репозиторийдегі конфигурацияны бақылау арқылы кластердегі қолданбаларды автоматты түрде орналастырады және жаңартады. Argo CD артықшылықтары:
- GitOps процестері жылдамдатылады және жеңілдетіледі: іске қосу, масштабтау және өзгерістерді жеткізу уақыты қысқарады, сондай-ақ оларды енгізу күрделілігі азаяды.
- Кластерлердің сенімділігі мен басқарылуы артады: конфигурацияны өзгерту кезінде қолмен орындалатын әрекеттер мен қателер азаяды. Argo CD мұндай айырмашылықтарды автоматты түрде анықтап, кластерді оның Git-репозиторийінде сипатталған күйге қайтарады.
- Кластердегі әрекеттер анағұрлым ашық болады және Git арқылы барлық өзгерістерді бақылау, қадағалау және аудит жүргізу мүмкіндігі есебінен оның қауіпсіздігі артады.
Argo CD дұрыс жұмыс істеуі үшін кластер конфигурациясы сақталған Git-репозиторийлерге тұрақты қолжетімділік қажет. Сондай-ақ аддонның кластерде қолданбаларды жасау құқықтары болуы керек, олар Kubernetes ішінде қолжетімділікті шектеу моделі (Role Based Access Control, RBAC) арқылы бапталады, әйтпесе кластер күйін синхрондау кезінде қателер туындауы мүмкін.
Kubernetes кластерлері Kubernetes ресурстарын жеке атаулар кеңістіктері (namespaces) деңгейінде логикалық бөлуге мүмкіндік береді. Алайда бұл күрделі сценарийлерде ресурстарды бөлу мен оқшаулауды ұйымдастыру үшін жеткіліксіз болуы мүмкін. Мысалы, әзірлеушілердің әртүрлі командаларына әртүрлі ресурстар жиынтықтарын беру қажет. Бұл үшін әр команда үшін бөлек кластерлер жасауға болады, бірақ мұндай кластерлер көп болса, оларды басқару қиынға соғады.
Capsule бір кластер шеңберінде ресурстар жиынтықтарын тенанттар (tenants) көмегімен оқшаулауға мүмкіндік береді. Тенант — белгілі бір пайдаланушылар тобына тағайындалған, ресурстарды жасау мен тұтынуға қойылатын шектеулермен біріктірілген атаулар кеңістіктері. Capsule саясат қозғалтқышы (policy engine) тенант шеңберінде ресурстарды пайдалану саясаттарының сақталуын қадағалап қана қоймай, бір тенантты екіншісінен оқшаулауды да қамтамасыз етеді. Осылайша бірнеше команданың бір multi-tenant cluster ішінде жұмысын қосымша кластерлерді әкімшілендіру қажеттілігінсіз ұйымдастыруға болады.
cert-manager құралының көмегімен Kubernetes кластерлеріндегі сертификаттарды басқаруға болады:
-
Сертификаттарды, соның ішінде өздігінен қол қойылған (self-signed) сертификаттарды шығару. Ол үшін
cert-managerсертификаттау орталығы (certificate authority, CA) рөлін атқаратын көздерге сұраулар жібереді.Көздердің мысалдары:
- Venafi сияқты киберқауіпсіздік шешімдерінің провайдерлері;
- Let’s Encrypt сияқты сертификат провайдерлері;
- HashiCorp Vault сияқты секреттер қоймалары;
- ішінде сертификаттың жария бөлігі мен жабық кілті бар жергілікті контейнерлер.
-
Әрекет ету мерзімі аяқталып жатқан сертификаттарды автоматты түрде қайта шығару.
cert-manager көмегімен шығарылған сертификат басқа Kubernetes ресурстарына қолжетімді болады. Мысалы, оны Ingress үшін пайдалануға болады.
Container Storage Interface (CSI) S3 үшін — S3 үйлесімді объектілік сақтау жүйелерін (VK Object Storage, AWS S3, MinIO және басқаларын) тұрақты томдар (Persistent Volumes, PV) ретінде ілуге мүмкіндік беретін Kubernetes-ке арналған Container Storage Interface драйвері.
S3-CSI FUSE негізінде жұмыс істейтін жоғары өнімділікті GeeseFS файлолық жүйесіне негізделген. Аддон POSIX үйлесімділігіне дерлік толық сәйкес келеді және объектілермен келесі әрекеттерді қолдайды:
- оқу және жазу;
- бұғаттау;
- қайта атау және жою.
S3-CSI объектілік сақтау жүйесінің бакеттері деңгейінде жұмыс істейді және екі режимде қызмет ете алады:
- Бакеттерді динамикалық жасау (dynamic provisioning). Көрсетілген сақтау класы (Storage Class) бар PVC (Persistent Volume Claim) жасалғанда, аддон мақсатты S3 үйлесімді сақтау жүйесінде жаңа бакетті автоматты түрде жасайды. PVC жасалғаннан кейін бұл бакет PV ретінде пайдалануға дайын болады.
- Бар бакеттерді пайдалану (static provisioning). Сіз кез келген S3 үйлесімді сақтау жүйесінде алдын ала жасалған бакетті пайдалана аласыз. Ол үшін адлон бар бакеттің атын көрсетіп PV жасайды, содан кейін PVC осы PV-мен байланыстырылады.
S3-CSI сіз орнатқанда көрсеткен кез келген S3 үйлесімді сақтау жүйесінде бакеттер жасай алады.
Docker тізілімі Docker образдарын орналастыруға және сақтауға арналған. Істен шығуға төзімді конфигурацияда (high availability, HA) жұмыс істейді. Тізілімдегі образдарды кластерде сервистерді жайып орналастыру кезінде пайдалануға болады.
Толығырақ Docker реестріне қосылу бөлімінен қараңыз.
External Secrets Operator бұлтты қоймаларда кластерден тыс сақталатын Kubernetes құпияларын қауіпсіз басқаруға мүмкіндік береді (мысалы, VK Cloud құпия менеджері, AWS Secrets Manager, Azure Key Vault және т.б.
Қосымша бөлімде VK Cloud құпия менеджерімен қалай пайдалану керектігі туралы толығырақ Пайдалану External Secrets Operator.
Fluent Bit Cloud Containers кластерлерінде логтарды жинауды баптауға мүмкіндік береді, содан кейін оларды Cloud Logging сервисінде, мысалы, Elasticsearch немесе Loki плагиндерінің көмегімен талдауға болады. Бұл аддонның негізгі артықшылығы — пайдаланушы қажеттіліктеріне барынша икемді баптау мүмкіндігі.
Логтардың көздері ретінде кластер тораптарында орналасқан kubelet қызметтері мен подтар (pods) қолданылады.
Lua тілінде жазылған арнайы сүзгілермен бірге Fluent Bit Cloud Containers кластерінен логтарды Cloud Logging сервисіне жеткізуді ұйымдастыруға мүмкіндік береді, бұл осы логтарды әрі қарай талдау үшін қажет.
Логтардың көздері ретінде кластер тораптарында орналасқан kubelet қызметтері мен подтар (pods) қолданылады. Аддонның қалай жұмыс істейтіні туралы толығырақ оның LINK_NOT_DEFINED(/kz/kubernetes/k8s/instructions/addons/advanced-installation/install-advanced-logaas-integration/install-advanced-logaas-integration-magnum) және LINK_NOT_DEFINED(/kz/kubernetes/k8s/instructions/addons/advanced-installation/install-advanced-logaas-integration/install-advanced-logaas-integration-mk8s) кластерлеріне арналған орнату бөлімдерінен оқыңыз.
GPU Operator кластер тораптарындағы GPU-ді машиналық оқыту немесе үлкен деректерді өңдеу міндеттерін орындау үшін басқаруға мүмкіндік береді.
Кластерде GPU пайдаланудың келесі нұсқалары қолжетімді:
- Бір под бір немесе бірнеше GPU пайдаланады.
- Аддон бір GPU-ді бірнеше под арасында MIG стратегиясы бойынша бөледі.
- Аддон бір GPU-ді бірнеше под арасында MPS стратегиясы бойынша бөледі.
Аддон құрамы:
-
GPU-ді басқаруға арналған NVIDIA GPU Operator.
-
Конфигурация өзгергеннен кейін CUDA (Compute Unified Device Architecture) тексеруге арналған қызметтік валидаторлар.
-
Оператордың өзін-өзі диагностикалау құралдары.
-
GPU ресурстарын байланыстыру мен бөлуді автоматтандыруға арналған NVIDIA device plugin.
-
Кластер тораптарында қолжетімді функцияларды анықтау және тіркеу үшін Node Feature Discovery. Компонент келесі қызметтерді қамтиды:
- NFD-Master Kubernetes API серверіне қосылуға және торап объектілерін жаңартуға жауап береді.
- NFD-Worker аппараттық функцияларды жариялау үшін NFD-Master қызметіне қосылады.
- NFD Garbage-Collector барлық Node Feature Discovery объектілерінің сәйкес тораптары болуын қамтамасыз етеді және жоқ тораптар үшін ескірген объектілерді жояды.
Аддон және оның компоненттері туралы толығырақ: NVIDIA GPU Operator, NVIDIA device plugin, Node Feature Discovery.
NGINX негізіндегі Ingress-контроллер кері прокси (reverse proxy) ретінде жұмыс істейді және HTTP немесе HTTPS бойынша жұмыс істейтін кластер сервистері үшін бірыңғай кіру нүктесін ұйымдастыруға мүмкіндік береді.
Контроллер бар болған жағдайда, мұндай сервистер Kubernetes кластерінен тыс жерден қолжетімді болуы үшін Ingress ресурсын жасау жеткілікті.
Ingress-контроллер VK Cloud платформасымен тығыз интеграцияланады. Толығырақ Кластердегі желі бөлімінен қараңыз.
Istio қызметтер арасындағы желілік байланысты орталықтан бақылауға және Қолданба кодын өзгертпестен басқаруға мүмкіндік береді. Istio сервистік тор тәсілін жүзеге асырады (Service mesh): қызметтер арасындағы трафик басқарылатын прокси қабаты арқылы өтеді. Қосымшада sidecar-прокси бар классикалық модель ретінде қолдау көрсетіледі подов деңгейінде және Ambient Mesh режимі Sidecar контейнерлері жоқ (түйін деңгейіндегі прокси). Istio көмегімен сіз:
- қызметтер арасындағы қауіпсіздік және трафикті басқару саясатын орнатыңыз;
- қызметтер арасындағы байланыс үшін TLS пайдаланыңыз;
- сервисаралық трафик мониторингін кеңейту (метрикаларды жинау, логирлеу, үлестірілген трассалау);
- күрделі маршруттауды және қызметтер арасындағы трафикті теңестіруді теңшеңіз; -сұраныстардың қайталануын, тайм-ауттарды және басқа да ақауларға төзімділікті бақылау тетіктерін теңшеу; -біртіндеп орналастыру үшін Canary Deployment және Blue-Green Deployment пайдаланыңыз.
Istio орнату үшін әр түрлі бірінші буын және екінші буын кластерлер.
Микросервистерге негізделген үлестірілген жүйелерде сұраулар (requests) алмасуы үздіксіз жүреді. Jaeger платформасы сұрауларды үлестірілген трассировкадан өткізу үшін жасалған. Jaeger сұраулар ағынының микросервистер арқылы жүретін жолын қадағалайды және мыналарға мүмкіндік береді:
- жүйе компоненттерінің өзара байланыстары туралы сұраулар ағыны тұрғысынан ақпарат жинауға;
- сұраулармен байланысты мәселелерді немесе жүйе архитектурасындағы сұраулар ағынын өңдеуге қатысты тар орындарды анықтауға.
Мұндай құрал қажет, өйткені сұраулармен байланысты факторлар бұл жүйелердің тұтас мінез-құлқы мен өнімділігіне елеулі әсер етуі мүмкін. Жекелеген микросервистерді ғана бақылаумен шектелу жеткіліксіз.
Jaeger микросервистерден алатын деректер негізінде сұрауларды трассалауды орындайды. Сондықтан микросервистерге сұраулар туралы деректерді жіберу үшін OpenTelemetry құралдар стегін интеграциялау қажет. OpenTelemetry-ді микросервистік қосымшаға интеграциялаумен HotROD мысалында Jaeger пайдалану бөлімінде танысуға болады.
Kgateway — Gateway API пайдалану арқылы Kubernetes ішінде трафикті бағыттауға және басқаруға арналған құрал. Оның артықшылықтары:
- Kubernetes сервистерін жариялауды және сыртқы сервистерге сұрауларды проксилеуді қамтамасыз етеді.
- Жүктемеге қарай автоматты түрде масштабталады.
- Қолданбалар мен сервистерді іске қосу уақытын қысқартады.
- Кіру нүктелерін, TLS, маршруттарды және қол жеткізу саясаттарын орталықтандырылған түрде орнатуға мүмкіндік береді.
Аддонмен жұмыс істеу туралы толығырақ Kgateway пайдалану бөлімінде.
Kube Prometheus Stack — Prometheus және Grafana визуализациялау құралы негізінде іске асырылған кластер күйін және оның ішінде жайылған сервистерді мониторингтеу жүйесі. Толығырақ text% бөлімінен қараңыз.
VK Cloud Kube Prometheus Stack аддонының екі нұсқасын ұсынады: базалық және VK Tech компаниясының жетілдірулері бар нұсқа (vk жұрнағы бар нұсқа нөмірімен). Жетілдірулері бар аддонда қосымша кіріктірілген функциялар бар, атап айтқанда кластер ресурстарын тұтынуды болжау.
Vertical Pod Autoscaler (VPA) — Kubernetes контейнерлері үшін ресурстарды (CPU және RAM) автоматты түрде баптауға арналған құрал. VPA міндеттері:
- Жүктемені және ресурстарды пайдалану деректерін талдау.
- Жаңа және бұрыннан іске қосылған подтардың ресурс сұрауларына арналған ұсынымдарды ұсыну және, егер бапталған болса, оларды автоматты түрде қолдану.
VPA үш компоненттен тұрады:
-
Recommender: ағымдағы және өткен ресурстар тұтынылуын талдайды және осының негізінде подтың ресурс сұрауларын ең жоғары тиімділікке қалай өзгерту керектігін ұсынады. Recommender — VPA-мен жұмыс істегенде әдепкі бойынша қосылатын жалғыз компонент.
-
Updater: ұсынымдарды алады, VPA объектілерін жаңартады және ұсынылған ресурстардың жаңа және бұрыннан бар подтар үшін қолжетімді болуын қадағалайды. Жұмыс режиміне байланысты Updater компоненті Admission Controller компонентіне бар подты жасауға немесе жаңартуға сұрау жібереді. Updater компонентінің жұмыс режимдері:
Off— өшірілген, тек Recommender компоненті жұмыс істейді. Ұсынымдар жасалады, бірақ жаңа да, бұрыннан бар да подтарға қолданылмайды.Recreate— толық көлемде жұмыс істейді.Recreateрежимінде Updater компоненті, егер осы под сұрайтын ресурстар Recommender есептеген мәндерге сәйкес келмесе, подты жояды. Содан кейін ол Admission Controller компонентіне ұсынылған мәндермен осы подты қайта жасауға сұрау жібереді. Жаңа подтар бірден ұсынылған мәндермен жасалады.Recreateрежиміндегі жұмыс туралы толығырақ Vertical Pod Autoscaler пайдалану бөлімінен қараңыз.Initial— тек жаңа подтар үшін жұмыс істейді. Admission Controller компоненті VPA ұсынымдарына сәйкес ресурс сұрауларын тек жаңа подтарда жаңартады, бірақ бұрыннан бар подтардың жойылуын, қайта жасалуын немесе ресурстарының жаңартылуын бастамайды.
-
Admission Controller: Updater компонентінің жұмыс режиміне байланысты подтарды жасау немесе жаңарту кезеңінде жұмыс істейді. Admission Controller компоненті VPA ұсынымдарын жаңа подтар жасалған кезде, сондай-ақ бұрыннан іске қосылған подтарға қолданады, қолдан орнатылған мәндерді елемейді.