د Kubernetes پوډ څنګه IP پته ترلاسه کوي؟

نوټ. ژباړه: دا مقاله چې د LinkedIn څخه د SRE انجنیر لخوا لیکل شوې، په Kubernetes کې د داخلي جادو په اړه توضیحاتو ته ځي - په دقیق ډول، د CRI، CNI او kube-apiserver متقابل عمل - دا هغه وخت پیښیږي کله چې راتلونکی پوډ د IP پتې ته اړتیا ولري.

یو له بنسټیزو اړتیاو څخه د Kubernetes شبکې ماډل دا چې هر پوډ باید خپل IP پته ولري او په کلستر کې کوم بل پوډ باید وکوالی شي په دې پته کې ورسره اړیکه ونیسي. ډیری شبکې "وړاندیدونکي" (فلانیل، کالیکو، کانال، او نور) شتون لري چې د دې شبکې ماډل پلي کولو کې مرسته کوي.

کله چې ما د لومړي ځل لپاره د Kubernetes سره کار پیل کړ، دا زما لپاره په بشپړه توګه روښانه نه وه چې څنګه پوډونه خپل IP پتې ترلاسه کوي. حتی د دې پوهیدلو سره چې انفرادي اجزا څنګه کار کوي، دا ستونزمنه وه چې تصور وکړئ چې دوی یوځای کار کوي. د مثال په توګه، زه پوهیدم چې د CNI پلگ ان د څه لپاره دي، مګر زه نه پوهیږم چې دوی څنګه ویل کیږي. له همدې امله ، ما پریکړه وکړه چې دا مقاله ولیکئ ترڅو د مختلف شبکې اجزاو په اړه پوهه شریک کړئ او دا چې څنګه دوی د کوبرنیټس کلستر کې یوځای کار کوي ، کوم چې هر پوډ ته اجازه ورکوي خپل ځانګړي IP پته ترلاسه کړي.

په Kubernetes کې د شبکې تنظیم کولو مختلفې لارې شتون لري، لکه څنګه چې د کانټینرونو لپاره د چلولو مختلف انتخابونه شتون لري. دا خپرونه به کاروي فلالین په کلستر کې د شبکې تنظیم کول، او د اجرا وړ چاپیریال په توګه - کانټینرډ. زه دا انګیرنه هم کوم چې تاسو پوهیږئ چې د کانټینرونو تر مینځ شبکه څنګه کار کوي، نو زه به یوازې په لنډه توګه په دې اړه اړیکه ونیسم، یوازې د شرایطو لپاره.

ځینې ​​بنسټیز مفهومونه

کانټینرونه او شبکه: یوه لنډه کتنه

په انټرنیټ کې ډیری غوره خپرونې شتون لري چې تشریح کوي چې څنګه کانټینرونه په شبکه کې یو بل سره اړیکه نیسي. له همدې امله، زه به یوازې د بنسټیزو مفاهیمو عمومي کتنه وړاندې کړم او ځان به یوې تګلارې ته محدود کړم، کوم چې د لینکس پل جوړول او د کڅوړو سمبالول شامل دي. توضیحات پریښودل شوي ، ځکه چې د کانټینر شبکې موضوع پخپله د جلا مقالې مستحق ده. د ځینو په ځانګړي ډول بصیرت لرونکي او تعلیمي خپرونو لینکونه به لاندې چمتو شي.

کانټینرونه په یوه کوربه کې

په ورته کوربه کې د کانټینرونو ترمینځ د IP پتې له لارې د اړیکو تنظیم کولو یوه لاره د لینکس پل رامینځته کول شامل دي. د دې هدف لپاره ، مجازی وسیلې په کبرنیټس (او ډاکر) کې رامینځته شوي ویت (مجازی ایترنیټ). د ویت وسیلې یوه پای د کانټینر د شبکې نوم ځای سره وصل کیږي ، بل یې د لینکس پل په کوربه شبکه کې.

په ورته کوربه کې ټول کانټینرونه د ویت یوه پایه لري چې د پل سره وصل وي چې له لارې دوی کولی شي د IP پتې له لارې یو بل سره اړیکه ونیسي. د لینکس پل هم یو IP پته لري او د نورو نوډونو لپاره ټاکل شوي پوډونو څخه د وتلو ترافیک لپاره د دروازې په توګه کار کوي.

د Kubernetes پوډ څنګه IP پته ترلاسه کوي؟

کانټینرونه په مختلف کوربه کې

