/etc/resolv.conf pou gous Kubernetes, ndots:5 opsyon, ki jan sa ka gen enpak negatif sou pèfòmans aplikasyon an

/etc/resolv.conf pou gous Kubernetes, ndots:5 opsyon, ki jan sa ka gen enpak negatif sou pèfòmans aplikasyon an

Nou fèk te lanse Kubernetes 1.9 sou AWS lè l sèvi avèk Kops. Yè, pandan m ap fè nouvo trafik san pwoblèm nan pi gwo gwoup Kubernetes nou yo, mwen te kòmanse remake erè rezolisyon non DNS ki pa nòmal aplikasyon nou an te anrejistre.

Gen anpil bagay sou sa a sou GitHub te pale, Se konsa, mwen deside kalkile li tou. Nan fen a, mwen reyalize ke nan ka nou an sa a se ki te koze pa chaj la ogmante sou kube-dns и dnsmasq. Bagay ki pi enteresan ak nouvo pou mwen se te rezon ki fè anpil ogmantasyon siyifikatif nan trafik demann DNS. Pòs mwen an se sou sa a ak sa yo dwe fè sou li.

Rezolisyon DNS andedan veso a - tankou nan nenpòt sistèm Linux - detèmine pa dosye konfigirasyon an /etc/resolv.conf. Default Kubernetes dnsPolicy sa a ClusterFirst, ki vle di ke nenpòt demann DNS yo pral voye bay dnsmasq, kouri nan yon gous kube-dns andedan gwoup la, ki an vire ap voye demann lan nan aplikasyon an kube-dns, si non an fini ak yon sifiks gwoup, oswa, otreman, nan yon sèvè DNS pi wo nivo.

dosye /etc/resolv.conf andedan chak veso default la pral sanble sa a:

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

Kòm ou ka wè, gen twa direktiv:

  1. Sèvè a non se IP sèvis la kube-dns
  2. 4 domèn rechèch lokal espesifye search
  3. Gen yon opsyon ndots:5

Pati ki enteresan nan konfigirasyon sa a se ki jan domèn rechèch lokal yo ak anviwònman yo ndots:5 met ansanm. Pou konprann sa, ou bezwen konprann ki jan rezolisyon DNS pou non ki pa kalifye travay.

Ki sa ki se yon non konplè?

Yon non totalman kalifye se yon non pou ki pa gen okenn rechèch lokal yo pral fèt epi non an pral konsidere kòm absoli pandan rezolisyon non an. Dapre konvansyon, lojisyèl DNS konsidere yon non konplètman kalifye si li fini ak yon pwen (.), epi li pa konplètman kalifye otreman. Sa vle di google.com. konplètman defini ak google.com - Non.

Ki jan yo trete yon non ki pa kalifye?

Lè yon aplikasyon konekte ak lame aleka ki espesifye nan non an, rezolisyon non DNS anjeneral fè lè l sèvi avèk yon apèl sistèm, pa egzanp. getaddrinfo(). Men, si non an pa kalifye (pa fini ak .), Mwen mande si apèl sistèm lan pral eseye rezoud non an kòm yon non absoli an premye, oswa ale nan domèn rechèch lokal yo an premye? Sa depann de opsyon an ndots.

Soti nan manyèl la resolv.conf:

ndots:n

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

Sa vle di ke si pou ndots bay yon valè 5 epi non an gen mwens pase 5 pwen, apèl sistèm lan pral eseye rezoud li an sekans, premye travèse tout domèn rechèch lokal yo, epi, si li pa reyisi, evantyèlman rezoud li kòm yon non absoli.

Poukisa lè sa a ndots:5 èske li ka gen yon enpak negatif sou pèfòmans aplikasyon an?

Kòm ou ka imajine, si aplikasyon w lan sèvi ak anpil trafik ekstèn, pou chak koneksyon TCP etabli (oswa plis presizyon, pou chak non rezoud), li pral bay 5 demann DNS anvan non an kòrèkteman rezoud, paske li pral premye ale nan. 4 domèn rechèch lokal, epi nan fen a pral bay yon demann rezolisyon non absoli.

Tablo ki anba la a montre trafik total sou 3 modil kube-dns nou yo anvan ak apre nou chanje non host kèk konfigirasyon nan aplikasyon nou an nan non yo konplètman kalifye.

/etc/resolv.conf pou gous Kubernetes, ndots:5 opsyon, ki jan sa ka gen enpak negatif sou pèfòmans aplikasyon an

Dyagram sa a montre latansi aplikasyon an anvan ak apre nou chanje plizyè non host ki konfigirasyon nan aplikasyon nou an nan non konplè (liy vètikal ble a se deplwaman an):

/etc/resolv.conf pou gous Kubernetes, ndots:5 opsyon, ki jan sa ka gen enpak negatif sou pèfòmans aplikasyon an

Solisyon #1 - Sèvi ak non totalman kalifye

Si ou gen kèk non ekstèn estatik (sa vle di defini nan konfigirasyon aplikasyon an) kote ou kreye yon gwo kantite koneksyon, petèt solisyon ki pi senp la se chanje yo nan non yo konplètman kalifye pa tou senpleman ajoute yo. alafen.

Sa a se pa yon solisyon final, men li ede byen vit, byenke pa pwòp, amelyore sitiyasyon an. Nou te aplike patch sa a pou rezoud pwoblèm nou an, rezilta yo te montre nan Ekran ki anwo yo.

Solisyon #2 - personnalisation ndots в dnsConfig

Nan Kubernetes 1.9, fonksyonalite parèt nan mòd alfa (vèsyon beta v1.10), ki pèmèt ou pi byen kontwole paramèt dns atravè pwopriyete gous la. dnsConfig. Pami lòt bagay, li pèmèt ou configured valè a ndots pou yon gous espesifik, i.e.

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

Sous

Epitou li lòt atik sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè