Puncte:1

Cum se configurează DNS pentru servicii și poduri în Kubernetes?

drapel ru

Am trecut prin documentația K8s pe DNS pentru servicii și poduri.Sarcina principală pe care vreau să o rezolv este implementarea mea K8s NodePort ca tip de serviciu. Adică, folosesc adresele IP externe de la noduri pentru a expune serviciul la Internet. Când fac acest lucru, adresa mea IP este expusă și ar prefera mai degrabă să aibă un nume de gazdă [un nume DNS]. Parcurgând documentația de mai sus, nu înțeleg multe dintre concepte datorită faptului că sunt nou în K8s.

Am configurat Ingress Controller de la NGINX pentru Bare Metal K8s, deoarece furnizorul meu de cloud nu oferă serviciu de echilibrare a sarcinii.

Deci intrebarea mea este: Cum configurez un ExternalDNS în clusterul meu K8s?

În scop de referință, acestea sunt resursele mele din clusterul K8s.

Spații de nume
NUME STARE VARSTA
implicit Activ 3d12h
ingress-nginx Activ 5h53m
kube-node-lease Activ 3d12h
kube-public Active 3d12h
kube-system Active 3d12h

Practic, am toate implementările mele în interiorul Mod implicit spatiu de nume.

kubectl obține totul -n implicit

 STAREA NUMELE GATA REINCEPE VARSTA
pod/hello-docker-cc749b757-qfctr 1/1 Alergare 0 70m

NUME TIP CLUSTER-IP EXTERN-IP PORT(E) Vârsta
service/hello-docker NodePort 10.xxx.xxx.xxx <niciunul> 3000:30072/TCP 70m
service/kubernetes ClusterIP 10.xxx.xxx.xxx <niciunul> 443/TCP 3d12h

NUME GATA ACTUALIZAT VÂRSTA DISPONIBILĂ
deployment.apps/hello-docker 1/1 1 1 70m

NUME VÂRSTA ACTUALĂ GATA DEZIRATĂ
replicaset.apps/hello-docker-cc749b757 1 1 1 70m

Și acesta este fișierul manifest pe care îl am pentru service și implementare salut-docker aplicatie:

apiVersion: v1
fel: Serviciu
metadate: 
 nume: hello-docker 
 etichete:   
   aplicație: hello-docker
specificație: 
 tip: NodePort
 porturi:
 - port: 3000
   targetPort: 8000
   protocol: TCP
   nume: http
 selector:
   aplicație: hello-docker

---
apiVersion: apps/v1
fel: Desfăşurare
metadate:
  nume: hello-docker
  etichete:
    aplicație: hello-docker
specificație:
  replici: 1
  selector:
    matchLabels:
      aplicație: hello-docker
  șablon:
    metadate:
      etichete:
        aplicație: hello-docker
    specificație:
      imagePullSecrets:
      - nume: regcred
      containere:
      - nume: hello-docker
        imagine: sebastian/hello-docker:1.1
        imagePullPolicy: Întotdeauna
        porturi:
          - containerPort: 8000 

Orice feedback și sugestie ar fi foarte apreciat.

Mikolaj S. avatar
drapel cn
Ce versiune de Kubernetes ați folosit? Ați folosit instalație bare metal sau vreun furnizor de cloud?
Sebastian avatar
drapel ru
@MikolajS. Am folosit de la un furnizor de cloud. Au tutorial pentru configurarea inițială a K8-urilor cu Ansible și Terraform, dar nu au serviciul LB. În ceea ce privește versiunea, aceasta este v1.21
Mikolaj S. avatar
drapel cn
Aveți un nod IP pregătit și doriți să scrieți un nume de domeniu - dacă da, ar trebui să o faceți în afara kubernetes - depinde de procider - de exemplu [Amazon Route 53](https://aws.amazon.com/route53/) .
Wytrzymały Wiktor avatar
drapel it
Salut @Sebastian. Orice actualizari?
Sebastian avatar
drapel ru
@WytrzymaÅyWiktor, nimic interesant, de fapt. Pentru ca acesta să funcționeze, am configurat un tunel Cloudflare (aka Argo Tunnel) care direcționează traficul prin controlerul de intrare. Tunelul trebuie menținut în viață, așa că am făcut tunelul să ruleze printr-o instanță VM în cloud. Acum, problema este că îmi pot accesa numele de gazdă DNS, dar nu pot împiedica accesul direct la IP.
kkopczak avatar
drapel ng
Dacă ați făcut-o să funcționeze, luați în considerare adăugarea soluției dvs. ca răspuns și creați o nouă întrebare cu problema curentă.
Puncte:1
drapel ru

Am făcut acest lucru creând un tunel Cloudflare (numit anterior Argo Tunnel). O documentație completă de configurare a tunelului poate fi găsită Aici. Sper că cineva cu o problemă similară va găsi acest lucru util.

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.