/etc/resolv.conf ji bo Kubernetes pods, vebijarka ndots:5, çawa ev dikare bandorek neyînî li performansa serîlêdanê bike

/etc/resolv.conf ji bo Kubernetes pods, vebijarka ndots:5, çawa ev dikare bandorek neyînî li performansa serîlêdanê bike

Me vê dawiyê Kubernetes 1.9 li ser AWS bi karanîna Kops dest pê kir. Duh, dema ku bi rêkûpêk seyrûsefera nû ber bi koma meya Kubernetes-ê ya herî mezin ve diherikand, min dest pê kir ku xeletiyên çareseriya navên DNS-ya neasayî yên ku ji hêla serîlêdana me ve hatine tomar kirin nihêrîn.

Li ser vê yekê li ser GitHub gelek tişt hene peyivîn, ji ber vê yekê min biryar da ku ez jî wê fêm bikim. Di dawiyê de, min fêm kir ku di rewşa me de ev ji ber zêdebûna bargiraniyê pêk tê kube-dns и dnsmasq. Tiştê herî balkêş û nû ji bo min sedemek pir girîng a seyrûsefera daxwaza DNS bû. Nivîsara min li ser vê yekê ye û li ser wê çi bikim.

Çareserkirina DNS di hundurê konteynerê de - wekî di her pergalek Linux de - ji hêla pelê vesazkirinê ve tê destnîşankirin /etc/resolv.conf. Default Kubernetes dnsPolicy ew ClusterFirst, ku tê vê wateyê ku her daxwazek DNS dê were şandin dnsmasq, di pêlekê de diherike kube-dns di hundurê komê de, ku di encamê de dê daxwazê ​​ji serîlêdanê re bişîne kube-dns, heke nav bi paşgirek komê biqede, an jî, wekî din, bi serverek DNS-a astek bilindtir.

file /etc/resolv.conf di hundurê her konteynerê de pêşnuma dê bi vî rengî xuya bike:

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

Wekî ku hûn dikarin bibînin, sê rêwerz hene:

  1. Pêşkêşkara navê IP-ya karûbarê ye kube-dns
  2. 4 domên lêgerîna herêmî diyar kirin search
  3. Vebijêrkek heye ndots:5

Beşa balkêş a vê veavakirinê ev e ku meriv çawa domîn û mîhengên lêgerîna herêmî ye ndots:5 li hev bikin. Ji bo ku hûn vê yekê fêm bikin, hûn hewce ne ku fêm bikin ka çareseriya DNS-ê ji bo navên neqewimin çawa dixebite.

Navê tevahî çi ye?

Navek bi tevahî jêhatî navek e ku jê re lêgerînek herêmî nayê kirin û nav dê di çareseriya nav de bêkêmasî were hesibandin. Li gorî peymanê, nermalava DNS navek bi tevahî jêhatî dihesibîne heke ew bi xalek (.) biqede, û wekî din ne bi tevahî jêhatî nabe. Ku heye google.com. bi temamî danasîn û google.com - Na.

Navekî nenas çawa tê destgirtin?

Dema ku serîlêdanek bi hosteya dûr a ku di nav de hatî destnîşan kirin ve girêdide, çareseriya navê DNS bi gelemperî bi karanîna bangek pergalê tête kirin, mînakî. getaddrinfo(). Lê heke nav bêkalîte be (bi . bi dawî nabe), ez meraq dikim gelo dê banga pergalê pêşî hewl bide ku nav wekî navek bêkêmasî çareser bike, an pêşî li qadên lêgerîna herêmî derbas bike? Ew bi vebijarkê ve girêdayî ye ndots.

Ji manual resolv.conf:

ndots:n

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

Ev tê wê wateyê ku eger ji bo ndots nirxek 5 tê dayîn û nav ji 5 xalan kêmtir e, banga pergalê dê hewl bide ku wê bi rêzdarî çareser bike, pêşî li hemî domên lêgerîna herêmî digere, û, heke neserketî be, di dawiyê de wê wekî navek bêkêmasî çareser bike.

Wê hingê çima ndots:5 ew dikare bandorek neyînî li performansa serîlêdanê bike?

Wekî ku hûn dikarin xeyal bikin, heke serîlêdana we gelek seyrûsefera derveyî bikar bîne, ji bo her pêwendiya TCP-ê hatî saz kirin (an rasttir, ji bo her navek çareserkirî), ew ê berî ku nav rast were çareser kirin 5 pirsên DNS-ê derxîne, ji ber ku ew ê pêşî derbas bibe. 4 domaina lêgerîna herêmî, û di dawiyê de dê daxwaznameyek çareseriya navekî bêkêmasî derxîne.

Nexşeya jêrîn seyrûsefera tevahî li ser 3 modulên me yên kube-dns nîşan dide berî û piştî ku me çend navên mêvandar ên ku di serîlêdana xwe de hatine mîheng kirin veguhezînin yên bi tevahî jêhatî.

/etc/resolv.conf ji bo Kubernetes pods, vebijarka ndots:5, çawa ev dikare bandorek neyînî li performansa serîlêdanê bike

Diyagrama jêrîn derengiya serîlêdanê berî û piştî ku me çend navên mêvandar ên ku di serîlêdana xwe de hatine veguheztin navên tevahî (xêza şîn a vertîkal veqetandin e) nîşan dide:

/etc/resolv.conf ji bo Kubernetes pods, vebijarka ndots:5, çawa ev dikare bandorek neyînî li performansa serîlêdanê bike

Çareseriya #1 - Navên bi tevahî jêhatî bikar bînin

Ger çend navên we yên derveyî statîk hene (ango di veavakirina serîlêdanê de hatine destnîşankirin) ku hûn hejmareke mezin pêwendiyan bi wan re diafirînin, dibe ku çareseriya herî hêsan ev e ku hûn bi tenê pêvekirina wan veguhezînin yên bi tevahî jêhatî. di dawiyê de.

Ev ne çareseriyek dawîn e, lê ew dibe alîkar ku zû, her çend ne paqij be jî, rewşê baştir bike. Me ev pêçek ji bo çareserkirina pirsgirêka xwe, ku encamên wê di dîmenên li jor de hatine destnîşan kirin, sepandin.

Çareseriya #2 - xwerûkirin ndots в dnsConfig

Di Kubernetes 1.9 de, fonksiyonel di moda alpha de xuya bû (guhertoya beta v1.10), ku dihêle hûn bi riya taybetmendiya pod-ê ve parametreyên DNS-ê çêtir kontrol bikin. dnsConfig. Di nav tiştên din de, ew dihêle hûn nirxê mîheng bikin ndots ji bo podek taybetî, yanî.

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

Çavkaniyên

Her weha gotarên din ên li ser bloga me bixwînin:

Source: www.habr.com

Add a comment