Кластер нұсқасын жаңарту
VK Cloud-тағы Kubernetes кластерлері үшін Kubernetes нұсқасын қолдау көрсетілетін нұсқалардың біріне жаңарту операциясы қолжетімді. Нұсқаны төмендетуге болмайды.
Кластер жаңартылған кезде кластердің компоненттерінің бір бөлігі де жаңартылады. Бұл ретте, егер кластермен бірге жаңартылатын компонент жойылған болса, ол кластер жаңартылған кезде қалпына келтіріледі. Жаңартылатын компоненттердің тізімі:
-
Gatekeeper.
-
Shell Operator.
-
CoreDNS.
CoreDNS жаңартылған кезде ағымдағы Corefile әдепкі баптаулары бар жаңа файлмен қайта жазылады.
Егер кластерде өзгертілген Corefile қолданылса, кластерді жаңартпас бұрын оның резервтік көшірмесін жасаңыз.
Аддондар кластермен бірге жаңартылмайды. Қажет болса, кластер жаңартуы аяқталғаннан кейін аддондарды өзіңіз жаңартыңыз.
Жаңарту рәсімі 1.16 және одан төмен нұсқадағы кластерлер үшін өзгеше. Оларды тек деректердің резервтік көшірмесін қажетті нұсқадағы жаңа кластерге көшіру арқылы ғана жаңартуға болады, мысалы, Velero көмегімен.
Кластерді жаңарту мынадай түрде жүреді:
-
Master-түйіндер жаңартылады. Жаңарту rolling update қағидаты бойынша (қадам-қадаммен) орындалады:
- Бірінші master-түйін жаңартылады: ол кластерден шығарылады, жаңартылады, жаңартудың сәтті өткені тексеріледі және қайтадан кластерге қосылады.
- Жаңартылған master-түйін кластерге оралған бойда келесі түйін жаңартылады. Барлық master-түйіндер біртіндеп, әр қадамда бір түйіннен жаңартылады.
Кластерді жаңарту кезінде сервистердің үздіксіз жұмысын қамтамасыз ету үшін 3–5 master-түйіні бар кластерлерді жасау ұсынылады.
-
Топтардағы worker-түйіндер жаңартылады.
Бұл рәсім де rolling update қағидаты бойынша орындалады, бірақ бір қадамда бір емес, мүмкін болатын ең көп түйін саны жаңартылады. Бұл сан түйіндер тобының баптауы Процент недоступных нод при обновлении кластера негізінде есептеледі. Осы баптаудың мәнін түйіндер тобын жасау кезінде де, кластерді жаңарту басталар алдында да орната аласыз. Есептеулерде үлкен жаққа қарай бүтінге дейін дөңгелектеу қолданылады.
Жаңарту кезінде түйіндер қолжетімсіз болады, ал Cloud Containers жүктемені олардан бос түйіндерге автоматты түрде қайта бөледі. Кластер жаңартылған кезде автоматты масштабтау функциясы жұмыс істемейді, сондықтан жаңартылып жатқан түйіндерден жүктемені көшіру үшін жеткілікті мөлшерде master- және worker-түйіндердің резерві болуы қажет.
Процент недоступных нод при обновлении кластера баптауының мәнін таңдағанда, бір уақытта жаңартылатын түйіндердің қалаулы санын ғана емес, кластердің қолжетімді ресурстарын да ескеріңіз, өйткені жаңарту барысында жаңартылып жатқан түйіндерден жүктеме резервтік түйіндерге бағытталуы тиіс. Әйтпесе, жаңартылып жатқан түйіндерде орналасқан қолданбалар үшін қолжетімді ресурстар болмайды. Сондай-ақ жаңартылып жатқан түйіндерден көшірілген жүктемемен жұмысын жалғастыратын түйіндерге қосымша жүктеме түскен жағдайда да түйіндердің жеткілікті қорын қамтамасыз етіңіз. Әдетте бұл мән түйіндердің жалпы санының 1% деңгейінде орнатылады.
Осылайша, егер 30 түйіні бар кластерде олардың 10-ын бір уақытта жаңартуды жоспарлап, Процент недоступных нод при обновлении кластера баптауының сәйкес мәнін орнатсаңыз, жаңартылып жатқан түйіндерден жүктеме көшірілетін кемінде 10 резервтік түйін болуы керек. Сондай-ақ жүктеме артып кеткен жағдайда тағы бір қосымша түйін қажет.
Процент недоступных нод при обновлении кластера баптауының мәнін қалай есептеу керегін мысалмен қарастырайық. Мынаны ұйғарайық:
- Кластерде бизнес үшін маңызды жүктеме орындалатын тоғыз worker-түйіннен тұратын топ бар. Бұл сервистер мен қолданбалар жаңарту процесінің бүкіл барысында қолжетімді болуы тиіс.
- Жүктеменің жұмыс істеуі үшін кемінде алты түйін қажет, яғни бір уақытта үш түйінді жаңартуға болады.
Процент недоступных нод при обновлении кластера баптауының мәнін таңдау үшін:
-
Қанша пайыз түйінді жаңартуға болатынын есептеңіз. Ол үшін бір уақытта жаңартуға болатын түйіндердің ең көп санын түйіндердің жалпы санына бөліп, 100-ге көбейтіңіз:
(3 / 9) x 100 = 33,33333...% -
Алынған нәтижені төменгі жаққа қарай дөңгелектеңіз. Бұл баптаудың оңтайлы мәні болады:
9 x 33% = 2,97Алынған бөлшек нәтиже үлкен жаққа қарай бүтінге дейін дөңгелектеледі. Нәтижесінде тоғыз түйіннің үшеуін бір уақытта жаңартуға болады, бұл талаптарға сай келеді.
-
Cloud Containers жаңартылып жатқан түйіндерден жүктемені оларға көшіруі үшін жеткілікті мөлшерде резервтік түйіндер бар екеніне көз жеткізіңіз. Егер worker-түйіндер жеткіліксіз болса, оларды қосыңыз.
-
Баптаудың мәнін орнатыңыз:
- не есептелген пайызға дәл тең етіп, сонда бір уақытта жол берілетін ең көп түйін саны жаңартылады;
- не есептелген пайыздан төмен етіп, сонда бір уақытта азырақ түйін жаңартылады.
Келтірілген мысалда:
- баптау мәні 33% болса, түйіндер әр жолы 3-тен жаңартылады;
- баптау мәні 20% болса, түйіндер әр жолы 2-ден жаңартылады;
- баптау мәні 10% болса, түйіндер әр жолы 1-ден жаңартылады.