Sobes.tech
Middle

Kas üks nimede ruumi rakendus näeb teise nimede ruumi rakendust klastris?

sobes.tech AI

Vastus AI-lt

Jah, erinevates nimelahendustes olevad rakendused võivad klastris üksteist näha.

Kubernetes'i nimelahendused (namespace) on loogilised isolatsioonid, mis aitavad ressursse korraldada. Need ei ole vaikimisi võrguisolatsioonid.

Võrguvaheline suhtlus nimelahenduste vahel on võimalik DNS Kubernetes'i teenuste kaudu.

Rakendus namespace-a saab pöörduda teenuse nimega my-service namespace-b kaudu, kasutades selle täielikku domeeninime (Fully Qualified Domain Name - FQDN):

<teenuse-nimi>.<nimelahenduse-nimi>.svc.cluster.local

Näide: my-service.namespace-b.svc.cluster.local

Samuti saab kasutada lühendatud nime, kui DNS klastris on see õigesti seadistatud, kuid FQDN on alati usaldusväärsem nimelahendustevahelise suhtluse jaoks.

# Näide teenusest namespace-b
apiVersion: v1
kind: Service
metadata:
  name: my-service # Teenuse nimi
  namespace: namespace-b # Nimelahenduse nimi
spec:
  selector:
    app: my-app # Valija podidele, millele teenus viitab
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# Näide Pod-ist nimelahenduses, mis pöördub teenuse poole teises nimelahenduses
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # Pod-i tarbija nimelahendus
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Teenuse aadress teises nimelahenduses

Oluline on märkida, et võrgu turvapoliitikad (Network Policies) võivad olla kasutusel, et piirata suhtlust nimelahenduste vahel. Vaikimisi, kui selliseid poliitikaid ei ole, on suhtlus lubatud.

Võrgu poliitikad määratlevad podide grupid, mis võivad omavahel suhelda, lähtudes nende nimelahendustest ja märgenditest.