በኩበርኔትስ ውስጥ ያለ ፖድ እንዴት የአይፒ አድራሻ ያገኛል

ማስታወሻ. ትርጉምበLinkedIn በ SRE መሐንዲስ የተፃፈው ይህ ጽሑፍ በ Kubernetes ውስጥ ያለውን "ውስጣዊ አስማት" በዝርዝር ይዘረዝራል - በትክክል ፣ የ CRI ፣ CNI እና kube-apiserver መስተጋብር - ቀጣዩ ፖድ የአይፒ አድራሻ ሲሰጥ ምን ይከሰታል።

ከመሠረታዊ መስፈርቶች አንዱ Kubernetes አውታረ መረብ ሞዴል እያንዳንዱ ፖድ የራሱ አይፒ አድራሻ ሊኖረው ይገባል እና በክላስተር ውስጥ ያለ ማንኛውም ፖድ በዚያ አድራሻ ሊያገኘው መቻል አለበት። ይህንን የኔትወርክ ሞዴል ለመተግበር የሚያግዙ ብዙ የአውታረ መረብ "አቅራቢዎች" (Flannel, Calico, Canal, ወዘተ) አሉ.

ከኩበርኔትስ ጋር ለመጀመሪያ ጊዜ መሥራት ስጀምር ፖድፖች የአይ ፒ አድራሻቸውን እንዴት እንደሚያገኙ ሙሉ በሙሉ ግልጽ አልነበርኩም። የግለሰቦች አካላት እንዴት እንደሚሠሩ በመረዳት እንኳን አብረው እንደሚሠሩ መገመት ከባድ ነበር። ለምሳሌ, የ CNI ፕለጊኖች ምን እንደሆኑ አውቄ ነበር, ነገር ግን በትክክል እንዴት እንደሚጠሩ አላውቅም ነበር. ስለዚህ, እኔ ይህን ጽሑፍ ለመጻፍ ወሰንኩ የተለያዩ የአውታረ መረብ ክፍሎች እና እንዴት በ Kubernetes ክላስተር ውስጥ አብረው እንደሚሰሩ, ይህም እያንዳንዱ ፖድ የራሱ የሆነ ልዩ IP አድራሻ እንዲያገኝ ያስችለዋል.

በኩበርኔትስ ውስጥ ኔትወርክን ለማደራጀት የተለያዩ መንገዶች አሉ - ልክ እንደ የተለያዩ የእቃ መጫኛ አማራጮች። ይህ ልጥፍ ይጠቀማል Flannel በክላስተር ውስጥ ለማገናኘት እና እንደ ተፈፃሚ አካባቢ - መያዣ. እንዲሁም በመያዣዎች መካከል አውታረመረብ እንዴት እንደሚሰራ እርስዎ ያውቃሉ ብዬ እገምታለሁ፣ ስለዚህ እሱን ለአውድ ብቻ እነካዋለሁ።

አንዳንድ መሠረታዊ ጽንሰ-ሐሳቦች

ኮንቴይነሮች እና አውታረመረብ በጨረፍታ

ኮንቴይነሮች በአውታረ መረቡ ላይ እንዴት እርስበርስ እንደሚግባቡ የሚያብራሩ በጣም ጥቂት ጥሩ ልጥፎች በድር ላይ አሉ። ስለዚህ የመሠረታዊ ጽንሰ-ሀሳቦችን አጠቃላይ እይታ ብቻ እሰጣለሁ እና እራሴን በአንድ አቀራረብ ብቻ እገድባለሁ, ይህም የሊኑክስ ድልድይ መፍጠር እና ፓኬጆችን ማካተትን ያካትታል. የመያዣ አውታረመረብ ርዕስ ራሱ የተለየ መጣጥፍ ስለሚገባው ዝርዝሩ ተትቷል። በተለይ መረጃ ሰጭ እና መረጃ ሰጪ ህትመቶችን የሚወስዱ አገናኞች ከዚህ በታች ቀርበዋል።

