Служба 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 во втором случае, а в первом - нет.