Kubernetes, Невозможно получить доступ к открытым службам - PullRequest
0 голосов
/ 12 июня 2018

Версия Kubernetes: v1.10.3

Версия Docker: 17.03.2-ce

Операционная система и ядро: Centos 7

Шаги для воспроизведения: https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

Результаты:

[root @ rd07 rd] #kubectl description services example-service

Имя: example-service
Пространство имен: по умолчанию
Метки: run = пример балансировки нагрузки
Аннотации:
Селектор: run = балансировщик нагрузки-пример
Тип: NodePort
IP: 10.108.214.162
Порт: 9090 / TCP
TargetPort: 9090 / TCP
NodePort: 31105 / TCP
Конечные точки: 192.168.1.23:9090, 192.168.1.24: 9090
Сходство сессий: нет
Политика внешнего трафика: кластер
События:

Ожидается:

Ожидаетсячтобы иметь возможность свернуть ip кластера, определенный в сервисе kubernetes

Я не совсем уверен, что это так называемый "public-node-ip", поэтому я пробовал каждый связанный IP-адрес, только при использованиимастер IP как«public-node-ip» показывает «Нет маршрута к хосту».

Я использовал «netstat», чтобы проверить, прослушивается ли конечная точка.

Я пытался »https://github.com/rancher/rancher/issues/6139" очистить мои iptables, и он вообще не работал.

Я пытался "https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/"," nslookup hostnames.default "не работает.

Службы, кажется, работают отличнохорошо, но к сервисам по-прежнему нельзя получить доступ.

Я использую "calico", и "фланелевые" также были опробованы.

Я пробовал так много учебных пособий по прикладным сервисам, что все они не могутбыть доступным.

Я новичок в kubernetes, плз, если кто-нибудь может мне помочь.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Мой кластер k8s - это 1 мастер и 1 узел.
Сервисный модуль работает на этом узле.
Поэтому я использовал http://nodeip:31105,, он показывает «Здравствуйте, Kubernetes!».
Но http://masterip:31105 все еще не работает, это должно быть правильно?
Я проверил прослушивание конечной точки, 31105 прослушивается на мастере.

0 голосов
/ 12 июня 2018

Если вы находитесь в каком-либо общедоступном облаке, вы не должны получать публичный IP-адрес по команде ip a.Но даже если порт будет выставлен на 0.0.0.0:31105

Вот пример файла, который вы можете проверить для своей конфигурации:

apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: app-name
  name: bss
  namespace: default
spec:
  externalIPs:
  - 172.16.2.2
  - 172.16.2.3
  - 172.16.2.4
  externalTrafficPolicy: Cluster
  ports:
  - port: 9090
    protocol: TCP
    targetPort: 9090
  selector:
    k8s-app: bss
  sessionAffinity: ClientIP
  type: LoadBalancer
status:
  loadBalancer: {}

Просто замените <private-ip> на externalIPs: исверните ваш публичный ip с портом вашего узла.

Если вы используете какое-либо облако для развертывания приложения, также проверьте конфигурацию из облачных групп безопасности / брандмауэра для открытия порта.

Надеюсь, это может помочь.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...