Ar vieno vardo srities programa gali matyti kito vardo srities programą klasteryje?
sobes.tech AI
Atsakymas iš AI
Taip, skirtingų vardų erdvėse esančios programėlės gali matyti viena kitą klasteryje.
Kubernetes vardų erdvės (namespace) yra loginės izoliacijos, kurios padeda tvarkyti išteklius. Jos nėra numatytoji tinklo izoliacija.
Sąveika tarp vardų erdvių yra įmanoma per DNS Kubernetes paslaugas.
Programėlė namespace-a gali kreiptis į paslaugą, pavadintą my-service namespace-b, naudodama jos pilną domeno vardą (Fully Qualified Domain Name - FQDN):
<paslaugos-vardas>.<vardų-erdvės-vardas>.svc.cluster.local
Pavyzdys: my-service.namespace-b.svc.cluster.local
Taip pat galima naudoti sutrumpintą vardą, jei DNS klasteryje jis yra tinkamai sukonfigūruotas, tačiau FQDN visada yra patikimesnis tarpvardų erdvės sąveikai.
# Pavyzdys paslaugos namespace-b
apiVersion: v1
kind: Service
metadata:
name: my-service # Paslaugos vardas
namespace: namespace-b # Vardų erdvės vardas
spec:
selector:
app: my-app # Pasirinkiklis podams, į kuriuos kreipiasi paslauga
ports:
- protocol: TCP
port: 80
targetPort: 8080
# Pavyzdys Pod namespace-a, kuris kreipiasi į paslaugą namespace-b
apiVersion: v1
kind: Pod
metadata:
name: consumer-pod
namespace: namespace-a # Vardų erdvės pirkėjo
spec:
containers:
- name: consumer-container
image: my-consumer-image
command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Paslaugos adresas kitoje vardų erdvėje
Svarbu pažymėti, kad tinklo saugumo politikos (Network Policies) gali būti naudojamos riboti sąveiką tarp vardų erdvių. Numatyta, jei nėra tokių politikų, sąveika yra leidžiama.
Tinklo politikos apibrėžia podų grupes, kurios gali sąveikauti tarpusavyje, remiantis jų vardų erdvėmis ir žymomis.