/etc/resolv.conf para sa mga Kubernetes pod, ndots:5 nga opsyon, sa unsang paagi kini negatibong makaapekto sa performance sa aplikasyon

/etc/resolv.conf para sa mga Kubernetes pod, ndots:5 nga opsyon, sa unsang paagi kini negatibong makaapekto sa performance sa aplikasyon

Bag-o lang namon gilusad ang Kubernetes 1.9 sa AWS gamit ang Kops. Kagahapon, samtang hapsay nga nagpadagan sa bag-ong trapiko sa labing kadaghan sa among mga kumpol sa Kubernetes, nagsugod ako nga nakamatikod sa dili kasagaran nga mga sayup sa resolusyon sa ngalan sa DNS nga na-log sa among aplikasyon.

Adunay daghan bahin niini sa GitHub nagsulti, mao nga nakahukom ko nga mahibal-an usab kini. Sa katapusan, nakaamgo ko nga sa among kaso kini tungod sa dugang nga load sa kube-dns ΠΈ dnsmasq. Ang labing makapaikag ug bag-o nga butang alang kanako mao ang hinungdan sa hinungdanon nga pagtaas sa trapiko sa hangyo sa DNS. Ang akong post bahin niini ug kung unsa ang buhaton bahin niini.

Ang resolusyon sa DNS sulod sa sudlanan - sama sa bisan unsang sistema sa Linux - gitino sa configuration file /etc/resolv.conf. Default nga Kubernetes dnsPolicy kini ClusterFirst, nga nagpasabot nga ang bisan unsang hangyo sa DNS ipasa ngadto dnsmasq, nagdagan sa usa ka pod kube-dns sulod sa cluster, nga sa baylo ipadala ang hangyo ngadto sa aplikasyon kube-dns, kung ang ngalan matapos sa usa ka cluster suffix, o, kung dili, sa mas taas nga lebel sa DNS server.

file /etc/resolv.conf sulod sa matag sudlanan ang default tan-awon sama niini:

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

Sama sa imong makita, adunay tulo ka mga direktiba:

  1. Ang name server mao ang IP sa serbisyo kube-dns
  2. Gipiho ang 4 ka lokal nga domain sa pagpangita search
  3. Adunay usa ka kapilian ndots:5

Ang makaiikag nga bahin niini nga configuration mao ang paagi sa lokal nga pagpangita sa mga domain ug mga setting ndots:5 mag uban. Aron masabtan kini, kinahanglan nimong masabtan kung giunsa ang resolusyon sa DNS alang sa dili kwalipikado nga mga ngalan molihok.

Unsa ang tibuok nga ngalan?

Ang usa ka hingpit nga kwalipikado nga ngalan usa ka ngalan nga wala’y lokal nga pagpangita nga himuon ug ang ngalan maisip nga hingpit sa panahon sa resolusyon sa ngalan. Pinaagi sa kombensyon, ang DNS software nag-isip sa usa ka ngalan nga hingpit nga kwalipikado kung kini matapos sa usa ka tulbok (.), ug dili hingpit nga kwalipikado kung dili. Kana mao google.com. hingpit nga gihubit ug google.com - Dili.

Giunsa pagdumala ang usa ka dili kwalipikado nga ngalan?

Kung ang usa ka aplikasyon magkonektar sa hilit nga host nga gitakda sa ngalan, ang resolusyon sa ngalan sa DNS kasagarang gihimo gamit ang usa ka tawag sa sistema, pananglitan. getaddrinfo(). Apan kung ang ngalan dili kwalipikado (dili matapos sa .), Naghunahuna ko kung ang sistema nga tawag mosulay sa pagsulbad sa ngalan ingon usa ka hingpit nga ngalan una, o moagi una sa lokal nga mga domain sa pagpangita? Nagdepende kini sa kapilian ndots.

Gikan sa manwal resolv.conf:

ndots:n

устанавливаСт ΠΏΠΎΡ€ΠΎΠ³ для количСства Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сдСлан Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ запрос. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для n Ρ€Π°Π²Π½ΠΎ 1, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π² ΠΈΠΌΠ΅Π½ΠΈ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ, имя Π±ΡƒΠ΄Π΅Ρ‚ сначала ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ имя, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΊ Π½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ элСмСнты списка поиска.

Kini nagpasabot nga kon alang sa ndots gihatagan og bili nga 5 ug ang ngalan adunay ubos sa 5 ka tuldok, ang sistema sa tawag mosulay sa pagsulbad niini nga sunud-sunod, una nga moagi sa tanang lokal nga mga domain sa pagpangita, ug, kon dili molampos, sa katapusan masulbad kini isip usa ka hingpit nga ngalan.

Ngano diay ndots:5 mahimo ba kini nga negatibo nga makaapekto sa performance sa aplikasyon?

Sama sa imong mahanduraw, kung ang imong aplikasyon naggamit og daghang eksternal nga trapiko, alang sa matag koneksyon sa TCP nga natukod (o mas tukma, alang sa matag ngalan nga nasulbad), kini mag-isyu sa 5 ka DNS nga mga pangutana sa dili pa ang ngalan masulbad sa husto, tungod kay kini moagi una. 4 lokal nga domain sa pagpangita, ug sa katapusan mag-isyu sa usa ka hingpit nga hangyo sa resolusyon sa ngalan.

Ang mosunod nga tsart nagpakita sa kinatibuk-ang trapiko sa among 3 kube-dns modules sa wala pa ug human namo gibalhin ang pipila ka mga hostname nga gi-configure sa among aplikasyon ngadto sa hingpit nga mga kwalipikado.

/etc/resolv.conf para sa mga Kubernetes pod, ndots:5 nga opsyon, sa unsang paagi kini negatibong makaapekto sa performance sa aplikasyon

Ang mosunud nga diagram nagpakita sa latency sa aplikasyon sa wala pa ug pagkahuman gibalhin namon ang daghang mga hostname nga gi-configure sa among aplikasyon sa tibuuk nga mga ngalan (ang bertikal nga asul nga linya mao ang pag-deploy):

/etc/resolv.conf para sa mga Kubernetes pod, ndots:5 nga opsyon, sa unsang paagi kini negatibong makaapekto sa performance sa aplikasyon

Solusyon #1 - Paggamit ug hingpit nga kwalipikado nga mga ngalan

Kung ikaw adunay pipila ka mga static nga eksternal nga mga ngalan (pananglitan gihubit sa configuration sa aplikasyon) diin naghimo ka og daghang gidaghanon sa mga koneksyon, tingali ang pinakasimple nga solusyon mao ang pagbalhin kanila ngadto sa hingpit nga mga kwalipikado pinaagi lamang sa pagdugang niini. sa katapusan.

Dili kini usa ka katapusang solusyon, apan makatabang kini nga dali, bisan kung dili limpyo, mapaayo ang kahimtang. Gi-apply namo kini nga patch aron masulbad ang among problema, ang mga resulta niini gipakita sa mga screenshot sa ibabaw.

Solusyon #2 - pag-customize ndots Π² dnsConfig

Sa Kubernetes 1.9, ang functionality nagpakita sa alpha mode (beta version v1.10), nga nagtugot kanimo nga mas makontrol ang DNS parameters pinaagi sa pod property sa dnsConfig. Lakip sa ubang mga butang, kini nagtugot kanimo sa pag-configure sa bili ndots alang sa usa ka piho nga pod, i.e.

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

Mga tinubdan

Basaha usab ang ubang mga artikulo sa among blog:

Source: www.habr.com

Idugang sa usa ka comment