Sobes.tech
Middle

Czy aplikacja z jednej przestrzeni nazw może zobaczyć aplikację z innej przestrzeni nazw w klastrze?

sobes.tech AI

Odpowiedź od AI

Tak, aplikacje w różnych przestrzeniach nazw mogą się nawzajem widzieć w ramach klastra.

W Kubernetes, przestrzenie nazw to logiczne izolacje, które pomagają organizować zasoby. Nie są one domyślnie izolacją sieciową.

Interakcja między przestrzeniami nazw jest możliwa przez usługi DNS Kubernetes.

Aplikacja w namespace-a może uzyskać dostęp do usługi o nazwie my-service w namespace-b za pomocą jej pełnej nazwy domenowej (FQDN):

<nazwa-usługi>.<nazwa-przestrzeni-nazw>.svc.cluster.local

Przykład: my-service.namespace-b.svc.cluster.local

Można również użyć skróconej nazwy, jeśli DNS w klastrze jest odpowiednio skonfigurowany, ale FQDN jest zawsze bardziej niezawodny dla komunikacji między przestrzeniami nazw.

# Przykład usługi w namespace-b
apiVersion: v1
kind: Service
metadata:
  name: my-service # Nazwa usługi
  namespace: namespace-b # Przestrzeń nazw usługi
spec:
  selector:
    app: my-app # Selektor dla podów, do których kierowana jest usługa
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# Przykład poda w namespace-a, odwołującego się do usługi w namespace-b
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # Przestrzeń nazw poda konsumenta
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Adres usługi w innym namespace

Ważne jest, aby zauważyć, że polityki sieciowe (Network Policies) mogą być używane do ograniczenia interakcji między przestrzeniami nazw. Domyślnie, jeśli nie ma takich polityk, interakcja jest dozwolona.

Polityki sieciowe definiują grupy podów, które mogą się ze sobą komunikować, na podstawie ich przestrzeni nazw i etykiet.