በተመሳሳይ አስተናጋጅ ላይ ያሉ መያዣዎች

በተመሳሳዩ አስተናጋጅ ላይ በሚሰሩ ኮንቴይነሮች መካከል የአይፒ አድራሻ ግንኙነትን ለማደራጀት አንዱ መንገድ የሊኑክስ ድልድይ መፍጠርን ያካትታል። ይህንን ለማድረግ, Kubernetes (እና Docker) ምናባዊ መሳሪያዎችን ይፈጥራሉ ቬት (ምናባዊ ኢተርኔት). የቬት መሳሪያው አንድ ጫፍ ከመያዣው የአውታረ መረብ ስም ቦታ ጋር ይገናኛል, ሌላኛው ጫፍ ደግሞ ይገናኛል የሊኑክስ ድልድይ በአስተናጋጁ አውታር ላይ.

በአንድ አስተናጋጅ ላይ ያሉ ሁሉም ኮንቴይነሮች በአይፒ አድራሻዎች እርስ በርስ የሚግባቡበት ከድልድይ ጋር የተገናኘ አንድ የቬት ጫፍ አላቸው. የሊኑክስ ድልድይ እንዲሁ የአይ ፒ አድራሻ አለው እና ለሌሎች አንጓዎች ከተዘጋጁት ፖድዎች ለሚወጡ (የሚወጣ) ትራፊክ መግቢያ በር ሆኖ ያገለግላል።

በኩበርኔትስ ውስጥ ያለ ፖድ እንዴት የአይፒ አድራሻ ያገኛል

በተለያዩ አስተናጋጆች ላይ መያዣዎች

ፓኬት ማሸግ በተለያዩ አስተናጋጆች ላይ ያሉ ኮንቴይነሮች የአይፒ አድራሻዎችን በመጠቀም እርስ በርስ የሚግባቡበት አንዱ መንገድ ነው። በ Flannel, ቴክኖሎጂ ይህንን የሚቻል ያደርገዋል. ቪክስላንየምንጭ ፓኬጁን ወደ ዩዲፒ ፓኬት "ያሽጎ" ከዚያም ወደ መድረሻው ይልካል።

በ Kubernetes ክላስተር ውስጥ፣ ፍላኔል የvxlan መሣሪያን ይፈጥራል እና በዚህ መሠረት በእያንዳንዱ መስቀለኛ መንገድ ላይ ያለውን የመንገድ ጠረጴዛ ያዘምናል። በሌላ አስተናጋጅ ላይ ለመያዣ የተነደፈው እያንዳንዱ ፓኬት በvxlan መሳሪያው ውስጥ ያልፋል እና በ UDP ፓኬት ውስጥ ተሸፍኗል። በመድረሻው ላይ, የጎጆው ፓኬጅ ተሰርስሮ ወደ ትክክለኛው ፖድ ይመራዋል.

በኩበርኔትስ ውስጥ ያለ ፖድ እንዴት የአይፒ አድራሻ ያገኛል
ማሳሰቢያ፡ ይህ በመያዣዎች መካከል ኔትወርክን የማደራጀት አንዱ መንገድ ነው።

CRI ምንድን ነው?

CRI (የኮንቴይነር የስራ ጊዜ በይነገጽ) kubelet የተለያዩ የመያዣ ጊዜዎችን እንዲጠቀም የሚፈቅድ ፕለጊን ነው። CRI ኤፒአይ በተለያዩ የሩጫ ጊዜዎች ውስጥ ተገንብቷል ስለዚህ ተጠቃሚዎች የሚፈልጉትን የሩጫ ጊዜ መምረጥ ይችላሉ።

CNI ምንድን ነው?

CNI ፕሮጀክት ሀ ዝርዝር መግለጫ ለሊኑክስ ኮንቴይነሮች ሁለንተናዊ የአውታረ መረብ መፍትሄ ለማደራጀት. በተጨማሪም, ያካትታል ተሰኪዎች, የፖድ ኔትወርክን ሲያዘጋጁ ለተለያዩ ተግባራት ኃላፊነት ያላቸው. የCNI ፕለጊን ከመግለጫው ጋር የሚስማማ ተፈጻሚ ነው (ከዚህ በታች ያሉትን አንዳንድ ተሰኪዎች እንነጋገራለን)።

የአይፒ አድራሻዎችን ወደ ፖድ ለመመደብ ንኡስኔት አስተናጋጆች

በክላስተር ውስጥ ያለው እያንዳንዱ ፖድ የአይ ፒ አድራሻ ሊኖረው ስለሚገባ፣ ይህ አድራሻ ልዩ መሆኑን ማረጋገጥ አስፈላጊ ነው። ይህ የሚገኘው ለእያንዳንዱ መስቀለኛ መንገድ ልዩ ንዑስ መረብ በመመደብ ሲሆን ከዚያ በመስቀለኛ መንገድ ላይ ያሉት ፖዶች የአይፒ አድራሻዎች ይመደባሉ ።

መስቀለኛ IPAM መቆጣጠሪያ

መቼ nodeipam እንደ ባንዲራ መለኪያ አልፏል --controllers ኩቤ-ተቆጣጣሪ-አስተዳዳሪ, እያንዳንዱ መስቀለኛ መንገድ የተለየ ንዑስ መረብ (podCIDR) ከሲዲአር ክላስተር (ማለትም የክላስተር ኔትወርክ የአይፒ አድራሻዎች ክልል) ይመድባል። እነዚህ podCIDRs ስለማይደራረቡ ለእያንዳንዱ ፖድ ልዩ IP አድራሻ ሊመደብ ይችላል።

የኩበርኔትስ መስቀለኛ መንገድ በመጀመሪያ በክላስተር ሲመዘገብ ፖድሲዲአር ተመድቧል። የኖዶችን (podCIDR) ለመቀየር እነሱን መሰረዝ እና ከዚያ እንደገና መመዝገብ አለቦት፣ ይህም በመካከላቸው ባለው የኩበርኔትስ መቆጣጠሪያ ንብርብር ውቅር ላይ ተገቢውን ለውጥ ማድረግ። የመስቀለኛ መንገድን podCIDR በሚከተለው ትዕዛዝ ማሳየት ይችላሉ፡

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

ኩቤሌት፣ የመያዣ አሂድ ጊዜ እና የCNI ተሰኪዎች፡ ሁሉም እንዴት እንደሚሰራ

ፖድ ወደ መስቀለኛ መንገድ ማቀድ ብዙ የዝግጅት ስራዎችን ማከናወን ያካትታል. በዚህ ክፍል የፖድ ኔትወርክን ከማዘጋጀት ጋር ቀጥተኛ ግንኙነት ባላቸው ላይ ብቻ አተኩራለሁ።

ፖድ ወደ መስቀለኛ መንገድ ማቀድ የሚከተሉትን የክስተቶች ሰንሰለት ያስነሳል።

በኩበርኔትስ ውስጥ ያለ ፖድ እንዴት የአይፒ አድራሻ ያገኛል

እገዛ: የመያዣ CRI ፕለጊን አርክቴክቸር.

በመያዣ አሂድ ጊዜ እና በሲኤንአይ ተሰኪዎች መካከል ያለ መስተጋብር

እያንዳንዱ የአውታረ መረብ አቅራቢ የራሱ CNI ተሰኪ አለው። የመያዣው አሂድ ጊዜ ሲጀምር ለፖዱ ኔትወርክን ለማዋቀር ያንቀሳቅሰዋል። በመያዣው ውስጥ ፣ የ CNI ተሰኪው በተሰኪው ተጀምሯል። ኮንቴነር C.R.I..

