Puncte:0

Cluster KubeADM: cum să configurați corect DNS

drapel au

Am următorul proiect pe care îl folosesc pentru a crea propriul meu cluster Kubernetes pe mașina locală (macOS) prin KubeAdm: https://github.com/sasadangelo/k8s-cluster Practic, am plecat de la asta proiect și am făcut următoarea actualizare:

  • Configurați implementarea Vagrant printr-un fișier YAML.
  • Acceptă API-urile K8s 1.6, K8s 1.18 și Calico 3.8.8
  • Implementare automată a tabloului de bord K8s.

Acum sunt bine cu acest cluster, dar am câteva probleme DNS pe care aș dori să înțeleg cum să rezolv. Instrumentul folosește un fișier Vagrant pentru a porni 3 casete Vagrant, apoi folosesc în principal 3 scripturi:

  • configure_box.sh, folosesc pentru a instala pe fiecare cutie software-ul necesar precum docker, kubeadm, kubelet, kubectl etc.
  • configure_master.sh, folosit pentru a configura numai nodul principal, pentru a instala pluginul de rețea și pentru a rula kubeadm init.
  • configure_worker.sh, folosit pentru a configura nodul de lucru care se alătură clusterului.

Problema mea este că rezoluție.conf dintre podurile mele arată astfel:

serverul de nume 10.96.0.10
caută default.svc.cluster.local svc.cluster.local cluster.local <alt domeniu care vine de la mașina gazdă>
opțiuni ndots:5

Acest fișier are două probleme:

  1. nu-mi permite accesul la internet. De fapt, trebuie să adaug manual, adăugând această linie la începutul fișierului:
server de nume 8.8.8.8

și eliminați-l când nu mai este necesar (dacă îl păstrez, DNS-ul intern nu funcționează)

  1. în clauza de căutare există domenii care provin de la mașinile mele gazdă: <other domain coming from host machine> care cauzează probleme.

Am citit multă documentație, dar încă am probleme în a-mi da seama cum să-mi schimb codul pentru a evita aceste două probleme.

Michael Hampton avatar
drapel cz
Dacă nu aveți un motiv anume pentru a configura un cluster de dezvoltare cu trei noduri, luați în considerare utilizarea minikube în schimb.
Salvatore D'angelo avatar
drapel au
Minikube, din câte știu eu, este un singur nod. Trebuie să-mi testez aplicația cu Pod-uri care rulează pe diferiți lucrători.
c4f4t0r avatar
drapel nl
@SalvatoreD'angelo cu cea mai recentă versiune minikube, puteți adăuga mai multe noduri
Salvatore D'angelo avatar
drapel au
Salut, da am observat asta. Nu știam. Dar nu îmi este clar dacă sunt noduri reale (mă refer la Virtual Machine ca Virtual Box) sau doar containere. Dacă sunt VM, care este tehnologia de bază folosită de minikube? Am încercat să caut un răspuns, dar nu am avut succes.
Puncte:2
drapel ng
  1. nu-mi permite accesul la internet.

Configurația dvs. implicită pare în regulă. După cum ați descoperit, nu doriți să vă schimbați podul resolv.conf, deoarece trebuie să utilizeze serviciul coredns din cluster pentru căutări DNS locale. Serviciul coredns ar trebui să poată transmite cereri dns către rezolutorul configurat în k8s-master /etc/resolv.conf. Se pare că ar putea fi o problemă cu accesul la internet al serverului k8s-master sau cu rețeaua virtualbox.Ți-am clonat depozitul și am reușit să rezolv dn-urile de internet din podurile care rulează pe cluster, așa cum era de așteptat.

Dacă aruncați o privire la configurația coredns, veți vedea că este setat pentru utilizare /etc/resolv.conf pentru orice domenii nespecificate. De la k8s-master poți rula kubectl -n kube-system obține configmap coredns -o yaml pentru a vedea configurația coredns. Va fi o linie, înainte . /etc/resolv.conf. The Kubernetes docs aici explicați configurația corefișierului coredns. Veți descoperi, de asemenea, că rezolvare.conf în podul coredns este la fel ca pe gazdă. Pentru a verifica acest lucru, puteți rula ps -aux | grep coredns pentru a obține pid-ul unuia dintre procesele coredns. Apoi fugi nsenter -t <pid> -n cat /etc/resolv.conf și ar trebui să vedeți că conținutul este același cu sistemul gazdă. Ar trebui să aibă un resolver din rețeaua virtualbox. Puteți testa acest resolver de la gazdă sau în cadrul procesului coredns pentru a valida dacă poate rezolva dns. Puteți testa, de asemenea, împotriva rezolutorului Google din cadrul procesului coredns pentru a vedea ce obțineți. Aș încerca o căutare dns, precum și doar un ping. Acest lucru ar trebui să vă ajute să restrângeți ceea ce vă cauzează problema. Din nou, am încercat fișierul tău vagrant pe un server nou-nouț ubuntu 20.04 și a funcționat bine.

  1. în clauza de căutare există domenii care provin de la mașinile mele gazdă care provoacă probleme.

Aceasta este și configurația așteptată. De obicei, nu m-aș aștepta ca acest lucru să cauzeze probleme, dar nu știu exact configurația dvs. sau ce încercați să obțineți. Dacă soluția necesită să modificați lista de domenii de căutare din pod, locul pentru a face acest lucru ar fi în politica pod dns. Sperăm că rezolvarea primei probleme vă va permite să evitați nevoia de a personaliza aceasta.

Salvatore D'angelo avatar
drapel au
Bună Mike, mulțumesc foarte mult pentru răspunsul tău complet. Sincer să fiu, nu sunt un expert în rezolvarea problemelor DNS (acesta este un handicap pe care ar trebui să-l abordez) și am nevoie de timp pentru a analiza și testa feedback-ul dumneavoastră. Pentru moment nu pot decât să votez răspunsul tău și revin dacă am îndoieli.
Salvatore D'angelo avatar
drapel au
Bună Mike Frank, după mult timp încă sunt aici cu problema. Îmi puteți spune exact ce să fac pentru a-mi suprascrie clauza de căutare în Pod /etc/resolve.conf. Am încercat să folosesc dnsConfig cu clauza de căutare, dar în cele din urmă, domeniul suplimentar care vine de la VirtualBox este încă acolo. Există vreo modalitate de a-l folosi doar pe cel pe care l-am specificat în dnsConfig fără a le amesteca K8s cu cel din gazda Vagrant/VirtualBox?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.