/etc/resolv.conf ለ Kubernetes pods፣ አማራጭ ነጥቦች፡5፣ ይህ እንዴት የመተግበሪያውን አፈጻጸም ላይ አሉታዊ ተጽዕኖ እንደሚያሳድር።

/etc/resolv.conf ለ Kubernetes pods፣ አማራጭ ነጥቦች፡5፣ ይህ እንዴት የመተግበሪያውን አፈጻጸም ላይ አሉታዊ ተጽዕኖ እንደሚያሳድር።

በቅርቡ Kubernetes 1.9 በ AWS ላይ በኮፕስ እገዛ ጀመርን። ትላንት፣ ወደ ትልቁ የኩበርኔትስ ክላስተር አዲስ ትራፊክ በተቀላጠፈ ሁኔታ እየዘረጋሁ ሳለ፣ በእኛ መተግበሪያ የተመዘገቡ ያልተለመዱ የዲ ኤን ኤስ ስም መፍታት ስህተቶችን ማየት ጀመርኩ።

GitHub ስለ እሱ ትንሽ አለው። ተናግሯል, ስለዚህ እኔም እሱን ለማየት ወሰንኩ. በውጤቱም, በእኛ ሁኔታ ይህ የተከሰተው በተጫነ ጭነት ምክንያት እንደሆነ ተገነዘብኩ kube-dns и dnsmasq. ለእኔ በጣም አስደሳች እና አዲስ የሆነው ለዲ ኤን ኤስ መጠይቅ ትራፊክ ጉልህ ጭማሪ ምክንያት ነው። ስለዚህ እና ምን ማድረግ እንዳለብኝ, የእኔ ልጥፍ.

በመያዣው ውስጥ የዲ ኤን ኤስ ጥራት - እንደ ማንኛውም የሊኑክስ ስርዓት - በማዋቀሪያው ፋይል ይወሰናል /etc/resolv.conf. ነባሪ Kubernetes dnsPolicy ይህም ClusterFirst, ይህም ማለት ማንኛውም የዲ ኤን ኤስ ጥያቄ ወደ እሱ ይመለሳል ማለት ነው dnsmasqበፖዳ ውስጥ መሮጥ kube-dns በክላስተር ውስጥ, ይህም በተራው ጥያቄውን ወደ ማመልከቻው ያስተላልፋል kube-dns, ስሙ በክላስተር ቅጥያ ወይም በሌላ መልኩ ካለቀ ወደ ከፍተኛ ደረጃ ዲ ኤን ኤስ አገልጋይ።

ፋይል /etc/resolv.conf በእያንዳንዱ መያዣ ውስጥ በነባሪነት ይህንን ይመስላል

nameserver 100.64.0.10
search namespace.svc.cluster.local svc.cluster.local cluster.local 
eu-west-1.compute.internal
options ndots:5

እንደምታየው፣ ሶስት መመሪያዎች አሉ፡-

  1. አገልጋዩ የአገልግሎቱ አይፒ ነው። kube-dns
  2. 4 የአካባቢ ፍለጋ ጎራዎች ተገልጸዋል። search
  3. አንድ አማራጭ አለ ndots:5

የዚህ ውቅረት አስደሳች ክፍል የአካባቢያዊ የፍለጋ ጎራዎች እና ቅንብሮች እንዴት ነው ndots:5 አብሮ መኖር። ይህንን ለመረዳት የዲ ኤን ኤስ ጥራት ላልሆኑ ስሞች እንዴት እንደሚሰራ መረዳት ያስፈልግዎታል።

ሙሉ ስም ማነው?

ሙሉ ብቃት ያለው ስም በአገር ውስጥ የማይፈለግ እና በስም መፍታት ጊዜ እንደ ፍጹም ስም የሚቆጠር ስም ነው። በስምምነት፣ የዲ ኤን ኤስ ሶፍትዌር ስምን በነጥብ (.) የሚያልቅ ከሆነ ሙሉ በሙሉ ብቁ እንደሆነ ይቆጥረዋል፣ እና በሌላ መልኩ ሙሉ በሙሉ ብቁ ካልሆነ። ያውና google.com. ሙሉ በሙሉ የተገለጸ እና google.com - አይ.

ብቁ ያልሆነ ስም እንዴት ይያዛል?

አንድ መተግበሪያ በስሙ ውስጥ ከተጠቀሰው የርቀት አስተናጋጅ ጋር ሲገናኝ የዲ ኤን ኤስ ስም መፍታት ብዙውን ጊዜ የስርዓት ጥሪን በመጠቀም ይከናወናል ፣ ለምሳሌ ፣ getaddrinfo(). ነገር ግን ስሙ ያልተሟላ ከሆነ (በ. የማያልቅ) ከሆነ፣ የስርዓት ጥሪው መጀመሪያ ስሙን እንደ ፍፁም ለመፍታት ይሞክር ይሆን ወይስ መጀመሪያ በአካባቢው የፍለጋ ጎራዎች ውስጥ ያልፋል? እንደ ምርጫው ይወሰናል ndots.

ከመመሪያው ለ resolv.conf:

ndots:n

устанавливает порог для количества точек, которые должны появиться в имени, прежде чем будет сделан начальный абсолютный запрос. Значение по умолчанию для n равно 1, что означает, что если в имени есть какие-либо точки, имя будет сначала опробовано как абсолютное имя, прежде чем к нему будут добавлены какие-либо элементы списка поиска.

ይህ ማለት ለ ከሆነ ndots ወደ 5 ተቀናብሯል እና ስሙ ከ 5 ያነሱ ነጥቦችን ይዟል፣ የስርዓት ጥሪው በቅደም ተከተል ለመፍታት ይሞክራል፣ በመጀመሪያ በሁሉም የአካባቢ ፍለጋ ጎራዎች ውስጥ ያልፋል እና አልተሳካም ፣ በመጨረሻም እንደ ፍጹም ስም ይፈታዋል።

ለምን ታዲያ ndots:5 የመተግበሪያውን አፈፃፀም ላይ አሉታዊ ተጽዕኖ ሊያሳድር ይችላል?

እርስዎ ሊገምቱት እንደሚችሉት፣ ማመልከቻዎ ብዙ የውጭ ትራፊክን የሚጠቀም ከሆነ፣ ለእያንዳንዱ የተቋቋመ የTCP ግንኙነት (ወይም በትክክል፣ ለእያንዳንዱ የተፈታ ስም)፣ ስሙ በትክክል ከመፈታቱ በፊት 5 የዲ ኤን ኤስ ጥያቄዎችን ያወጣል፣ ምክንያቱም መጀመሪያ ያልፋል። 4 የአካባቢ ፍለጋ ጎራ፣ እና መጨረሻ ላይ ፍፁም የስም መፍቻ ጥያቄ ያቀርባል።

የሚከተለው ገበታ በእኛ መተግበሪያ ውስጥ የተዋቀሩ በርካታ የአስተናጋጅ ስሞችን ወደ ሙሉ ብቃት ወደ ሚያሟሉ በ 3 kube-dns ፖድፖች ላይ ያለውን አጠቃላይ ትራፊክ ያሳያል።

/etc/resolv.conf ለ Kubernetes pods፣ አማራጭ ነጥቦች፡5፣ ይህ እንዴት የመተግበሪያውን አፈጻጸም ላይ አሉታዊ ተጽዕኖ እንደሚያሳድር።

በመተግበሪያችን ውስጥ የተዋቀሩ በርካታ የአስተናጋጅ ስሞችን ወደ ሙሉ ስሞች ከመቀየር በፊት እና በኋላ የመተግበሪያውን መዘግየት ያሳያል (ቀጥ ያለ ሰማያዊ መስመር ተዘርግቷል)።

/etc/resolv.conf ለ Kubernetes pods፣ አማራጭ ነጥቦች፡5፣ ይህ እንዴት የመተግበሪያውን አፈጻጸም ላይ አሉታዊ ተጽዕኖ እንደሚያሳድር።

መፍትሄ ቁጥር 1 - ሙሉ ብቃት ያላቸውን ስሞች ተጠቀም

ብዙ ቁጥር ያላቸው ግንኙነቶችን የሚፈጥሩባቸው ጥቂት የማይንቀሳቀሱ ውጫዊ ስሞች ካሉዎት (ማለትም በመተግበሪያው ውቅረት ውስጥ የተገለጹ)፣ ምናልባት ቀላሉ መፍትሄ በቀላሉ በመጨመር ወደ ሙሉ ብቃት ወደሆኑ መቀየር ነው። መጨረሻ ላይ.

ይህ የመጨረሻው መፍትሄ አይደለም, ነገር ግን በፍጥነት, በንጽህና ካልሆነ, ሁኔታውን ለማሻሻል ይረዳል. ችግራችንን ለመፍታት ይህንን ፕላስተር ተተግብረናል፣ ውጤታቸውም ከላይ ባሉት የቅጽበታዊ ገጽ እይታዎች ላይ ታይቷል።

ውሳኔ ቁጥር 2 - ማበጀት ndots в dnsConfig

Kubernetes 1.9 በአልፋ ሁነታ (የቅድመ-ይሁንታ ስሪት v1.10) በፖድ ንብረቱ በኩል የዲ ኤን ኤስ ቅንብሮችን በተሻለ ሁኔታ ለመቆጣጠር የሚያስችል ባህሪ አስተዋውቋል dnsConfig. ከሌሎች ነገሮች በተጨማሪ እሴቱን ለማበጀት ያስችልዎታል ndots ለአንድ የተወሰነ ፖድ, ማለትም.

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsConfig:
    options:
      - name: ndots
        value: "1"

ምንጮች

በብሎጋችን ላይ ሌሎች ጽሑፎችን ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