බෙදා හරින ලද පද්ධතිවල ක්රියාකාරිත්වයේ වැදගත් කරුණක් වන්නේ අසාර්ථක හැසිරවීමයි. ඔබගේ පද්ධතියේ සෞඛ්යය නිරීක්ෂණය කරන සහ ක්රියා විරහිත වූ සේවාවන් නැවත ආරම්භ කරන පාලක භාවිතා කිරීමෙන් Kubernetes මෙයට උදවු කරයි. කෙසේ වෙතත්, සමස්ත පද්ධතියේ සෞඛ්යය සහතික කිරීම සඳහා Kubernetes හට ඔබගේ යෙදුම් බලහත්කාරයෙන් නතර කළ හැක. මෙම ලිපි මාලාවේදී, අපි Kubernetes හට එහි කාර්යය වඩාත් කාර්යක්ෂමව කිරීමට සහ යෙදුම් අක්රිය කාලය අඩු කිරීමට ඔබට උදව් කරන්නේ කෙසේදැයි බලමු.
බහාලුම් වලට පෙර, බොහෝ යෙදුම් අථත්ය හෝ භෞතික යන්ත්ර මත ධාවනය විය. යෙදුම බිඳ වැටුණහොත් හෝ ශීත කළහොත්, සිදුවෙමින් පවතින කාර්යය අවලංගු කර වැඩසටහන නැවත පූරණය කිරීමට බොහෝ කාලයක් ගත විය. නරකම අවස්ථාවෙහිදී, යමෙකුට මෙම ගැටළුව රාත්රියේ, වඩාත්ම නුසුදුසු වේලාවන්හිදී අතින් විසඳා ගැනීමට සිදු විය. 1-2 වැඩ කරන යන්ත්ර පමණක් වැදගත් කාර්යයක් ඉටු කරන්නේ නම්, එවැනි බාධාවක් සම්පූර්ණයෙන්ම පිළිගත නොහැකි විය.
එබැවින්, අතින් නැවත පණගැන්වීම වෙනුවට, අසාමාන්ය ලෙස අවසන් වීමකදී යෙදුම ස්වයංක්රීයව නැවත ආරම්භ කිරීම සඳහා ක්රියාවලි මට්ටමේ නිරීක්ෂණ භාවිතා කිරීමට පටන් ගත්හ. වැඩසටහන අසමත් වුවහොත්, අධීක්ෂණ ක්රියාවලිය පිටවීමේ කේතය ග්රහණය කර සේවාදායකය නැවත ආරම්භ කරයි. Kubernetes වැනි පද්ධති පැමිණීමත් සමඟ, පද්ධති අසාර්ථකත්වයට මෙම ආකාරයේ ප්රතිචාරය යටිතල ව්යුහයට සරලව ඒකාබද්ධ විය.
සම්පත් බහාලුම්වල සිට නෝඩ් වෙත ගමන් කරන විට ඒවා සෞඛ්ය සම්පන්නව පවතින බව සහතික කිරීමට Kubernetes නිරීක්ෂණ-වෙනස-ක්රියාකාරී සිදුවීම් පුඩුවක් භාවිතා කරයි.
මෙයින් අදහස් කරන්නේ ඔබට තවදුරටත් ක්රියාවලි අධීක්ෂණය අතින් ක්රියාත්මක කිරීමට අවශ්ය නොවන බවයි. සම්පතක් සෞඛ්ය පරීක්ෂාව අසමත් වුවහොත්, Kubernetes එය ආදේශකයක් සමඟ ස්වයංක්රීයව සපයනු ඇත. කෙසේ වෙතත්, Kubernetes අසාර්ථක වීම් සඳහා ඔබගේ අයදුම්පත නිරීක්ෂණය කිරීමට වඩා බොහෝ දේ කරයි. බහු යන්ත්ර මත ධාවනය කිරීමට, යෙදුම යාවත්කාලීන කිරීමට, හෝ ඔබේ යෙදුමේ බහු අනුවාද එකවර ධාවනය කිරීමට එයට යෙදුමේ තවත් පිටපත් සෑදිය හැක.
එමනිසා, Kubernetes හට පරිපූර්ණ සෞඛ්ය සම්පන්න කන්ටේනරයක් අවසන් කිරීමට හේතු බොහොමයක් තිබේ. උදාහරණයක් ලෙස, ඔබ ඔබේ යෙදවීම උත්ශ්රේණි කළහොත්, නව ඒවා ආරම්භ කරන අතරතුර Kubernetes පැරණි කරල් සෙමෙන් නවත්වනු ඇත. ඔබ නෝඩයක් වසා දැමුවහොත්, Kubernetes එම නෝඩයේ සියලුම කරල් ධාවනය කිරීම නවත්වනු ඇත. අවසාන වශයෙන්, නෝඩයක සම්පත් අවසන් වුවහොත්, එම සම්පත් නිදහස් කිරීමට Kubernetes සියලු කරල් වසා දමයි.
එබැවින්, අවසාන පරිශීලකයාට අවම බලපෑමක් සහ අවම ප්රතිසාධන කාලයකින් ඔබේ යෙදුම අවසන් වීම ඉතා වැදගත් වේ. මෙයින් අදහස් වන්නේ එය වසා දැමීමට පෙර, එය සුරැකීමට අවශ්ය සියලු දත්ත සුරැකිය යුතු අතර, සියලු ජාල සම්බන්ධතා වසා දැමීම, ඉතිරි වැඩ සම්පූර්ණ කිරීම සහ අනෙකුත් හදිසි කාර්යයන් කළමනාකරණය කළ යුතුය.
ප්රායෝගිකව, මෙයින් අදහස් කරන්නේ Unix මෙහෙයුම් පද්ධතිවල කිල් උපයෝගිතා සඳහා පෙරනිමි සංඥාව වන SIGTERM පණිවිඩය, ක්රියාවලි අවසන් කිරීමේ සංඥාව හැසිරවීමට ඔබේ යෙදුමට හැකි විය යුතු බවයි. මෙම පණිවිඩය ලැබීමෙන් පසු, යෙදුම වසා දැමිය යුතුය.
Kubernetes පොඩ් එකක් අවසන් කිරීමට තීරණය කළ පසු, සිදුවීම් ගණනාවක් සිදු වේ. කන්ටේනරයක් හෝ පොඩ් එකක් වසා දැමීමේදී Kubernetes ගන්නා සෑම පියවරක්ම බලමු.
අපි හිතමු අපිට එක පොඩ්ඩෙක් ටර්මිනේට් කරන්න ඕන කියලා. මෙම අවස්ථාවේදී, එය නව ගමනාගමනය ලබා ගැනීම නවත්වනු ඇත - පොඩ්ඩේ ධාවනය වන බහාලුම්වලට බලපෑමක් ඇති නොවනු ඇත, නමුත් සියලුම නව ගමනාගමනය අවහිර කරනු ලැබේ.
පොඩ් එකක ඇති බහාලුම් වෙත යවන විශේෂ විධානයක් හෝ HTTP ඉල්ලීමක් වන preStop කොක්කය දෙස බලමු. SIGTERM ලැබීමේදී ඔබගේ යෙදුම නිවැරදිව වසා නොදමන්නේ නම්, නිවැරදිව වසා දැමීමට ඔබට preStop භාවිතා කළ හැක.
SIGTERM සංඥාවක් ලැබුණු විට බොහෝ වැඩසටහන් අලංකාර ලෙස පිටව යනු ඇත, නමුත් ඔබ තෙවන පාර්ශවීය කේතයක් හෝ ඔබ සම්පූර්ණයෙන්ම පාලනය නොකරන යම් පද්ධතියක් භාවිතා කරන්නේ නම්, යෙදුම වෙනස් නොකර අලංකාර වසා දැමීමට බල කිරීමට preStop කොක්ක හොඳ ක්රමයකි.
මෙම කොක්ක ක්රියාත්මක කිරීමෙන් පසු, Kubernetes පොඩ්ඩේ ඇති බහාලුම් වෙත SIGTERM සංඥාවක් යවනු ඇත, ඒවා ඉක්මනින් විසන්ධි වන බව ඔවුන්ට දන්වනු ඇත. මෙම සංඥාව ලැබීමෙන් පසු, ඔබගේ කේතය වසා දැමීමේ ක්රියාවලිය වෙත ගමන් කරනු ඇත. මෙම ක්රියාවලියට දත්ත සමුදා සම්බන්ධතාවයක් හෝ WebSocket ප්රවාහයක් වැනි දිගුකාලීන සම්බන්ධතා නැවැත්වීම, වත්මන් තත්වය සුරැකීම සහ ඒ හා සමාන දේ ඇතුළත් විය හැක.
ඔබ preStop කොක්කක් භාවිතා කළත්, ඔබ SIGTERM සංඥාවක් යවන විට ඔබේ යෙදුමට හරියටම සිදුවන්නේ කුමක්ද සහ එය හැසිරෙන්නේ කෙසේද යන්න පරීක්ෂා කිරීම ඉතා වැදගත් වේ, එවිට Pod shutdown නිසා ඇති වන සිදුවීම් හෝ පද්ධති ක්රියාකාරිත්වයේ වෙනස්කම් නොපැමිණේ. ඔබට පුදුමයක්.
මෙම අවස්ථාවේදී, Kubernetes ඉදිරි ක්රියාමාර්ග ගැනීමට පෙර, terminationGracePeriodSecond ලෙස හැඳින්වෙන නිශ්චිත කාලයක් හෝ SIGTERM සංඥාවක් ලැබුණු විට අලංකාර ලෙස වසා දැමීමේ කාල සීමාවක් බලා සිටිනු ඇත.
පෙරනිමියෙන් මෙම කාලය තත්පර 30 කි. එය preStop හක්ක සහ SIGTERM සංඥාව සමඟ සමාන්තරව ක්රියාත්මක වන බව සැලකිල්ලට ගැනීම වැදගත්ය. PreStop කොක්ක සහ SIGTERM අවසන් වන තෙක් Kubernetes බලා නොසිටිනු ඇත - TerminationGracePeriod අවසන් වීමට පෙර ඔබේ යෙදුම පිටවන්නේ නම්, Kubernetes වහාම ඊළඟ පියවර වෙත ගමන් කරනු ඇත. එමනිසා, තත්පර කිහිපයකින් මෙම කාල පරිච්ඡේදයේ අගය නිවැරදිව වසා දැමීමට ගතවන කාලයට වඩා අඩු නොවන බව පරීක්ෂා කරන්න, එය තත්පර 30 ඉක්මවන්නේ නම්, YAML හි අපේක්ෂිත අගයට කාල සීමාව වැඩි කරන්න. ලබා දී ඇති උදාහරණයේ එය 60s වේ.
අවසාන වශයෙන්, අවසාන පියවර වන්නේ GracePeriod අවසන් වීමෙන් පසුවත් බහාලුම් ක්රියාත්මක වන්නේ නම්, ඒවා SIGKILL සංඥාවක් යවන අතර බලහත්කාරයෙන් මකා දැමෙනු ඇත. මෙම අවස්ථාවේදී, Kubernetes අනෙකුත් සියලුම කරල් වස්තූන් ද පිරිසිදු කරනු ඇත.
Kubernetes බොහෝ හේතු නිසා කරල් අවසන් කරයි, එබැවින් ස්ථාවර සේවාවක් සහතික කිරීම සඳහා ඔබේ යෙදුම ඕනෑම අවස්ථාවක අලංකාර ලෙස අවසන් වන බවට වග බලා ගන්න.
සමහර දැන්වීම් 🙂
අප සමඟ රැඳී සිටීම ගැන ඔබට ස්තුතියි. ඔබ අපේ ලිපි වලට කැමතිද? වඩාත් රසවත් අන්තර්ගතය බැලීමට අවශ්යද? ඇණවුමක් කිරීමෙන් හෝ මිතුරන්ට නිර්දේශ කිරීමෙන් අපට සහාය වන්න,
Dell R730xd ඇම්ස්ටර්ඩෑම් හි Equinix Tier IV දත්ත මධ්යස්ථානයේ 2 ගුණයක් ලාභදායීද? මෙතන විතරයි
මූලාශ්රය: www.habr.com