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.