Yandex.Cloud සඳහා Kubernetes CCM (Cloud Controller Manager) හඳුන්වා දීම

Yandex.Cloud සඳහා Kubernetes CCM (Cloud Controller Manager) හඳුන්වා දීම

මෑත කාලීනව අඛණ්ඩව CSI ධාවක නිකුතුව Yandex.Cloud සඳහා අපි මෙම වලාකුළ සඳහා තවත් විවෘත මූලාශ්‍ර ව්‍යාපෘතියක් ප්‍රකාශයට පත් කරන්නෙමු - Cloud Controller Manager. CCM සමස්තයක් ලෙස පොකුරු සඳහා පමණක් නොව, CSI ධාවකය සඳහාම අවශ්ය වේ. එහි අරමුණ සහ සමහර ක්‍රියාත්මක කිරීමේ විශේෂාංග පිළිබඳ විස්තර කප්පාදුව යටතේ ඇත.

හැඳින්වීම

ඇයි මේ?

Yandex.Cloud සඳහා CCM සංවර්ධනය කිරීමට අපව පෙලඹවූ චේතනාවන් දැනටමත් විස්තර කර ඇති ඒවා සමඟ සම්පුර්ණයෙන්ම සමපාත වේ. නිවේදනය CSI ධාවකයන්. අපි විවිධ වලාකුළු සපයන්නන්ගෙන් බොහෝ Kubernetes පොකුරු පවත්වා ගෙන යන අතර, ඒ සඳහා අපි තනි මෙවලමක් භාවිතා කරමු. එය මෙම සපයන්නන්ගේ කළමනාකරණය කළ විසඳුම් "මඟහැරීම" බොහෝ පහසුව ක්‍රියාත්මක කරයි. ඔව්, අපට තරමක් නිශ්චිත අවස්ථාවක් සහ අවශ්‍යතා ඇත, නමුත් ඒවා නිසා නිර්මාණය කරන ලද වර්ධනයන් වෙනත් පරිශීලකයින්ට ප්‍රයෝජනවත් විය හැකිය.

ඇත්තටම CCM යනු කුමක්ද?

සාමාන්‍යයෙන්, අපි පොකුර සඳහා අප අවට පරිසරය සකස් කරමු පිටතින් - උදාහරණයක් ලෙස, Terraform භාවිතා කිරීම. නමුත් සමහර අවස්ථාවලදී අප අවට ඇති වලාකුළු පරිසරය කළමනාකරණය කිරීමට අවශ්ය වේ පොකුරෙන්. මෙම හැකියාව ලබා දී ඇති අතර, එය ක්රියාත්මක කරනු ලබන්නේ එයයි CCM.

