/etc/resolv.conf fun Kubernetes pods, ndots: 5 aṣayan, bawo ni eyi ṣe le ni ipa lori iṣẹ ohun elo ni odi

/etc/resolv.conf fun Kubernetes pods, ndots: 5 aṣayan, bawo ni eyi ṣe le ni ipa lori iṣẹ ohun elo ni odi

Laipẹ a ṣe ifilọlẹ Kubernetes 1.9 lori AWS ni lilo Kops. Lana, lakoko ti o n yi ijabọ tuntun jade laisiyonu si eyiti o tobi julọ ti awọn iṣupọ Kubernetes wa, Mo bẹrẹ akiyesi awọn aṣiṣe ipinnu orukọ DNS alailẹgbẹ ti o wọle nipasẹ ohun elo wa.

Pupọ wa nipa eyi lori GitHub sọrọ, nitorina ni mo pinnu lati ro ero rẹ paapaa. Ni ipari, Mo rii pe ninu ọran wa eyi jẹ idi nipasẹ ẹru ti o pọ si lori kube-dns и dnsmasq. Ohun ti o nifẹ julọ ati tuntun fun mi ni idi pupọ fun ilosoke pataki ninu ijabọ ibeere DNS. Ifiweranṣẹ mi jẹ nipa eyi ati kini lati ṣe nipa rẹ.

Ipinnu DNS inu apo eiyan - bi ninu eyikeyi eto Linux - jẹ ipinnu nipasẹ faili iṣeto ni /etc/resolv.conf. Kubernetes aiyipada dnsPolicy eyi ni ClusterFirst, eyi ti o tumo si wipe eyikeyi DNS ìbéèrè yoo wa ni dari si dnsmasq, nṣiṣẹ ni a podu kube-dns inu iṣupọ, eyiti o jẹ ki o firanṣẹ ibeere naa si ohun elo naa kube-dns, ti orukọ naa ba pari pẹlu suffix iṣupọ, tabi, bibẹẹkọ, si olupin DNS ti o ga julọ.

Ọna /etc/resolv.conf inu apoti kọọkan aiyipada yoo dabi eyi:

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

Bi o ti le rii, awọn itọsọna mẹta wa:

  1. Olupin orukọ jẹ IP ti iṣẹ naa kube-dns
  2. 4 agbegbe wiwa ibugbe pàtó kan search
  3. Aṣayan kan wa ndots:5

Apakan ti o nifẹ ninu iṣeto ni bii awọn agbegbe wiwa agbegbe ati awọn eto ndots:5 gba papo. Lati loye eyi, o nilo lati ni oye bi ipinnu DNS fun awọn orukọ ti ko peye ṣiṣẹ.

Kini oruko kikun?

Orukọ ti o pe ni kikun jẹ orukọ kan fun eyiti ko si wiwa agbegbe ti yoo ṣe ati pe orukọ naa yoo gba pe pipe lakoko ipinnu orukọ. Nipa apejọpọ, sọfitiwia DNS ka orukọ kan lati jẹ oṣiṣẹ ni kikun ti o ba pari pẹlu aami (.), ati pe ko ni kikun bibẹẹkọ. Ti o jẹ google.com. ni kikun telẹ ati google.com - Bẹẹkọ.

Bawo ni a ṣe n ṣakoso orukọ ti ko pe?

Nigbati ohun elo kan ba sopọ si agbalejo latọna jijin pato ninu orukọ, ipinnu orukọ DNS ni igbagbogbo ṣe ni lilo ipe eto, fun apẹẹrẹ. getaddrinfo(). Ṣugbọn ti orukọ ko ba jẹ alaimọ (ko pari pẹlu .), Mo ṣe iyalẹnu boya ipe eto yoo gbiyanju lati yanju orukọ naa bi orukọ pipe ni akọkọ, tabi lọ nipasẹ awọn agbegbe wiwa agbegbe ni akọkọ? O da lori aṣayan ndots.

Lati iwe afọwọkọ resolv.conf:

ndots:n

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

Eleyi tumo si wipe ti o ba ti fun ndots ti a fun ni iye ti 5 ati pe orukọ naa ni kere ju awọn aami 5, ipe eto yoo gbiyanju lati yanju rẹ lẹsẹsẹ nipasẹ lilọ kiri gbogbo awọn agbegbe wiwa agbegbe ati, ti ko ba ṣaṣeyọri, nikẹhin ipinnu rẹ bi orukọ pipe.

Kini idi naa ndots:5 le ni odi ni ipa lori iṣẹ ohun elo?

Bi o ṣe le fojuinu, ti ohun elo rẹ ba lo ọpọlọpọ awọn ijabọ ita, fun gbogbo asopọ TCP ti iṣeto (tabi diẹ sii ni deede, fun gbogbo orukọ ti o yanju), yoo fun awọn ibeere DNS 5 ṣaaju ki orukọ naa to ni ipinnu ni pipe, nitori pe yoo kọkọ lọ nipasẹ 4 agbegbe wiwa agbegbe, ati ni ipari yoo fun ibeere ipinnu ipinnu orukọ pipe kan.

Atẹle atẹle n ṣe afihan ijabọ lapapọ lori awọn modulu kube-dns 3 wa ṣaaju ati lẹhin ti a yipada awọn orukọ olupin diẹ ti a tunto ninu ohun elo wa si awọn ti o peye ni kikun.

/etc/resolv.conf fun Kubernetes pods, ndots: 5 aṣayan, bawo ni eyi ṣe le ni ipa lori iṣẹ ohun elo ni odi

Aworan ti o tẹle n ṣe afihan aipe ohun elo ṣaaju ati lẹhin ti a yipada ọpọlọpọ awọn orukọ igbalejo ti a tunto ninu ohun elo wa si awọn orukọ kikun (laini bulu inaro ni imuṣiṣẹ):

/etc/resolv.conf fun Kubernetes pods, ndots: 5 aṣayan, bawo ni eyi ṣe le ni ipa lori iṣẹ ohun elo ni odi

Solusan #1 - Lo awọn orukọ ti o ni kikun

Ti o ba ni awọn orukọ ita aimi diẹ (ie asọye ninu iṣeto ohun elo) eyiti o ṣẹda nọmba nla ti awọn asopọ, boya ojutu ti o rọrun julọ ni lati yi wọn pada si awọn ti o peye ni kikun nipa fifi wọn kun. ni igbehin.

Eyi kii ṣe ojutu ikẹhin, ṣugbọn o ṣe iranlọwọ lati yarayara, botilẹjẹpe kii ṣe mimọ, mu ipo naa dara. A lo alemo yii lati yanju iṣoro wa, awọn abajade eyiti o han ni awọn sikirinisoti loke.

Solusan # 2 - isọdi ndots в dnsConfig

Ni Kubernetes 1.9, iṣẹ ṣiṣe han ni ipo alpha (ẹya beta v1.10), eyiti o fun ọ laaye lati ṣakoso awọn aye-aye DNS dara julọ nipasẹ ohun-ini podu ni dnsConfig. Ninu awọn ohun miiran, o fun ọ laaye lati tunto iye naa ndots fun kan pato podu, i.e.

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

Awọn orisun

Tun ka awọn nkan miiran lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun