په دوام کې وروستي
پېژندنه
دا ولې؟
هغه انګیزې چې موږ یې د Yandex.Cloud لپاره CCM رامینځته کولو ته وهڅول په بشپړ ډول د هغه سره مطابقت لري چې دمخه یې تشریح شوي
په حقیقت کې CCM څه شی دی؟
عموما، موږ د کلستر لپاره زموږ شاوخوا چاپیریال چمتو کوو له بهر څخه - د مثال په توګه، د Terraform کارول. مګر ځینې وختونه زموږ په شاوخوا کې د بادل چاپیریال اداره کولو ته اړتیا وي له کلستر څخه. دا امکان برابر شوی، او دا هغه دی چې پلي کیږي
په ځانګړې توګه، د کلاوډ کنټرولر مدیر د تعامل پنځه اصلي ډولونه وړاندې کوي:
- مثالونه - په Kubernetes کې د نوډ اعتراض ترمنځ 1: 1 اړیکه پلي کوي (
Node
) او د بادل چمتو کونکي کې یو مجازی ماشین. د دې لپاره موږ:- ساحه ډکه کړئ
spec.providerID
په اعتراض کېNode
. د مثال په توګه، د OpenStack CCM لپاره دا ساحه لاندې بڼه لري:openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0
. تاسو کولی شئ د بادل چمتو کونکي نوم او د سرور ځانګړی UUID وګورئ (په OpenStack کې مجازی ماشین) د څیز؛ - بشپړول
nodeInfo
په اعتراض کېNode
د مجازی ماشین په اړه معلومات. د مثال په توګه، موږ په AWS کې د مثال ډول مشخص کوو؛ - موږ په بادل کې د مجازی ماشین شتون ګورو. د مثال په توګه، که یو اعتراض
Node
حالت ته لاړNotReady
، تاسو کولی شئ چیک کړئ چې ایا مجازی ماشین د بادل چمتو کونکي کې شتون لريproviderID
. که دا شتون نلري، اعتراض حذف کړئNode
, چې په بل ډول به د تل لپاره په کلستر کې پاتې شي؛
- ساحه ډکه کړئ
- زونونو - د اعتراض لپاره د ناکامۍ ډومین ټاکي
Node
، ترڅو مهالویش کونکی کولی شي د بادل چمتو کونکي کې د سیمو او زونونو مطابق د پوډ لپاره نوډ غوره کړي؛ - LoadBlancer - کله چې یو شی جوړ کړئ
Service
ډول سرهLoadBalancer
یو ډول توازن رامینځته کوي چې له بهر څخه د کلستر نوډونو ته ترافیک مستقیم کوي. د مثال په توګه، په Yandex.Cloud کې تاسو کارولی شئNetworkLoadBalancer
иTargetGroup
د دې موخو لپاره؛ - لاره - د نوډونو ترمنځ شبکه جوړوي، ځکه د Kubernetes اړتیاو سره سم، هر پوډ باید خپل IP پته ولري او د دې وړتیا ولري چې کوم بل پوډ ته ورسیږي. د دې موخو لپاره، تاسو کولی شئ د پوښښ شبکه وکاروئ (VXLAN، GENEVE) یا د بادل چمتو کونکي په مجازی شبکه کې مستقیم د روټینګ میز تنظیم کړئ:
- حجم - د PVC او SC په کارولو سره د PV متحرک ترتیب ته اجازه ورکوي. په پیل کې، دا فعالیت د CCM برخه وه، مګر د دې لوی پیچلتیا له امله دا جلا پروژې ته لیږدول شوی، د کانټینر ذخیره کولو انٹرفیس (CSI). موږ یو ځل د CSI په اړه خبرې کړې دي
لیکلی او، لکه څنګه چې مخکې یادونه وشوه، حتیخپور شوی د CSI چلوونکی.
پخوا، ټول کوډ چې د بادل سره متقابل عمل کوي د کوبرنیټس پروژې اصلي Git ذخیره کې موقعیت درلود k8s.io/kubernetes/pkg/cloudprovider/providers
، مګر دوی پریکړه وکړه چې دا د لوی کوډ بیس سره د کار کولو تکلیف له امله پریږدي. ټول زاړه تطبیق ته لیږدول شوي
لکه څنګه چې د CSI سره، ډیری لوی کلاوډ چمتو کونکو لا دمخه خپل CCMs ډیزاین کړي ترڅو په کبرنیټس کې د بادونو ګټه پورته کړي. که عرضه کونکی CCM نلري، مګر ټول اړین فعالیتونه د API له لارې شتون لري، نو تاسو کولی شئ پخپله CCM پلي کړئ.
د خپل ځان د CCM پلي کولو لیکلو لپاره، دا د پلي کولو لپاره کافی دی
И
پلي کول
تاسو دې ته څنګه راغلي یاست
موږ پراختیا پیل کړه (یا بلکه، حتی کارول).
په هرصورت، پدې تطبیق کې موږ ورک وو:
- د JWT IAM نښه له لارې تصدیق؛
- د خدماتو کنټرولر ملاتړ.
د لیکوال سره موافق (ډلیسین) په ټیلیګرام کې، موږ د yandex-Cloud-controller-manager فورک کړی او ورک شوي دندې مو اضافه کړې.
کلیدي ب .ې
اوس مهال، CCM د لاندې انٹرفیسونو ملاتړ کوي:
- مثالونه;
- زونونو;
- LoadBlancer.
په راتلونکي کې، کله چې Yandex.Cloud د پرمختللي VPC وړتیاوو سره کار پیل کوي، موږ به یو انٹرفیس اضافه کړو لارې.
LoadBalanacer د اصلي ننګونې په توګه
په پیل کې، موږ هڅه وکړه، د نورو CCM پلي کولو په څیر، جوړه جوړه کړو LoadBalancer
и TargetGroup
د هر یو لپاره Service
ډول سره LoadBalancer
. په هرصورت، Yandex.Cloud یو په زړه پورې محدودیت کشف کړ: تاسو نشئ کارولی TargetGroups
د تقاطع سره Targets
( جوړه SubnetID
- IpAddress
).
له همدې امله ، د رامینځته شوي CCM دننه ، یو کنټرولر په لاره اچول شوی ، کوم چې کله شیان بدلیږي Node
په هر مجازی ماشین کې د ټولو انٹرفیسونو په اړه معلومات راټولوي، دوی د دوی د ټاکلو سره سم ګروپ کوي NetworkID
، له خوا جوړوي TargetGroup
په NetworkID
، او هم د مطابقت څارنه کوي. وروسته، کله چې یو شی جوړ کړئ Service
ډول سره LoadBalanacer
موږ په ساده ډول یو مخکې جوړ شوی ضمیمه کوو TargetGroup
نوي ته NetworkLoadBalanacer
زه
څنګه کارول پیل کړئ؟
CCM د Kubernetes نسخه 1.15 او لوړ ملاتړ کوي. په یوه کلستر کې، د دې کار کولو لپاره، دا بیرغ ته اړتیا لري --cloud-provider=external
ټاکل شوې وه true
د کیوب-اپیسرور، کیوب کنټرولر-منیجر، کیوب-شیډولر او ټولو کیوبیلټونو لپاره.
د نصبولو لپاره ټول اړین ګامونه پخپله بیان شوي
د CCM کارولو لپاره تاسو به هم اړتیا ولرئ:
-
په نښه کول په منشور کې د لارښود پیژندونکی (folder-id
) Yandex.Cloud; - د Yandex.Cloud API سره د متقابل عمل لپاره د خدماتو حساب. په منشور کې
Secret
لازمه دهمجاز کیلي لیږدوي د خدمت حساب څخه. په اسنادو کېبیان شوی د خدماتو حساب څنګه جوړ کړئ او کیلي ترلاسه کړئ.
موږ به خوښ یو چې ستاسو نظرونه ترلاسه کړو او
پایلې
موږ په تیرو دوه اونیو کې په پنځو کبرنیټ کلسترونو کې پلي شوي CCM کاروو او پلان لرو چې په راتلونکې میاشت کې د دوی شمیر 20 ته وغځوو. موږ اوس مهال د لوی او مهم K8s تاسیساتو لپاره د CCM کارولو وړاندیز نه کوو.
لکه څنګه چې د CSI په قضیه کې ، موږ به خوښ یو که د Yandex پراختیا کونکي د دې پروژې پراختیا او ملاتړ په غاړه واخلي - موږ چمتو یو چې د دوی په غوښتنه ذخیره انتقال کړو ترڅو د هغه دندو سره معامله وکړو چې زموږ لپاره خورا اړونده دي.
PS
زموږ په بلاګ کې هم ولولئ:
- «
د Yandex.Cloud لپاره په Kubernetes کې د CSI ډرایور رامینځته کولو کې زموږ تجربه » - «
ایا د Kubernetes کلستر چمتو کول اسانه او اسانه دي؟ د اډون آپریټر اعلان کول » - «
د Kubernetes پراخول او بشپړول (بیاکتنه او ویډیو راپور) ".
سرچینه: www.habr.com