/etc/resolv.conf kanggo polong Kubernetes, opsi dots:5, kepiye iki bisa mengaruhi kinerja aplikasi.

/etc/resolv.conf kanggo polong Kubernetes, opsi dots:5, kepiye iki bisa mengaruhi kinerja aplikasi.

Kita bubar ngluncurake Kubernetes 1.9 ing AWS nggunakake Kops. Wingi, nalika lancar ngluncurake lalu lintas anyar menyang klompok Kubernetes sing paling gedhe, aku wiwit ngerteni kesalahan resolusi jeneng DNS sing ora biasa sing dicathet dening aplikasi kita.

Ana cukup akeh babagan iki ing GitHub ngomong, dadi aku mutusakΓ© kanggo tokoh metu banget. Ing pungkasan, aku temen maujud sing ing kasus kita iki disebabake tambah mbukak ing kube-dns ΠΈ dnsmasq. Bab sing paling menarik lan anyar kanggo kula yaiku alasan banget kanggo nambah lalu lintas panjalukan DNS. Kirimanku babagan iki lan apa sing kudu ditindakake.

RΓ©solusi DNS ing wadhah - kaya ing sistem Linux - ditemtokake dening file konfigurasi /etc/resolv.conf. Default Kubernetes dnsPolicy iku ClusterFirst, sing tegese panjalukan DNS apa wae bakal diterusake menyang dnsmasq, mlaku ing pod kube-dns nang kluster, sing siji bakal nerusake panjalukan kanggo aplikasi kube-dns, yen jeneng dipungkasi nganggo sufiks kluster, utawa, yen ora, menyang server DNS tingkat sing luwih dhuwur.

berkas /etc/resolv.conf ing saben wadhah standar bakal katon kaya iki:

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

Kaya sing sampeyan ngerteni, ana telung arahan:

  1. Server jeneng minangka IP layanan kasebut kube-dns
  2. 4 domain panelusuran lokal ditemtokake search
  3. Ana pilihan ndots:5

Sisih menarik saka konfigurasi iki yaiku carane domain lan setelan telusuran lokal ndots:5 kumpul bareng. Kanggo ngerti iki, sampeyan kudu ngerti cara kerja resolusi DNS kanggo jeneng sing ora cocog.

Apa jeneng lengkap?

Jeneng sing mumpuni yaiku jeneng sing ora ana panelusuran lokal sing bakal ditindakake lan jeneng kasebut bakal dianggep mutlak sajrone resolusi jeneng. Miturut konvènsi, piranti lunak DNS nganggep jeneng dadi mumpuni yen dipungkasi karo titik (.), lan ora mumpuni kanthi liya. Iku google.com. kanthi ditetepake lan google.com - Ora.

Kepiye carane jeneng sing ora cocog ditangani?

Nalika aplikasi nyambung menyang host remot kasebut ing jeneng, rΓ©solusi jeneng DNS biasane rampung nggunakake telpon sistem, f.eks. getaddrinfo(). Nanging yen jeneng kasebut ora nduweni kualifikasi (ora rampung karo .), Aku kepengin weruh yen telpon sistem bakal nyoba ngrampungake jeneng kasebut minangka jeneng absolut dhisik, utawa liwat domain panelusuran lokal dhisik? Iku gumantung ing pilihan ndots.

Saka manual resolv.conf:

ndots:n

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

Iki tegese yen kanggo ndots diwenehi nilai 5 lan jeneng ngemot kurang saka 5 titik, telpon sistem bakal nyoba kanggo mutusake masalah sequentially, pisanan ngliwati kabeh domain panelusuran lokal, lan, yen ora kasil, pungkasanipun mutusake masalah minangka jeneng Absolute.

Napa malih ndots:5 Apa bisa mengaruhi kinerja aplikasi?

Kaya sing sampeyan bayangake, yen aplikasi sampeyan nggunakake akeh lalu lintas eksternal, kanggo saben sambungan TCP sing ditetepake (utawa luwih akurat, kanggo saben jeneng sing ditanggulangi), bakal ngetokake 5 pitakon DNS sadurunge jeneng kasebut ditanggulangi kanthi bener, amarga bakal diterusake dhisik. 4 domain panelusuran lokal, lan ing pungkasan bakal ngetokake panjalukan resolusi jeneng absolut.

Bagan ing ngisor iki nuduhake total lalu lintas ing 3 modul kube-dns kita sadurunge lan sawise kita ngalih sawetara hostname sing dikonfigurasi ing aplikasi kita dadi sing mumpuni.

/etc/resolv.conf kanggo polong Kubernetes, opsi dots:5, kepiye iki bisa mengaruhi kinerja aplikasi.

Diagram ing ngisor iki nuduhake latensi aplikasi sadurunge lan sawise kita ngalih sawetara jeneng host sing dikonfigurasi ing aplikasi kita dadi jeneng lengkap (garis biru vertikal yaiku penyebaran):

/etc/resolv.conf kanggo polong Kubernetes, opsi dots:5, kepiye iki bisa mengaruhi kinerja aplikasi.

Solusi #1 - Gunakake jeneng sing cocog

Yen sampeyan duwe sawetara jeneng eksternal statis (i.e. ditetepake ing konfigurasi aplikasi) sing nggawe akeh sambungan, mbok menawa solusi sing paling gampang yaiku ngalih menyang sing mumpuni kanthi mung nambahake. akhire.

Iki dudu solusi pungkasan, nanging mbantu kanthi cepet, sanajan ora resik, nambah kahanan. Kita ngetrapake tembelan iki kanggo ngatasi masalah kita, asil kasebut ditampilake ing gambar ing ndhuwur.

Solusi #2 - kustomisasi ndots Π² dnsConfig

Ing Kubernetes 1.9, fungsionalitas katon ing mode alfa (versi beta v1.10), sing ngidini sampeyan ngontrol parameter DNS kanthi luwih apik liwat properti pod ing dnsConfig. Antarane liyane, iku ngijini sampeyan kanggo ngatur nilai ndots kanggo pod tartamtu, i.e.

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

Sumber informasi

Uga maca artikel liyane ing blog kita:

Source: www.habr.com

Add a comment