විශේෂයෙන්, Cloud Controller Manager ප්‍රධාන අන්තර්ක්‍රියා වර්ග පහක් සපයයි:

  1. උදාහරණ - Kubernetes හි නෝඩ් වස්තුවක් අතර 1:1 සම්බන්ධතාවයක් ක්‍රියාත්මක කරයි (Node) සහ වලාකුළු සපයන්නා තුළ අථත්ය යන්ත්රයක්. මේ සඳහා අපි:
    • ක්ෂේත්රයේ පුරවන්න spec.providerID වස්තුව තුළ Node. උදාහරණයක් ලෙස, OpenStack CCM සඳහා මෙම ක්ෂේත්‍රයට පහත ආකෘතිය ඇත: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. ඔබට වලාකුළු සපයන්නාගේ නම සහ වස්තුවේ සේවාදායකයේ (OpenStack හි අථත්‍ය යන්ත්‍රය) අද්විතීය UUID දැකිය හැක;
    • අනුපූරකය nodeInfo වස්තුව තුළ Node අතථ්‍ය යන්ත්‍රය පිළිබඳ තොරතුරු. උදාහරණයක් ලෙස, අපි AWS හි උදාහරණ වර්ගය සඳහන් කරමු;
    • වලාකුළෙහි අථත්ය යන්ත්රයක් තිබේදැයි අපි පරීක්ෂා කරමු. උදාහරණයක් ලෙස, වස්තුවක් නම් Node තත්ත්වයකට ගියා NotReady, වලාකුළු සපයන්නා තුළ අතථ්‍ය යන්ත්‍රය කිසිසේත්ම පවතින්නේ දැයි ඔබට පරීක්ෂා කළ හැක providerID. එය නොමැති නම්, වස්තුව මකා දමන්න Node, වෙනත් ආකාරයකින් පොකුරේ සදහටම පවතිනු ඇත;
  2. කලාප - වස්තුව සඳහා අසාර්ථක වසම සකසයි Node, වලාකුළු සපයන්නා තුළ ඇති කලාප සහ කලාප අනුව උපලේඛකයාට Pod සඳහා නෝඩයක් තෝරා ගත හැකි වන පරිදි;
  3. LoadBalancer - වස්තුවක් නිර්මාණය කිරීමේදී Service වර්ගය සමඟ LoadBalancer පිටත සිට පොකුරු නෝඩ් වෙත ගමනාගමනය යොමු කරන සමතුලිත වර්ගයක් නිර්මාණය කරයි. උදාහරණයක් ලෙස, Yandex.Cloud හි ඔබට භාවිතා කළ හැකිය NetworkLoadBalancer и TargetGroup මෙම අරමුණු සඳහා;
  4. මාර්ග - නෝඩ් අතර ජාලයක් ගොඩනඟයි, මන්ද Kubernetes අවශ්‍යතා අනුව, සෑම පොඩ් එකකටම තමන්ගේම IP ලිපිනයක් තිබිය යුතු අතර වෙනත් ඕනෑම පොඩ් එකක් වෙත ළඟා වීමට හැකි විය යුතුය. මෙම අරමුණු සඳහා, ඔබට උඩැතිරි ජාලයක් (VXLAN, GENEVE) භාවිතා කළ හැකිය හෝ වලාකුළු සපයන්නාගේ අතථ්‍ය ජාලය තුළ සෘජුවම මාර්ගගත කිරීමේ වගුවක් සකසන්න:

    Yandex.Cloud සඳහා Kubernetes CCM (Cloud Controller Manager) හඳුන්වා දීම

  5. පරිමාව - PVC සහ SC භාවිතා කරමින් PV ගතික ඇණවුම් කිරීමට ඉඩ දෙයි. මුලදී, මෙම ක්‍රියාකාරිත්වය CCM හි කොටසක් වූ නමුත් එහි විශාල සංකීර්ණත්වය හේතුවෙන් එය වෙනම ව්‍යාපෘතියක් වන බහාලුම් ගබඩා අතුරුමුහුණත (CSI) වෙත ගෙන යන ලදී. අපි CSI ගැන කිහිප වතාවක්ම කතා කර ඇත්තෙමු ලියා සහ, දැනටමත් සඳහන් කර ඇති පරිදි, පවා නිදහස් CSI ධාවකය.

මීට පෙර, වලාකුළ සමඟ අන්තර්ක්‍රියා කරන සියලුම කේත කුබර්නෙට්ස් ව්‍යාපෘතියේ ප්‍රධාන Git ගබඩාවේ පිහිටා තිබුණි. k8s.io/kubernetes/pkg/cloudprovider/providers, නමුත් විශාල කේත පදනමක් සමඟ වැඩ කිරීමේ අපහසුතාවය නිසා ඔවුන් මෙය අත්හැරීමට තීරණය කළා. සියලුම පැරණි ක්‍රියාත්මක කිරීම් වෙත ගෙන ගොස් ඇත වෙනම ගබඩාවක්. තවදුරටත් සහාය සහ සංවර්ධනය සඳහා පහසුව සඳහා, සියලු පොදු සංරචක ද ගෙන යන ලදී වෙනම ගබඩාවක්.

CSI මෙන්ම, බොහෝ විශාල වලාකුළු සපයන්නන් දැනටමත් Kubernetes මත වලාකුළු උත්තේජනය කිරීමට ඔවුන්ගේ CCM නිර්මාණය කර ඇත. සැපයුම්කරුට CCM නොමැති නම්, නමුත් අවශ්‍ය සියලුම කාර්යයන් API හරහා තිබේ නම්, ඔබට CCM ක්‍රියාත්මක කළ හැකිය.

CCM හි ඔබගේම ක්රියාත්මක කිරීම ලිවීමට, එය ක්රියාත්මක කිරීමට ප්රමාණවත් වේ අවශ්‍ය Go අතුරුමුහුණත්.

И මේක තමයි අපිට ලැබුනේ.

Реализация

ඔයා කොහොමද මේකට ආවේ

අපි සංවර්ධනය ආරම්භ කළෙමු (හෝ ඒ වෙනුවට, භාවිතා කිරීමට පවා). සූදානම් (!) CCM වසරකට පෙර Yandex.Cloud සඳහා.

කෙසේ වෙතත්, මෙම ක්‍රියාත්මක කිරීමේදී අපට මග හැරී ඇත:

  • JWT IAM ටෝකනය හරහා සත්‍යාපනය;
  • සේවා පාලක සහාය.

කතුවරයා සමඟ එකඟතාවයකින් (dlisin) ටෙලිග්‍රාම් හි, අපි yandex-Cloud-controller-manager forked සහ නැතිවූ කාර්යයන් එකතු කළෙමු.

ප්රධාන ලක්ෂණ

දැනට, CCM පහත අතුරුමුහුණත් සඳහා සහය දක්වයි:

  • උදාහරණ;
  • කලාප;
  • LoadBalancer.

