Kubernetes පොකුරක් නිර්මාණය කරන විට, ප්රශ්න මතු විය හැකිය: වින්යාස කිරීමට සේවක නෝඩ් කීයක් සහ කුමන වර්ගයද? පරිශ්රයේ පොකුරක් සඳහා වඩා හොඳ කුමක්ද: බලවත් සේවාදායකයන් කිහිපයක් මිලදී ගන්න හෝ ඔබේ දත්ත මධ්යස්ථානයේ පැරණි යන්ත්ර දුසිමක් භාවිතා කරන්න? වලාකුළෙහි තනි-හරය අටක් හෝ ක්වාඩ්-කෝර් අවස්ථා දෙකක් ගැනීම වඩා හොඳද?
මෙම ප්රශ්නවලට පිළිතුරු ලිපියේ ඇත.
පොකුරු ධාරිතාව
පොදුවේ ගත් කල, කුබර්නෙටස් පොකුරක් විශාල "සුපර්නෝඩයක්" ලෙස සැලකිය හැකිය. එහි සම්පූර්ණ පරිගණක බලය යනු එහි සියලුම සංඝටක නෝඩ් වල බලවල එකතුවයි.
ඔබගේ අපේක්ෂිත පොකුරු ධාරිතාව ඉලක්කය සපුරා ගැනීමට ක්රම කිහිපයක් තිබේ. උදාහරණයක් ලෙස, අපට ප්රොසෙසර් කෝර් 8 ක සම්පූර්ණ ධාරිතාවක් සහ 32 GB RAM සහිත පොකුරක් අවශ්ය වේ, මන්ද යෙදුම් කට්ටලයකට බොහෝ සම්පත් අවශ්ය වේ. එවිට ඔබට 16 GB මතකයක් සහිත නෝඩ් දෙකක් හෝ 8 GB මතකයක් සහිත නෝඩ් හතරක්, quad-core ප්රොසෙසර දෙකක් හෝ dual-core ඒවා හතරක් ස්ථාපනය කළ හැකිය.
මෙන්න පොකුරක් නිර්මාණය කිරීමට හැකි ක්රම දෙකක් පමණි:
විකල්ප දෙකම එකම ධාරිතාවකින් යුත් පොකුරක් නිපදවයි, නමුත් පහළ වින්යාසයට කුඩා නෝඩ් හතරක් ඇති අතර ඉහළ වින්යාසයට විශාල නෝඩ් දෙකක් ඇත.
කුමන විකල්පය වඩා හොඳද?
මෙම ප්රශ්නයට පිළිතුරු සැපයීම සඳහා, විකල්ප දෙකෙහිම වාසි දෙස බලමු. අපි ඒවා වගුවක සාරාංශ කර ඇත.
විශාල නෝඩ් කිහිපයක්
බොහෝ කුඩා නෝඩ්
පහසු පොකුරු කළමනාකරණය (එය පරිශ්රයේ නම්)
සුමට ස්වයංක්රීය පරිමාණය
මිල අඩු (පරිශ්රයේ නම්)
මිල ටිකක් වෙනස් (වලාකුළේ)
සම්පත්-දැඩි යෙදුම් ධාවනය කළ හැක
සම්පූර්ණ අනුකරණය
සම්පත් වඩාත් කාර්යක්ෂමව භාවිතා කරයි (පද්ධති ඩීමන් මත අඩු පොදු කාර්ය
ඉහළ පොකුරු දෝෂ ඉවසීම
අපි කතා කරන්නේ කම්කරු නෝඩ් ගැන පමණක් බව කරුණාවෙන් සලකන්න. ප්රධාන නෝඩ් ගණන සහ ප්රමාණය තෝරා ගැනීම සම්පූර්ණයෙන්ම වෙනස් මාතෘකාවකි.
එබැවින්, වගුවේ ඇති එක් එක් කරුණ වඩාත් විස්තරාත්මකව සාකච්ඡා කරමු.
පළමු විකල්පය: විශාල නෝඩ් කිහිපයක්
වඩාත්ම ආන්තික විකල්පය වන්නේ සමස්ත පොකුරු ධාරිතාව සඳහා එක් සේවක නෝඩයකි. ඉහත උදාහරණයේ, මෙය CPU cores 16 ක් සහ 16 GB RAM සහිත තනි සේවක node එකක් වනු ඇත.
ප්ලස්
ප්ලස් අංක 1. පහසු කළමනාකරණය
සම්පූර්ණ යාත්රාවකට වඩා යන්ත්ර කිහිපයක් කළමනාකරණය කිරීම පහසුය. යාවත්කාලීන කිරීම් සහ නිවැරදි කිරීම් සිදු කිරීම වේගවත් වන අතර එය සමමුහුර්ත කිරීම පහසුය. නිරපේක්ෂ සංඛ්යාවල අසාර්ථක සංඛ්යාව ද අඩුය.
ඉහත සියල්ල ඔබගේ දෘඪාංග වලට, ඔබගේ සේවාදායකයන්ට, සහ වලාකුළු නිදසුන් සඳහා නොවන බව කරුණාවෙන් සලකන්න.
වලාකුළේ තත්වය වෙනස් ය. එහි කළමනාකරණය ක්ලවුඩ් සේවා සපයන්නා විසින් හසුරුවනු ලැබේ. මේ අනුව, වලාකුළෙහි නෝඩ් දහයක් කළමනාකරණය කිරීම එක් නෝඩයක් කළමනාකරණයට වඩා බෙහෙවින් වෙනස් නොවේ.
වලාකුළේ කරල් අතර ගමනාගමන මාර්ගගත කිරීම සහ පැටවීම බෙදා හැරීම
Pro #2: නෝඩයකට අඩු පිරිවැය
බලවත් මෝටර් රථයක් වඩා මිල අධිකයි, නමුත් මිල වැඩිවීම අනිවාර්යයෙන්ම රේඛීය නොවේ. වෙනත් වචන වලින් කිවහොත්, 10 GB මතකයක් සහිත එක් ten-core සේවාදායකයක් සාමාන්යයෙන් එකම මතක ප්රමාණය සහිත තනි-core සේවාදායකයන් දහයකට වඩා ලාභදායී වේ.
නමුත් මෙම රීතිය සාමාන්යයෙන් වලාකුළු සේවා වල ක්රියා නොකරන බව සලකන්න. සියලුම ප්රධාන වලාකුළු සපයන්නන්ගේ වත්මන් මිලකරණ යෝජනා ක්රමවල, ධාරිතාව සමඟ රේඛීයව මිල වැඩිවේ.
මේ අනුව, වලාකුළෙහි ඔබට සාමාන්යයෙන් වඩා බලවත් සේවාදායකයන් මත සුරැකිය නොහැක.
Pro #3: ඔබට සම්පත්-දැඩි යෙදුම් ධාවනය කළ හැක
සමහර යෙදුම් සඳහා පොකුරක් තුළ බලවත් සේවාදායකයන් අවශ්ය වේ. උදාහරණයක් ලෙස, යන්ත්ර ඉගෙනුම් පද්ධතියකට 8 GB මතකයක් අවශ්ය නම්, ඔබට එය 1 GB nodes මත ධාවනය කිරීමට නොහැකි වනු ඇත, නමුත් අවම වශයෙන් එක් විශාල සේවක node එකක් සමඟ පමණි.
මිනිසු
අවාසි අංක 1. නෝඩයකට බොහෝ කරල්
එකම කාර්යය අඩු නෝඩ් මත සිදු කරන්නේ නම්, ඒ සෑම එකක්ම ස්වභාවිකවම වැඩි කරල් ඇත.
මෙය ගැටළුවක් විය හැකිය.
හේතුව, සෑම මොඩියුලයක්ම බහාලුම් ධාවන කාලයට (උදා: ඩොකර්) මෙන්ම kubelet සහ cAdvisor වෙත යම් උඩිස් එකක් හඳුන්වා දීමයි.
උදාහරණයක් ලෙස, kubelet විසින් නෝඩයක් මත ඇති සියලුම බහාලුම් නොනැසී පැවතීම සඳහා නිතිපතා පරීක්ෂා කරයි - බහාලුම් වැඩි වන තරමට, kubelet හට වැඩිපුර වැඩ කිරීමට සිදුවේ.
CAdvisor නෝඩයක ඇති සියලුම බහාලුම් සඳහා සම්පත් භාවිත සංඛ්යාලේඛන එකතු කරයි, සහ kubelet මෙම තොරතුරු නිතිපතා විමසා API හරහා එය සපයයි. නැවතත්, වැඩි බහාලුම් යනු cAdvisor සහ kubelet යන දෙකටම වැඩි වැඩකි.
මොඩියුල ගණන වැඩි වුවහොත්, එය පද්ධතිය මන්දගාමී විය හැකි අතර එහි විශ්වසනීයත්වය පවා අඩාල කරයි.
Kubernetes ගබඩාවේ සමහර
මේ හේතුව නිසා Kubernetes
අවාසි අංක 2. අනුකරණය පිළිබඳ සීමාව
යෙදුම් ප්රතිවර්තනයේ ඵලදායි ප්රමාණය සීමා කරන නෝඩ් ඉතා ස්වල්පයකි. උදාහරණයක් ලෙස, ඔබට අනුරූ පහක් සහිත ඉහළ ලද හැකි යෙදුමක් ඇති නමුත් නෝඩ් දෙකක් පමණක් තිබේ නම්, යෙදුමේ ඵලදායි අනුකරණයේ මට්ටම දෙකක් දක්වා අඩු වේ.
අනුපිටපත් පහක් බෙදා හැරිය හැක්කේ නෝඩ් දෙකක් හරහා පමණක් වන අතර, ඉන් එකක් අසාර්ථක වුවහොත්, එය එකවර අනුපිටපත් කිහිපයක් ඉවත් කරයි.
ඔබට නෝඩ් පහක් හෝ වැඩි ගණනක් තිබේ නම්, සෑම අනුරුවක්ම වෙනම නෝඩයක් මත ක්රියාත්මක වන අතර, එක් නෝඩයක අසාර්ථකත්වය උපරිම වශයෙන් එක් අනුරුවක් ඉවත් කරයි.
මේ අනුව, ඉහළ ලබා ගැනීමේ අවශ්යතා සඳහා පොකුරේ නිශ්චිත අවම නෝඩ් සංඛ්යාවක් අවශ්ය විය හැකිය.
අවාසි අංක 3. අසාර්ථක වීමේ නරක ප්රතිවිපාක
නෝඩ් කුඩා සංඛ්යාවක් සමඟ, එක් එක් අසාර්ථකත්වය වඩාත් බරපතල ප්රතිවිපාක ඇත. උදාහරණයක් ලෙස, ඔබට ඇත්තේ නෝඩ් දෙකක් පමණක් නම් සහ ඒවායින් එකක් අසමත් වුවහොත්, ඔබේ මොඩියුලවලින් අඩක් වහාම අතුරුදහන් වේ.
ඇත්ත වශයෙන්ම, Kubernetes අසාර්ථක වූ නෝඩයේ සිට වැඩ බර අන් අය වෙත සංක්රමණය කරනු ඇත. නමුත් ඒවායින් කිහිපයක් තිබේ නම්, ප්රමාණවත් නිදහස් ධාරිතාවක් නොතිබිය හැකිය. එහි ප්රතිඵලයක් වශයෙන්, ඔබ අසාර්ථක වූ නෝඩය ගෙන එන තෙක් ඔබගේ සමහර යෙදුම් නොතිබෙනු ඇත.
මේ අනුව, වැඩි නෝඩ්, දෘඩාංග අසමත්වීම් වල බලපෑම අඩු වේ.
අවාසි #4: තවත් ස්වයං පරිමාණ පියවර
ක්ලවුඩ් යටිතල පහසුකම් සඳහා පොකුරු ස්වයංක්රීය පරිමාණ පද්ධතියක් Kubernetes සතුව ඇත, එය ඔබගේ වර්තමාන අවශ්යතා අනුව ස්වයංක්රීයව නෝඩ් එකතු කිරීමට හෝ ඉවත් කිරීමට ඔබට ඉඩ සලසයි. විශාල නෝඩ් සමඟ, ස්වයංක්රීය පරිමාණය වඩාත් හදිසි සහ අවුල් සහගත වේ. උදාහරණයක් ලෙස, නෝඩ් දෙකක, අතිරේක නෝඩයක් එකතු කිරීම වහාම පොකුරු ධාරිතාව 50% කින් වැඩි කරයි. ඔබට අවශ්ය නැති වුවද, එම සම්පත් සඳහා ඔබට ගෙවීමට සිදුවනු ඇත.
මේ අනුව, ඔබ ස්වයංක්රීය පොකුරු පරිමාණය භාවිතා කිරීමට අදහස් කරන්නේ නම්, නෝඩ් කුඩා වන තරමට, ඔබට වඩාත් නම්යශීලී සහ ලාභදායී පරිමාණය ලැබෙනු ඇත.
දැන් අපි කුඩා නෝඩ් විශාල ගණනක වාසි සහ අවාසි දෙස බලමු.
දෙවන විකල්පය: බොහෝ කුඩා නෝඩ්
මෙම ප්රවේශයේ වාසි අත්යවශ්යයෙන්ම විශාල නෝඩ් කිහිපයක් සහිත ප්රතිවිරුද්ධ විකල්පයේ අවාසි වලින් පැන නගී.
ප්ලස්
Pro #1: අසාර්ථක වීමේ අඩු බලපෑම
නෝඩ් වැඩි වන තරමට, එක් එක් නෝඩයේ කරල් අඩු වේ. උදාහරණයක් ලෙස, ඔබට නෝඩ් දහයකට මොඩියුල සියයක් තිබේ නම්, සෑම නෝඩයකටම සාමාන්ය මොඩියුල දහයක් ඇත.
මේ ආකාරයෙන්, එක් නෝඩ් එකක් අසමත් වුවහොත්, ඔබට අහිමි වන්නේ වැඩ ප්රමාණයෙන් 10% ක් පමණි. අනුරූ කුඩා සංඛ්යාවක් පමණක් බලපාන අතර සමස්ත යෙදුම ක්රියාත්මකව පවතිනු ඇත.
මීට අමතරව, ඉතිරි නෝඩ් වලට අසාර්ථක වූ නෝඩයේ කාර්ය භාරය හැසිරවීමට ප්රමාණවත් තරම් නිදහස් සම්පත් තිබෙනු ඇත, එබැවින් Kubernetes හට නිදහසේ කරල් නැවත කාලසටහන්ගත කළ හැකි අතර ඔබේ යෙදුම් සාපේක්ෂව ඉක්මනින් ක්රියාකාරී තත්ත්වයට පත් වේ.
Pro #2: හොඳ අනුකරණය
ප්රමාණවත් නෝඩ් තිබේ නම්, Kubernetes උපලේඛකයාට සියලුම අනුරූ සඳහා විවිධ නෝඩ් පැවරිය හැක. මේ ආකාරයට, නෝඩයක් අසමත් වුවහොත්, එක් අනුරුවක් පමණක් බලපාන අතර යෙදුම පවතිනු ඇත.
මිනිසු
අවාසි අංක 1. පාලනය කිරීමට අපහසුය
නෝඩ් විශාල සංඛ්යාවක් කළමනාකරණය කිරීම වඩා දුෂ්කර ය. උදාහරණයක් ලෙස, සෑම Kubernetes node එකක්ම අනෙක් සියල්ල සමඟ සන්නිවේදනය කළ යුතුය, එනම්, සම්බන්ධතා ගණන චතුරස්රාකාරව වර්ධනය වන අතර, මෙම සියලු සම්බන්ධතා නිරීක්ෂණය කළ යුතුය.
Kubernetes Controller Manager හි ඇති නෝඩ් පාලකය සෞඛ්යය පරීක්ෂා කිරීම සඳහා නිතිපතා පොකුරේ ඇති සියලුම නෝඩ් හරහා ගමන් කරයි - නෝඩ් වැඩි වන තරමට පාලකය මත බර වැඩි වේ.
etcd දත්ත සමුදාය මත පැටවීම ද වර්ධනය වේ - එක් එක් kubelet සහ kube-proxy ඇමතුම්
සාමාන්යයෙන්, සෑම සේවක නෝඩයක්ම ප්රධාන නෝඩ් වල පද්ධති සංරචක මත අමතර බරක් පටවයි.
Kubernetes නිල වශයෙන් පොකුරු සඳහා සහය දක්වයි
සේවක නෝඩ් විශාල සංඛ්යාවක් කළමනාකරණය කිරීම සඳහා, ඔබ වඩාත් බලවත් ප්රධාන නෝඩ් තෝරාගත යුතුය. උදාහරණයක් ලෙස, kube-up
මෙම විශේෂිත ගැටළු විසඳීම සඳහා වැනි විශේෂ වර්ධනයන් ඇත
අවාසි #2: වැඩි පොදු කාර්ය පිරිවැය.
සෑම සේවක නෝඩයකම, Kubernetes පද්ධති ඩීමන් කට්ටලයක් ධාවනය කරයි - මේවාට cAdvisor ඇතුළුව බහාලුම් ධාවන කාලය (Docker වැනි), kube-proxy සහ kubelet ඇතුළත් වේ. ඔවුන් එක්ව යම් නිශ්චිත සම්පත් ප්රමාණයක් පරිභෝජනය කරයි.
ඔබට කුඩා නෝඩ් බොහොමයක් තිබේ නම්, එක් එක් නෝඩය මත මෙම උඩිස් කොටසේ අනුපාතය විශාල වේ. උදාහරණයක් ලෙස, එක් නෝඩයක ඇති සියලුම පද්ධති ඩීමන් එකට 0,1 CPU cores සහ 0,1 GB මතකයක් භාවිතා කරන බව සිතන්න. ඔබට 10 GB මතකයක් සහිත දස-core node එකක් තිබේ නම්, ඩීමන් පොකුරු ධාරිතාවෙන් 1%ක් පරිභෝජනය කරයි. අනෙක් අතට, 1 GB මතකයක් සහිත තනි-core නෝඩ් දහයක, ඩීමන් පොකුරු ධාරිතාවයෙන් 10% ක් ගනී.
මේ අනුව, නෝඩ් අඩු වන තරමට යටිතල පහසුකම් වඩාත් කාර්යක්ෂමව භාවිතා වේ.
අවාසි අංක 3. සම්පත් අකාර්යක්ෂම ලෙස භාවිතා කිරීම
කුඩා නෝඩ් වල, ඉතිරි සම්පත් කුට්ටි කිසිදු වැඩ බරක් පැවරීමට නොහැකි තරම් කුඩා බැවින් ඒවා භාවිතයට නොගෙන පවතී.
උදාහරණයක් ලෙස, සෑම පොඩ් එකකටම 0,75 GB මතකයක් අවශ්ය වේ. ඔබට නෝඩ් දහයක් තිබේ නම්, එක් එක් මතකය 1GB නම්, ඔබට පොඩ් දහයක් ක්රියාත්මක කළ හැකි අතර, සෑම නෝඩයක්ම 0,25GB භාවිතා නොකළ මතකයක් ඉතිරි කරයි.
මෙයින් අදහස් කරන්නේ සමස්ත පොකුරු මතකයෙන් 25% ක් අපතේ යන බවයි.
10 GB මතකයක් සහිත විශාල නෝඩයක් මත, ඔබට මෙම මොඩියුල 13 ක් ධාවනය කළ හැකිය - සහ 0,25 GB භාවිතා නොකළ එක් කොටසක් පමණක් ඇත.
මෙම අවස්ථාවේදී, මතකයෙන් 2,5% ක් පමණක් අපතේ යයි.
මේ අනුව, විශාල නෝඩ් මත සම්පත් වඩාත් ප්රශස්ත ලෙස භාවිතා වේ.
විශාල නෝඩ් කිහිපයක් හෝ කුඩා ඒවා බොහොමයක්?
ඉතින්, වඩා හොඳ කුමක්ද: පොකුරේ විශාල නෝඩ් කිහිපයක් හෝ කුඩා ඒවා බොහොමයක්? සෑම විටම මෙන්, පැහැදිලි පිළිතුරක් නොමැත. යෙදුම් වර්ගය මත බොහෝ දේ රඳා පවතී.
උදාහරණයක් ලෙස, යෙදුමකට 10 GB මතකයක් අවශ්ය නම්, විශාල නෝඩ් පැහැදිලි තේරීමක් වේ. තවද යෙදුමට ඉහළ ප්රයෝජනයක් සඳහා දස ගුණයකින් අනුකරණයක් අවශ්ය නම්, නෝඩ් දෙකක පමණක් අනුරූ තැබීමේ අවදානම කිසිසේත්ම වටින්නේ නැත - පොකුරේ අවම වශයෙන් නෝඩ් දහයක්වත් තිබිය යුතුය.
අතරමැදි අවස්ථාවන්හිදී, එක් එක් විකල්පයේ වාසි සහ අවාසි මත පදනම්ව තේරීමක් කරන්න. සමහර තර්ක අනෙක් ඒවාට වඩා ඔබේ තත්වයට වඩාත් අදාළ වේ.
තවද සියලුම නෝඩ් එකම ප්රමාණයෙන් සෑදීම අවශ්ය නොවේ. එකම ප්රමාණයේ නෝඩ් සමඟ මුලින්ම අත්හදා බැලීමෙන් කිසිවක් ඔබව වළක්වන්නේ නැත, පසුව ඒවාට වෙනස් ප්රමාණයේ නෝඩ් එකතු කිරීම, ඒවා පොකුරකට ඒකාබද්ධ කිරීම. Kubernetes පොකුරක් තුළ සේවක නෝඩ් සම්පූර්ණයෙන්ම විෂමජාතීය විය හැක. එබැවින් ඔබට ප්රවේශයන් දෙකෙහිම වාසි ඒකාබද්ධ කිරීමට උත්සාහ කළ හැකිය.
තනි වට්ටෝරුවක් නොමැති අතර, සෑම තත්වයකටම තමන්ගේම සූක්ෂ්මතා ඇති අතර, නිෂ්පාදනය පමණක් සත්යය පෙන්වනු ඇත.
වලාකුළු වේදිකා කණ්ඩායම විසින් සකස් කරන ලද පරිවර්තනය
Kubernetes ගැන වැඩි විස්තර:
මූලාශ්රය: www.habr.com