د بسته بندۍ یوه طریقه ده چې په مختلفو نوډونو کې کانټینرونو ته اجازه ورکوي چې د IP پتې په کارولو سره یو بل سره اړیکه ونیسي. په فلانیل کې، ټیکنالوژي د دې فرصت مسولیت لري. vxlan، کوم چې اصلي پاکټ په UDP کڅوړه کې "بکیج" کوي او بیا یې خپل منزل ته لیږي.

د کبرنیټس کلستر کې، فلانیل د vxlan وسیله رامینځته کوي او په هر نوډ کې د روټ جدول د مطابق مطابق تازه کوي. هر پاکټ چې په مختلف کوربه کې د کانټینر لپاره ټاکل شوی د vxlan وسیلې څخه تیریږي او په UDP کڅوړه کې پوښل کیږي. په منزل کې، ځړول شوی کڅوړه ایستل کیږي او مطلوب پوډ ته لیږل کیږي.

د Kubernetes پوډ څنګه IP پته ترلاسه کوي؟
یادونه: دا د کانټینرونو ترمنځ د شبکې اړیکو تنظیم کولو لپاره یوازې یوه لاره ده.

CRI څه شی دی؟

CRI (د کانټینر د چلولو وخت انٹرفیس) یو پلگ ان دی چې کوبیلټ ته اجازه ورکوي چې مختلف کانټینر چلولو چاپیریال وکاروي. د CRI API په مختلفو وختونو کې جوړ شوی، نو کاروونکي کولی شي د خپلې خوښې وخت وټاکي.

CNI څه شی دی؟

د CNI پروژه دی مشخصات د لینکس کانټینرونو لپاره د نړیوال شبکې حل تنظیم کول. سربیره پردې، دا شامل دي پلگ ان، کله چې د پوډ شبکې تنظیم کول د مختلف دندو مسؤلیت لري. د CNI پلگ ان د اجرا وړ فایل دی چې د توضیحاتو سره مطابقت لري (موږ به لاندې ځینې پلگ ان په اړه بحث وکړو).

پوډونو ته د IP پتې ټاکلو لپاره نوډونو ته د فرعي نیټونو تخصیص

څرنګه چې په کلستر کې هر پوډ باید د IP پته ولري، نو دا مهمه ده چې ډاډ ترلاسه کړئ چې دا پته ځانګړې ده. دا هر نوډ ته د یو ځانګړي فرعي نیټ په ورکولو سره ترلاسه کیږي ، له کوم څخه چې پدې نوډ کې پوډونه بیا IP پتې ټاکل کیږي.

نوډ IPAM کنټرولر

کله چې nodeipam د بیرغ پیرامیټر په توګه تیر شوی --controllers kube-controller-manager، دا د کلستر CIDR څخه هر نوډ ته جلا فرعي نیټ (podCIDR) تخصیص کوي (د بیلګې په توګه د کلستر شبکې لپاره د IP پتې لړۍ). څرنګه چې دا پوډ CIDRs نه تیریږي، نو دا ممکنه ده چې د هر پوډ لپاره یو ځانګړی IP پته تخصیص شي.

د Kubernetes نوډ د پوډ CIDR ټاکل کیږي کله چې دا په پیل کې د کلستر سره راجستر شوی وي. د نوډونو پوډ CIDR بدلولو لپاره، تاسو اړتیا لرئ چې دوی راجستر کړئ او بیا یې راجستر کړئ، په منځ کې د Kubernetes کنټرول پرت ترتیب کې مناسب بدلونونه رامینځته کړئ. تاسو کولی شئ د لاندې کمانډ په کارولو سره د نوډ پوډ CIDR ښکاره کړئ:

$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24

کوبیلیټ، د کانټینر چلولو وخت او د CNI پلگ ان: دا ټول څنګه کار کوي

په هر نوډ کې د پوډ مهالویش کول ډیری چمتوالي ګامونه لري. پدې برخه کې، زه به یوازې په هغو کسانو تمرکز وکړم چې په مستقیم ډول د پوډ شبکې ترتیب کولو پورې تړاو لري.

یو ځانګړي نوډ ته د پوډ مهالویش کول د پیښو لاندې سلسله رامینځته کوي:

د Kubernetes پوډ څنګه IP پته ترلاسه کوي؟

مرسته: د کانټینرډ CRI پلگ انونو جوړښت.

د کانټینر چلولو وخت او CNI پلگ انونو ترمینځ تعامل