අනාගතයේදී, Yandex.Cloud උසස් VPC හැකියාවන් සමඟ වැඩ කිරීමට පටන් ගන්නා විට, අපි අතුරු මුහුණතක් එක් කරන්නෙමු. මාර්ග.

ප්‍රධාන අභියෝගය ලෙස LoadBalanacer

මුලදී, අපි අනෙකුත් CCM ක්‍රියාත්මක කිරීම් මෙන්, යුගලයක් නිර්මාණය කිරීමට උත්සාහ කළෙමු LoadBalancer и TargetGroup එකිනෙකා සඳහා Service වර්ගය සමඟ LoadBalancer. කෙසේ වෙතත්, Yandex.Cloud එක් සිත්ගන්නා සීමාවක් සොයා ගත්තේය: ඔබට භාවිතා කළ නොහැක TargetGroups ඡේදනය වීමත් සමඟ Targets (යුගල SubnetID - IpAddress).

Yandex.Cloud සඳහා Kubernetes CCM (Cloud Controller Manager) හඳුන්වා දීම

එබැවින්, සාදන ලද CCM තුළ, පාලකයක් දියත් කරනු ලැබේ, එය වස්තූන් වෙනස් වන විට Node එක් එක් අතථ්‍ය යන්ත්‍රයක ඇති සියලුම අතුරුමුහුණත් පිළිබඳ තොරතුරු රැස් කරයි, ඒවා නිශ්චිත ඒවා අනුව කාණ්ඩ කරයි NetworkID, විසින් නිර්මාණය කරයි TargetGroup මත NetworkID, සහ අදාළත්වය ද නිරීක්ෂණය කරයි. පසුව, වස්තුවක් නිර්මාණය කිරීමේදී Service වර්ගය සමඟ LoadBalanacer අපි සරලව පෙර-සාදන ලද එකක් අමුණන්නෙමු TargetGroup නව වෙත NetworkLoadBalanacer'am.

භාවිතා කිරීම ආරම්භ කරන්නේ කෙසේද?

CCM Kubernetes අනුවාදය 1.15 සහ ඉහළ අනුවාද සඳහා සහය දක්වයි. පොකුරක් තුළ, එය වැඩ කිරීමට, එය ධජය අවශ්ය වේ --cloud-provider=external ලෙස සකස් කරන ලදී true kube-apiserver, kube-controller-manager, kube-scheduler සහ සියලුම kubelets සඳහා.

ස්ථාපනය සඳහා අවශ්ය සියලු පියවර විස්තර කර ඇත README. ප්‍රකාශන වලින් Kubernetes හි වස්තු නිර්මාණය කිරීම දක්වා ස්ථාපනය පහත වැටේ.

CCM භාවිතා කිරීමට ඔබට ද අවශ්‍ය වනු ඇත:

  • දක්වන්න මැනිෆෙස්ටයේ ඩිරෙක්ටරි හැඳුනුම්කාරකය (folder-id) Yandex.Cloud;
  • Yandex.Cloud API සමඟ අන්තර් ක්‍රියා කිරීම සඳහා සේවා ගිණුම. ප්‍රතිපත්ති ප්‍රකාශනයේ Secret අවශ්‍යයි බලයලත් යතුරු මාරු කරන්න සේවා ගිණුමෙන්. ලේඛනවල විස්තර කර ඇත, සේවා ගිණුමක් සාදා යතුරු ලබා ගන්නේ කෙසේද.

ඔබගේ ප්‍රතිපෝෂණ ලැබීමට අපි සතුටු වන්නෙමු නව ගැටළුඔබට කිසියම් ගැටළුවක් ඇත්නම්!

ප්රතිඵල

අපි ක්‍රියාත්මක කළ CCM පසුගිය සති දෙක තුළ Kubernetes පොකුරු පහක භාවිත කර ඇති අතර ඉදිරි මාසය තුළ ඔවුන්ගේ සංඛ්‍යාව 20 දක්වා පුළුල් කිරීමට සැලසුම් කරමු. අපි දැනට විශාල සහ තීරණාත්මක K8s ස්ථාපනයන් සඳහා CCM භාවිතා කිරීම නිර්දේශ නොකරමු.

CSI හි මෙන්ම, Yandex සංවර්ධකයින් මෙම ව්‍යාපෘතියේ සංවර්ධනය සහ සහාය ලබා ගන්නේ නම් අපි සතුටු වන්නෙමු - අපට වඩාත් අදාළ කාර්යයන් සමඟ කටයුතු කිරීම සඳහා ඔවුන්ගේ ඉල්ලීම පරිදි ගබඩාව මාරු කිරීමට අපි සූදානම්.

ප්රාදේශීය සභා

අපගේ බ්ලොග් අඩවියේ ද කියවන්න:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න