Sobes.tech
Middle

Poate o aplicație dintr-un spațiu de nume să vadă o aplicație din alt spațiu de nume din cadrul clusterului?

sobes.tech AI

Răspuns de la AI

Da, aplicațiile din diferite namespace-uri pot vedea una pe cealaltă în interiorul clusterului.

În Kubernetes, namespace-urile sunt izolări logice care ajută la organizarea resurselor. Ele nu sunt o izolare de rețea implicită.

Interacțiunea între namespace-uri este posibilă prin serviciile DNS ale Kubernetes.

O aplicație din namespace-a poate accesa un serviciu numit my-service în namespace-b folosind numele său de domeniu complet (FQDN):

<numele-serviciului>.<numele-namespace-ului>.svc.cluster.local

Exemplu: my-service.namespace-b.svc.cluster.local

De asemenea, se poate folosi un nume scurt dacă DNS-ul din cluster este configurat corespunzător, dar FQDN-ul este întotdeauna mai fiabil pentru interacțiunea între namespace-uri.

# Exemplu de Service în namespace-b
apiVersion: v1
kind: Service
metadata:
  name: my-service # Numele serviciului
  namespace: namespace-b # Namespace-ul serviciului
spec:
  selector:
    app: my-app # Selector pentru podurile către care se îndreaptă serviciul
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# Exemplu de Pod în namespace-a, care accesează un serviciu în namespace-b
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # Namespace-ul podului consumator
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Adresa serviciului în alt namespace

Este important de menționat că politicile de rețea (Network Policies) pot fi utilizate pentru a restricționa interacțiunea între namespace-uri. În mod implicit, dacă astfel de politici nu sunt prezente, interacțiunea este permisă.

Politicile de rețea definesc grupuri de poduri care pot interacționa între ele, pe baza namespace-urilor și etichetelor lor.