ከዚህም በላይ እያንዳንዱ አቅራቢ የራሱ ወኪል አለው. በሁሉም የኩበርኔትስ ኖዶች ውስጥ ተጭኗል እና ለፖዳዎች አውታረመረብ ውቅር ተጠያቂ ነው። ይህ ወኪል ከ CNI ውቅር ጋር አብሮ ይመጣል ወይም በራሱ በመስቀለኛ መንገድ ላይ ይፈጥራል። አወቃቀሩ የ CRI ፕለጊን የትኛውን የCNI ፕለጊን መደወል እንዳለበት ለመወሰን ይረዳል።

የ CNI ውቅረት መገኛ ቦታ ሊበጅ ይችላል; በነባሪነት ውስጥ ነው /etc/cni/net.d/<config-file>. የክላስተር አስተዳዳሪዎች በእያንዳንዱ የክላስተር መስቀለኛ መንገድ ላይ የCNI ፕለጊኖችን የመጫን ሃላፊነት አለባቸው። ቦታቸውም ሊዋቀር የሚችል ነው; ነባሪ ማውጫ - /opt/cni/bin.

መያዣ (ኮንቴይነር) በሚጠቀሙበት ጊዜ የማዋቀሪያው እና የፕለጊን ሁለትዮሽ መንገዶች በክፍል ውስጥ ሊዘጋጁ ይችላሉ። [plugins.«io.containerd.grpc.v1.cri».cni] в በኮንቴይነር ውቅር ፋይል.

ፍላኔልን እንደ ኔትወርክ አቅራቢችን እየተጠቀምን ስለሆነ ስለማዋቀር ትንሽ እንነጋገር፡-

  • Flanneld (Flannel's daemon) ብዙውን ጊዜ እንደ DaemonSet በክላስተር ውስጥ ይጫናል ከ ጋር install-cni እንደ init መያዣ.
  • Install-cni ይፈጥራል የ CNI ውቅር ፋይል (/etc/cni/net.d/10-flannel.conflist) በእያንዳንዱ መስቀለኛ መንገድ.
  • ፍላኔልድ የvxlan መሣሪያን ይፈጥራል፣ ከኤፒአይ አገልጋይ የአውታረ መረብ ሜታዳታን ያወጣል እና የፖድ ዝመናዎችን ይቆጣጠራል። በሚፈጠሩበት ጊዜ, በጥቅሉ ውስጥ ወደ ሁሉም ፖድዎች መንገዶችን ያሰራጫል.
  • እነዚህ መስመሮች ፖዶች በአይፒ አድራሻዎች እርስ በርስ እንዲግባቡ ያስችላቸዋል.

ስለ Flannel ስራ የበለጠ መረጃ ለማግኘት በአንቀጹ መጨረሻ ላይ ያሉትን አገናኞች እንዲጠቀሙ እመክራለሁ.

በContainerd CRI ፕለጊን እና በCNI ተሰኪዎች መካከል ያለው መስተጋብር ዲያግራም ይኸውና፡

በኩበርኔትስ ውስጥ ያለ ፖድ እንዴት የአይፒ አድራሻ ያገኛል

ከላይ እንደሚታየው ኩቤሌቱ ፖድ ለመፍጠር ወደ ኮንቴይነር CRI ፕለጊን ይደውላል፣ ይህም አስቀድሞ የፖድ ኔትወርክን ለማዘጋጀት የ CNI ፕለጊን ይጠራል። በዚህ አጋጣሚ የአውታረ መረብ አቅራቢው CNI ፕለጊን የአውታረ መረብን የተለያዩ ገጽታዎች ለማዋቀር ሌሎች ዋና የ CNI ተሰኪዎችን ይጠራል።

በ CNI ተሰኪዎች መካከል መስተጋብር

የተለያዩ የ CNI ፕለጊኖች አሉ, ተግባራቸው በአስተናጋጁ ላይ በመያዣዎች መካከል የአውታረ መረብ ግንኙነትን ለማዘጋጀት መርዳት ነው. ይህ ርዕስ ስለ ሦስቱ ይብራራል።

Flannel CNI ተሰኪ

Flannelን እንደ አውታረ መረብ አቅራቢነት ሲጠቀሙ፣የContainerd CRI ክፍል ይደውላል Flannel 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
      }
    }
  ]
}

