/etc/resolv.conf airson pods Kubernetes, ndots: roghainn 5, mar a bheir seo droch bhuaidh air coileanadh tagraidh

/etc/resolv.conf airson pods Kubernetes, ndots: roghainn 5, mar a bheir seo droch bhuaidh air coileanadh tagraidh

Chuir sinn Kubernetes 1.9 air bhog o chionn ghoirid air AWS a’ cleachdadh Kops. An-dè, fhad ‘s a bha mi a’ sgaoileadh trafaic ùr gu rèidh chun an fheadhainn as motha de na cruinneachaidhean Kubernetes againn, thòisich mi a ’mothachadh mearachdan fuasglaidh ainm DNS annasach a chaidh an logadh leis an tagradh againn.

Tha tòrr mu dheidhinn seo air GitHub bhruidhinn, agus mar sin chuir mi romham faighinn a-mach e cuideachd. Aig a’ cheann thall, thuig mi gu bheil seo anns a’ chùis againn air adhbhrachadh leis an àrdachadh eallach air kube-dns и dnsmasq. B ’e an rud as inntinniche agus as ùire dhòmhsa an dearbh adhbhar airson an àrdachadh mòr ann an trafaic iarrtas DNS. Tha an post agam mu dheidhinn seo agus dè a nì mi mu dheidhinn.

Tha rùn DNS taobh a-staigh an t-soithich - mar ann an siostam Linux sam bith - air a dhearbhadh leis an fhaidhle rèiteachaidh /etc/resolv.conf. Kubernetes bunaiteach dnsPolicy e ClusterFirst, a tha a 'ciallachadh gun tèid iarrtas DNS sam bith a chuir air adhart gu dnsmasq, a 'ruith ann am pod kube-dns taobh a-staigh a’ bhraisle, a chuireas an uair sin an t-iarrtas air adhart chun tagradh kube-dns, ma thig an t-ainm gu crìch le iar-leasachan brabhsair, no, air dhòigh eile, gu frithealaiche DNS aig ìre nas àirde.

faidhl /etc/resolv.conf taobh a-staigh gach soitheach seallaidh an roghainn bunaiteach mar seo:

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

Mar a chì thu, tha trì stiùiridhean ann:

  1. Is e am frithealaiche ainm IP na seirbheis kube-dns
  2. 4 raointean sgrùdaidh ionadail air an sònrachadh search
  3. Tha roghainn ann ndots:5

Is e am pàirt inntinneach den rèiteachadh seo mar a tha na raointean sgrùdaidh ionadail agus na roghainnean ndots:5 gabh ri chèile. Gus seo a thuigsinn, feumaidh tu tuigsinn mar a tha rùn DNS airson ainmean gun teisteanas ag obair.

Dè th' ann an làn ainm?

Is e ainm làn-theisteanas ainm nach tèid sgrùdadh ionadail a dhèanamh air agus bithear a’ meas gu bheil an t-ainm iomlan aig àm fuasglaidh ainm. A rèir gnàthachaidh, tha bathar-bog DNS a’ meas gu bheil ainm làn theisteanas ma thig e gu crìch le dot (.), Agus mura h-eil e làn theisteanas air dhòigh eile. S e sin google.com. làn mhìneachadh agus google.com - Chan eil.

Ciamar a thathar a’ làimhseachadh ainm gun teisteanas?

Nuair a cheanglas tagradh ris an òstair iomallach a tha air a shònrachadh san ainm, mar as trice bidh fuasgladh ainm DNS air a dhèanamh le bhith a’ cleachdadh gairm siostaim, me. getaddrinfo(). Ach ma tha an t-ainm gun teisteanas (chan eil e a’ crìochnachadh le .), Saoil am feuch an gairm siostam ri fuasgladh fhaighinn air an ainm mar ainm iomlan an-toiseach, no an tèid e tro na raointean sgrùdaidh ionadail an toiseach? Tha e an urra ris an roghainn ndots.

Bhon leabhar-làimhe resolv.conf:

ndots:n

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

Tha seo a’ ciallachadh ma tha ndots le luach 5 agus nas lugha na dotagan 5 san ainm, feuchaidh gairm an t-siostaim ri fhuasgladh ann an sreath, an toiseach a’ dol thairis air a h-uile raon sgrùdaidh ionadail, agus, mura soirbhich, ga fhuasgladh mar ainm iomlan.

Carson ma-thà ndots:5 am faodadh e droch bhuaidh a thoirt air coileanadh an tagraidh?

Mar a shaoileadh tu, ma chleachdas an tagradh agad tòrr trafaic bhon taobh a-muigh, airson gach ceangal TCP stèidhichte (no nas mionaidiche, airson gach ainm a chaidh fhuasgladh), cuiridh e a-mach 5 ceistean DNS mus tèid an t-ainm fhuasgladh gu ceart, oir thèid e troimhe an-toiseach. 4 sgìre sgrùdaidh ionadail, agus aig an deireadh cuiridh e a-mach iarrtas fuasglaidh ainm iomlan.

Tha an clàr a leanas a’ sealltainn an trafaic iomlan air na modalan 3 kube-dns againn ro agus às deidh dhuinn am beagan ainmean aoigheachd a chaidh a dhealbhadh san tagradh againn atharrachadh gu feadhainn làn-teisteanasach.

/etc/resolv.conf airson pods Kubernetes, ndots: roghainn 5, mar a bheir seo droch bhuaidh air coileanadh tagraidh

Tha an diagram a leanas a’ sealltainn latency an tagraidh ro agus às deidh dhuinn grunn ainmean aoigheachd a chaidh an rèiteachadh san tagradh againn atharrachadh gu ainmean slàn (is e an loidhne ghorm dhìreach an cleachdadh):

/etc/resolv.conf airson pods Kubernetes, ndots: roghainn 5, mar a bheir seo droch bhuaidh air coileanadh tagraidh

Fuasgladh #1 - Cleachd ainmean làn-theisteanas

Mura h-eil mòran ainmean taobh a-muigh statach agad (ie air am mìneachadh ann an rèiteachadh an tagraidh) ris an cruthaich thu àireamh mhòr de cheanglaichean, is dòcha gur e am fuasgladh as sìmplidh an tionndadh gu feadhainn làn-teisteanasach le bhith dìreach gan ceangal. aig a' cheann thall.

Chan e fuasgladh deireannach a tha seo, ach tha e a 'cuideachadh le bhith a' leasachadh an t-suidheachaidh gu luath, ged nach eil e glan. Chuir sinn am bad seo an sàs gus ar duilgheadas fhuasgladh, agus bha na toraidhean air an sealltainn anns na dealbhan-sgrìn gu h-àrd.

Fuasgladh #2 - gnàthachadh ndots в dnsConfig

Ann an Kubernetes 1.9, nochd comas-gnìomh ann am modh alpha (dreach beta v1.10), a leigeas leat smachd nas fheàrr a chumail air paramadairean DNS tro sheilbh a’ pod ann an dnsConfig. Am measg rudan eile, leigidh e leat an luach a rèiteachadh ndots airson pod sònraichte, i.e.

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

Stòran

Leugh cuideachd artaigilean eile air ar blog:

Source: www.habr.com

Cuir beachd ann