cert-manager release v1.12.3 нұсқасын сенімді және жоғары қолжетімді түрде орнатады.
Модуль орнатылғанда кластердің ерекшеліктері автоматты түрде ескеріледі:
kube-apiserver-дің сұраныс жасайтын компоненті (webhook) master-тораптарға орнатылады;
webhook қолжетімсіз болған жағдайда, cert-manager-дің қолжетімсіздігі кластер жұмысын бөгемеуі үшін apiservice уақытша жойылады.
Модульдің жаңартылуы автоматты түрде жүзеге асады, соның ішінде cert-manager ресурстарын миграциялау да бар.
Cilium модулі арқылы кластердегі желінің жұмысын қамтамасыз етеді.
Шектеулер:
NodePort және LoadBalancer типіндегі сервистер LB-режиміндегі DSR үшін hostNetwork-эндпоинттермен жұмыс істемейді. Қажет болса, SNAT режиміне ауысыңыз.
HostPort подтары тек бір IP-ға байланысады. Егер ОС-да бірнеше интерфейс/IP болса, Cilium «ақ» IP-адрестерге қарағанда «сұр» IP-адрестерді таңдайды.
Ядроға қойылатын талаптар:
cni-cilium модулінің жұмысы үшін Linux ядросының нұсқасы >= 5.7 болуы қажет.
cni-cilium модулі istio, openvpn немесе node-local-dns модульдерімен бірге жұмыс істегенде де Linux ядросы >= 5.7 болу керек.
ОС үйлесімділік мәселелері:
Ubuntu:
18.04 нұсқасында жұмыс істемейді.
20.04 нұсқасында HWE ядросын орнату қажет.
Astra Linux:
«Смоленск» басылымында жұмыс істемейді.
CentOS:
7 (жаңа ядроны репозиторийден орнату қажет)
8 (жаңа ядроны репозиторийден орнату қажет)
Control plane компоненттерін басқару
Control plane компоненттерін басқару кластердің барлық master-нодтарында (лейблмен белгіленген node-role.kubernetes.io/control-plane: "") іске қосылатын control-plane-manager модулі арқылы жүзеге асырылады.
Control plane басқару мүмкіндіктері:
Сертификаттарды басқару. Control plane жұмысына қажетті сертификаттарды басқаруды қамтамасыз етеді — конфигурация өзгерген жағдайда жаңа сертификаттар шығаруды және олардың уақытында жаңартылуын автоматты түрде орындайды. Бұл Kubernetes API-ге қауіпсіз қол жеткізу үшін қосымша SAN-дарды қосуды жеңілдетіп, қауіпсіздіктің жоғары деңгейін сақтауға мүмкіндік береді.
Компоненттерді конфигурациялау. Control plane компоненттері үшін қажетті конфигурациялар мен манифестерді автоматты түрде жасайды.
Компоненттерді жаңарту/кері жаңарту (upgrade/downgrade). Кластердегі барлық control plane компоненттерінің бірдей нұсқада болуын қамтамасыз етеді.
etcd кластерінің конфигурациясын басқару. Master-нодтарды масштабтайды, single-master конфигурациясынан multi-master форматына және керісінше ауысуды қолдайды.
kubeconfig баптауы. kubectl құралы үшін әрқашан өзекті конфигурацияны қамтамасыз етеді: cluster-admin құқықтарымен kubeconfig файлын автоматты түрде жасайды, жаңартады және root пайдаланушы үшін әдепкі ретінде symlink құрып береді.
kube-dns модулі
Бұл модуль Kubernetes кластерінде DNS қызметін басқаруға арналған CoreDNS компоненттерін орнатады.
log-shipper модулі
Бұл модуль кластер түйіндерінде логтарды жинау үшін log-shipper агенттерін орнатады. Агенттердің басты мақсаты — логтарды кластерден тыс жүйеге минималды өзгерістермен жіберу. Әр агент — бұл Deckhouse автоматты түрде конфигурациялаған жеке Vector инстанциясы.
Deckhouse келесі ресурстарды бақылайды: ClusterLoggingConfig, ClusterLogDestination және PodLoggingConfig. Логтарды жинау мен оларды жіберу бағытын анықтайтын конфигурация жиынтығы pipeline деп аталады.
Deckhouse осы конфигурация негізінде файл жасап, оны Kubernetes ішіндегі Secret ретінде сақтайды.
Аталған Secret барлық log-shipper агенттері бар pod-тарға монтирленеді, ал конфигурация өзгерген жағдайда, оны reloader атты sidecar-контейнер автоматты түрде жаңартып отырады.
loki модулі
Бұл модуль логтар қоймасын ұйымдастыруға арналған.
Модуль Grafana Loki жобасын пайдаланады.
Модуль Grafana Loki негізінде логтарды сақтау жүйесін орнатады. Қажет болған жағдайда, log-shipper модулін loki модулімен жұмыс істеуге бейімдейді және Grafana ішіне тиісті дереккөзді (datasource) автоматты түрде қосады.
monitoring-kubernetes модулі
Бұл модуль кластер түйіндерін базалық деңгейде мониторингтеуге арналған.
Ол метрикаларды қауіпсіз жинауды қамтамасыз етеді және келесі негізгі мониторинг ережелер жиынтығын ұсынады:
extended-monitoring модулі
Бұл модуль келесі Prometheus exporter құралдарын қамтиды:
extended-monitoring-exporter — түйіндердегі бос орын мен inode бойынша метрикаларды кеңейтілген түрде жинауды және алерттер жіберуді қамтамасыз етеді. Сонымен қатар, extended-monitoring.deckhouse.io/enabled="" лейблі бар namespace объектілері үшін «кеңейтілген мониторингті» қосады.
image-availability-exporter — контейнер образдарының қолжетімділігіне қатысты метрикаларды қосып, алерттер жібереді. Бұл Deployment, StatefulSet, DaemonSet, CronJob секілді ресурстардағы pod спецификациясындағы image өрісіне сәйкес registry-дегі қолжетімсіз образдарды анықтауға мүмкіндік береді.
events-exporter — Kubernetes кластеріндегі оқиғаларды жинап, оларды метрика түрінде ұсынады.
cert-exporter — кластердегі Secret объектілерін сканерлеп, олардың ішіндегі сертификаттардың жарамдылық мерзіміне байланысты метрикалар генерациялайды.
descheduler модулі
Бұл модуль кластерде Descheduler деп аталатын арнайы custom resource ішінде көрсетілген стратегиялар жиынтығымен descheduler қызметін іске қосады.
Descheduler әр 15 минут сайын, көрсетілген стратегияларға сәйкес келетін Pod-тарды кластерден вытесняет (яғни, жояды), бұл сол подтар үшін schedulering процесін қайта бастауға мәжбүр етеді. Нәтижесінде жүйе подтарды қайтадан қолайлы түйіндерге жоспарлайды, бұл кластердің тиімділігін арттырады.
ingress-nginx модулі
Бұл модуль NGINX Ingress Controller қызметін Custom Resource арқылы орнатады және басқарады. Егер Ingress-контроллерді орналастыруға арналған түйіндер бірден көп болса, модуль оны қатеге төзімді (failover) режимде іске қосады және бұлттық немесе bare metal инфрақұрылымының ерекшеліктерін, сондай-ақ әртүрлі типтегі Kubernetes кластерлерінің талаптарын ескеріп жұмыс істейді.
Модуль бірнеше NGINX Ingress Controller-ді бір мезетте іске қосуға және оларды бөлек конфигурациялауға мүмкіндік береді — біреуі негізгі, ал қалғандары қосымша болуы мүмкін. Мысалы, бұл ішкі (intranet) және сыртқы (external) Ingress ресурстарын бөлек басқаруға жағдай жасайды.
openvpn модулі
Бұл модуль кластер ресурстарына OpenVPN арқылы қол жеткізуге мүмкіндік береді. Аутентификация сертификаттар арқылы жүзеге асырылады. Сонымен қатар, пайдалануға ыңғайлы веб-интерфейс ұсынады.
Веб-интерфейстің мүмкіндіктері:
сертификаттарды шығару;
сертификаттарды қайтарып алу (отзыв);
қайтару әрекетін болдырмау (отменить отзыв);
дайын пайдаланушылық конфигурация файлын жүктеп алу.
Веб-интерфейс user-authn модулімен біріктірілген. Бұл әртүрлі пайдаланушылардың осы веб-интерфейске қол жеткізу мүмкіндігін басқаруға мүмкіндік береді.
Prometheus-мониторинг
Веб-интерфейстер: Grafana
Модуль Prometheus жүйесін толық орнатып, баптайды. Ол кеңінен қолданылатын қосымшалардан метрикаларды жинауды ұйымдастырады және Prometheus пен Grafana үшін ең қажетті базалық алерттер мен дашбордтарды ұсынады.
Егер қолданылатын StorageClass автоматты түрде көлемін кеңейтуге мүмкіндік берсе (allowVolumeExpansion: true), Prometheus-тың деректеріне арналған диск кеңістігі жеткіліксіз болған жағдайда, көлем автоматты түрде ұлғайтылады.
Vertical Pod Autoscaler модулінің арқасында pod қайта іске қосылған кезде оның CPU мен жедел жады (memory) ресурстары бұрынғы тұтыну тарихына сүйене отырып автоматты түрде есептеледі. Сонымен қатар, Prometheus-ке сұраныстарды Trickster арқылы кэштеу жадыны тұтынуды едәуір азайтады.
Модуль метрикаларды жинаудың екі үлгісін де қолдайды:
pull-модель (Prometheus өзі тартып алады),
push-модель (қосымшалар өздері жібереді).
upmeter модулі
Веб-интерфейстер: status, upmeter
Бұл модуль кластер мен Deckhouse компоненттерінің қолжетімділік типтері бойынша статистика жинайды. Компоненттердің SLA деңгейін бағалауға мүмкіндік береді, қолжетімділік көрсеткіштерін веб-интерфейс арқылы көрсетеді және кластер компоненттерінің жұмысы туралы статус-бет ұсынады.
Prometheus Remote Write протоколы арқылы қолжетімділік метрикаларын экспорттау үшін UpmeterRemoteWrite атты custom resource қолдануға болады.
Модуль құрамына кіреді:
agent — қолжетімділік тексерулерін (пробаларды) орындайды және нәтижелерді серверге жібереді. Master-түйіндерде жұмыс істейді.
upmeter — нәтижелерді біріктіретін агрегатор және оларға қолжетімділік беретін API-сервер.
front:
status — соңғы 10 минуттағы ағымдағы қолжетімділік деңгейін көрсетеді (әдетте авторизация қажет, бірақ оны өшіруге болады);
webui — пробалар мен қолжетімділік топтары бойынша статистикасы бар дашборд (авторизацияны талап етеді).
smoke-mini — кластер ішінде StatefulSet арқылы үздіксіз smoke-тест жүргізетін қызмет, бұл нағыз қосымшаға ұқсас.
Модуль әр 5 минут сайын шамамен 100 метрика мәнін жібереді. Бұл сан қосылған Deckhouse модульдерінің санына байланысты өзгеруі мүмкін.
Жұмыс түйіндерінің саны: 10-ға дейін
vCPU саны: 2-ден 16-ға дейін
Жедел жады (RAM): 4 GB-тан 64 GB-қа дейін