የ Flannel CNI ተሰኪ ከFlanneld ጋር አብሮ ይሰራል። በሚነሳበት ጊዜ ፍላነልድ ፖድሲዲአርን እና ሌሎች ከአውታረ መረብ ጋር የተያያዙ ዝርዝሮችን ከኤፒአይ አገልጋይ አውጥቶ ወደ ፋይል ያስቀምጣቸዋል። /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 ፕለጊን አይነት የCRI ፕለጊን የ Flannel CNI ተሰኪን ለመጥራት በሚጠቀምበት የ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 Address Mአስተዳደር - የአይፒ አድራሻ አስተዳደር) ለመያዣው የአይፒ አድራሻውን ከንኡስ ኔትዎርክ ይመልሳል እና የተመደበውን አይፒ በአስተናጋጁ ላይ በክፍሉ ውስጥ በተጠቀሰው ማውጫ ውስጥ ያከማቻል dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. ይህ ፋይል የተሰጠው አይፒ አድራሻ የተመደበበትን መያዣ መታወቂያ ይዟል።

የአስተናጋጅ-አካባቢያዊ IPAM ተሰኪን ሲደውሉ የሚከተለውን ውሂብ ይመልሳል፡-

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

ማጠቃለያ

ኩቤ-ተቆጣጣሪ-አስተዳዳሪ ለእያንዳንዱ መስቀለኛ መንገድ podCIDR ይመድባል። የእያንዲንደ መስቀለኛ መንገዴ ፖዴዎች በተመሇከተው የፖዲሲዲአር ክልል ውስጥ ከሚገኘው የአድራሻ ቦታ አይፒ አድራሻዎችን ያገኛሉ። የአንጓዎቹ podCIDRs ስለማይደራረቡ ሁሉም ፖዶች ልዩ የአይፒ አድራሻዎችን ያገኛሉ።

የኩበርኔትስ ክላስተር አስተዳዳሪ ኩቤሌትን፣ ኮንቴይነር አሂድ ጊዜን፣ የኔትወርክ አቅራቢ ወኪልን ያዋቅራል እና ይጭናል እና የCNI ፕለጊኖችን ወደ እያንዳንዱ መስቀለኛ መንገድ ይቀዳል። በሚነሳበት ጊዜ የአውታረ መረብ አቅራቢው ወኪል የ CNI ውቅር ይፈጥራል። ፖድ ወደ መስቀለኛ መንገድ ሲታቀድ ኩቤሌቱ ለመፍጠር CRI ፕለጊን ይደውላል። በመቀጠሌ ኮንቴይነር ጥቅም ላይ ከዋለ፣የኮንቴይነር CRI ፕለጊን የፖድ ኔትወርክን ለማዘጋጀት በCNI ውቅር የተገለጸውን የCNI ፕለጊን ይጠራል። በውጤቱም, ፖዱ የአይፒ አድራሻን ያገኛል.

የእነዚህን ሁሉ መስተጋብሮች ስውር እና ጥቃቅን ነገሮች ለመረዳት የተወሰነ ጊዜ ወስዶብኛል። ያገኘው ልምድ ኩበርኔትስ እንዴት እንደሚሰራ በተሻለ ለመረዳት ይረዳዎታል ብዬ ተስፋ አደርጋለሁ። ስለማንኛውም ነገር ከተሳሳትኩ እባክህ በ ላይ አግኘኝ። Twitter ወይም በአድራሻው [ኢሜል የተጠበቀ]. የዚህን ጽሑፍ ገጽታዎች ወይም ሌላ ማንኛውንም ነገር ለመወያየት ከፈለጉ ለመገናኘት ነፃነት ይሰማዎ። ከእርስዎ ጋር ለመወያየት ደስተኛ ነኝ!

ማጣቀሻዎች

ኮንቴይነሮች እና አውታረመረብ

Flannel እንዴት እንደሚሰራ

CRI እና CNI

PS ከተርጓሚ

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