Служба Kubernetes не открывается, когда установлен ClusterIp

У меня есть следующий файл YAML -

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mariadb
  name: mariadb
spec:
  ports:
    - port: 3306
  selector:
    name: mariadb

Когда эта служба создана, ClusterIP устанавливается автоматически. Мой набор состояния "mariadb" выставляется с помощью этого сервиса. Но если я войду в другой модуль в Kubernetes, я не смогу пропинговать этот модуль, используя

ping mariadb-0.mariadb.[namespace].svc.cluster.local

Это также не работает, если ServiceType установлен в "NodePort".

Если я обновлю сервис до

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mariadb
  name: mariadb
spec:
  ports:
    - port: 3306
  clusterIP: None
  selector:
    name: mariadb

Когда я вхожу в другой модуль в Kubernetes, я могу пропинговать этот модуль, используя

ping mariadb-0.mariadb.[namespace].svc.cluster.local

Есть ли какая-то причина, по которой этот внутренний URL-адрес недоступен, если установлен ClusterIP?

1 ответ

Решение

Ключ "clusterIP: нет".

Если clusterIP не установлен, k8s автоматически выделит его для службы, также kube-dns установит доменное имя для службы с именем mariadb.[Namespace].svc.cluster.local, это ваш первый случай.

Хотя если для clusterIP установлено значение "Нет", это означает, что k8s не выделяет ip для службы, в этом случае kube-dns установит доменное имя для каждой конечной точки, на которую указывает служба, во втором случае это MariaDB-0.mariadb.[имена].svc.cluster.local.

Также вы можете установить clusterIP на IP-адрес, в этом случае он такой же, как в первом случае.

Вот почему вы можете пропинговать mariadb-0.mariadb.[Namespace].svc.cluster.local во втором случае, а в первом - нет.

Другие вопросы по тегам