د شبکې هر چمتو کونکی خپل CNI پلگ ان لري. د کانټینر چلولو وخت دا چلوي ترڅو د پوډ لپاره شبکه تنظیم کړي لکه څنګه چې دا پیل کیږي. د کانټینرډ په حالت کې، د CNI پلگ ان د پلگ ان لخوا پیل شوی کانټینرډ CRI.

سربیره پردې، هر وړاندیز کوونکی خپل استازی لري. دا په ټولو Kubernetes نوډونو کې نصب شوی او د پوډونو د شبکې ترتیب لپاره مسؤل دی. دا اجنټ یا د CNI ترتیب سره شامل دی یا په خپلواک ډول په نوډ کې رامینځته کوي. ترتیب د CRI پلگ ان سره مرسته کوي چې کوم CNI پلگ ان ته زنګ ووهي.

د CNI ترتیب موقعیت دودیز کیدی شي؛ په ډیفالټ کې دی /etc/cni/net.d/<config-file>. د کلستر مدیران په هر کلستر نوډ کې د CNI پلگ ان نصبولو مسولیت هم لري. د دوی موقعیت هم د تنظیم وړ دی؛ اصلي لارښود - /opt/cni/bin.

کله چې کانټینرډ وکاروئ ، د پلگ ان ترتیب او بائنری لپاره لارې په برخه کې تنظیم کیدی شي [plugins.«io.containerd.grpc.v1.cri».cni] в د کانټینرډ ترتیب کولو فایل.

له هغه ځایه چې موږ فلانیل زموږ د شبکې چمتو کونکي په توګه کاروو ، راځئ چې د دې تنظیم کولو په اړه لږ څه وغږیږو:

  • فلانیلډ (فلانیل ډیمون) معمولا په کلستر کې د ډیمون سیټ په توګه نصب کیږي install-cni په توګه init کانتینر.
  • Install-cni جوړوي د CNI تشکیلاتو فایل (/etc/cni/net.d/10-flannel.conflist) په هر نوډ کې.
  • فلانیلډ د vxlan وسیله رامینځته کوي، د API سرور څخه د شبکې میټاډاټا ترلاسه کوي، او د پوډ تازه معلومات څاري. لکه څنګه چې دوی رامینځته شوي ، دا په ټول کلستر کې ټولو پوډونو ته لارې توزیع کوي.
  • دا لارې پوډونو ته اجازه ورکوي چې د IP پتې له لارې یو بل سره اړیکه ونیسي.

د فلانیل کار په اړه د لا زیاتو معلوماتو لپاره، زه د مقالې په پای کې د لینکونو کارولو وړاندیز کوم.

دلته د کانټینرډ CRI پلگ ان او CNI پلگ انونو ترمینځ د متقابل عمل ډیاګرام دی:

د Kubernetes پوډ څنګه IP پته ترلاسه کوي؟

لکه څنګه چې تاسو پورته لیدلی شئ، کوبیلټ د پوډ جوړولو لپاره د کانټینرډ CRI پلگ ان ته زنګ وهي، کوم چې بیا د CNI پلگ ان ته زنګ وهي ترڅو د پوډ شبکه تنظیم کړي. په دې کولو کې، د شبکې چمتو کونکي CNI پلگ ان د شبکې مختلف اړخونه تنظیم کولو لپاره نور اصلي CNI پلگ انونه غږوي.

د CNI پلگ انونو ترمنځ تعامل

د CNI مختلف پلگ انونه شتون لري چې دنده یې په کوربه کې د کانټینرونو ترمینځ د شبکې ارتباط تنظیم کولو کې مرسته کول دي. دا مقاله به د دوی درې په اړه بحث وکړي.

د CNI پلگ ان فلانیل

کله چې د شبکې چمتو کونکي په توګه فلانیل وکاروئ ، د کانټینرډ CRI برخې زنګ وهي د CNI پلگ ان فلانیلد CNI تشکیلاتو فایل کارول /etc/cni/net.d/10-flannel.conflist.

$ cat /etc/cni/net.d/10-flannel.conflist
{
  "name": "cni0",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
         "ipMasq": false,
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    }
  ]
}

د فلانیل CNI پلگ ان د فلانیلډ سره په ګډه کار کوي. د پیل په جریان کې، فلانیلډ د API سرور څخه پوډ سی آی آر او نور د شبکې پورې اړوند توضیحات ترلاسه کوي او فایل ته یې خوندي کوي /run/flannel/subnet.env.

FLANNEL_NETWORK=10.244.0.0/16 
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450 
FLANNEL_IPMASQ=false

د Flannel CNI پلگ ان د ډاټا څخه کار اخلي /run/flannel/subnet.env د CNI برج پلگ ان تنظیمولو او زنګ وهلو لپاره.

د CNI پلگ ان پل

دا پلگ ان د لاندې ترتیب سره ویل کیږي:

{
  "name": "cni0",
  "type": "bridge",
  "mtu": 1450,
  "ipMasq": false,
  "isGateway": true,
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24"
  }
}

کله چې د لومړي ځل لپاره ویل کیږي، دا د لینکس پل سره جوړوي «name»: «cni0»، کوم چې په ترتیب کې ښودل شوی. بیا د هر پوډ لپاره د ویت جوړه جوړه شوې. د دې یوه پای د کانټینر شبکې نوم ځای سره وصل دی ، بل یې د کوربه شبکې لینکس پل کې شامل دی. د CNI پلگ ان پل ټول کوربه کانټینرونه په کوربه شبکه کې د لینکس پل سره نښلوي.

د ویت جوړه تنظیم کولو پای ته رسیدو سره ، د برج پلگ ان کوربه - ځایی IPAM CNI پلگ ان ته زنګ ووهي. د IPAM پلگ ان ډول په CNI ترتیب کې تنظیم کیدی شي چې د CRI پلگ ان د فلانیل CNI پلگ ان ته زنګ وهلو لپاره کاروي.

کوربه - محلي IPAM CNI پلگ ان

پل CNI زنګ وهي کوربه - محلي IPAM پلگ ان CNI د لاندې ترتیب سره:

{
  "name": "cni0",
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24",
    "dataDir": "/var/lib/cni/networks"
  }
}

کوربه - محلي IPAM پلگ ان (IP Aپوښاک Management - د IP پته مدیریت) د فرعي نیټ څخه د کانټینر لپاره IP پته بیرته راګرځوي او په کوربه کې تخصیص شوي IP په برخه کې مشخص شوي لارښود کې ذخیره کوي dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. دا فایل د کانټینر ID لري چې دا IP پته ورته ټاکل شوې.

کله چې کوربه - محلي IPAM پلگ ان ته زنګ ووهئ، دا لاندې معلومات بیرته راګرځوي:

{
  "ip4": {
    "ip": "10.244.4.2",
    "gateway": "10.244.4.3"
  },
  "dns": {}
}

لنډیز

کیوب - کنټرولر - مدیر هر نوډ ته پوډ سی آی آر ګماري. د هر نوډ پوډونه د مختص شوي پوډ سی آی آر رینج کې د پتې ځای څخه IP پتې ترلاسه کوي. څرنګه چې د نوډونو پوډ CIDRs نه تیریږي، ټول پوډونه ځانګړي IP پتې ترلاسه کوي.

د Kubernetes کلستر مدیر کوبیلیټ، کانټینر چلولو وخت، د شبکې چمتو کونکي اجنټ ترتیب او نصبوي، او هر نوډ ته د CNI پلگ ان کاپي کوي. د پیل په جریان کې، د شبکې چمتو کونکي اجنټ د CNI تشکیل تولیدوي. کله چې یو پوډ یو نوډ ته ټاکل شوی وي، کوبیلټ د CRI پلگ ان ته زنګ ووهي ترڅو دا رامینځته کړي. بیا، که کانټینرډ کارول کیږي، د کانټینرډ CRI پلگ ان د CNI په ترتیب کې مشخص شوي CNI پلگ ان ته زنګ وهي ترڅو د پوډ شبکه تنظیم کړي. د پایلې په توګه، پوډ یو IP پته ترلاسه کوي.

ما یو څه وخت واخیست چې د دې ټولو تعاملاتو په ټولو فرعياتو او باریکیو پوه شو. زه امید لرم چې دا تجربه به تاسو سره په ښه پوهیدو کې مرسته وکړي چې کوبرنیټس څنګه کار کوي. که زه د هر څه په اړه غلط یم، مهرباني وکړئ ما سره اړیکه ونیسئ ټویټر یا په پته [ایمیل خوندي شوی]. د لاسرسي لپاره وړیا احساس وکړئ که تاسو غواړئ د دې مقالې یا بل کوم اړخ په اړه بحث وکړئ. زه غواړم له تاسو سره خبرې وکړم!

مرجع

کانټینرونه او شبکه

فلالین څنګه کار کوي؟

CRI او CNI

PS د ژباړونکي څخه

زموږ په بلاګ کې هم ولولئ:

سرچینه: www.habr.com

Add a comment