Доступ к сервисам Kubernetes через один IP (главный узел) - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть кластерная установка Kubernetes с главным узлом и двумя рабочими узлами на машине centos 7 (в локальной среде).Есть ли способ получить доступ ко всем развернутым службам (встроенным и моим микросервисам), которые будут установлены в Kubernetes, через ip главного узла?

Я использовал фланелевую сеть.Мой сервис работает на порту узла 30011. Я могу получить доступ к своему сервису через ip рабочего узла и порт узла [192.23.12.X1: 30011 и 192.23.12.X2: 30011], но я не могу получить к ним доступслужба из главного узла [192.23.19.21:30011].

Вот мой файл развертывания и службы yaml

deploy.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: am-profile
  labels:
    app: am-profile
spec:
  replicas: 1
  selector:
    matchLabels:
      app: am-profile
  template:
    metadata:
      labels:
        app: am-profile
    spec:
      containers:
      - name: am-profile
        image: 192.23.12.160:8083/am-setting:1.0.0
        ports:
        - containerPort: 8081

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: am-profile
  labels:
    app: am-profile
spec:
  type: NodePort
  ports:
   - targetPort: 8081
     port: 8081
     nodePort: 30011
  selector:
     app: am-profile

Я хочу получить доступ к этой услуге, как http://master -узел: 30011 / привет .Мы ценим любую помощь.

Вот ip table save out put

-A KUBE-NODEPORTS -p tcp -m comment --comment "default/subscriber-profile-service:" -m tcp --dport 30002 -j KUBE-MARK-MASQ 
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/subscriber-profile-service:" -m tcp --dport 30002 -j KUBE-SVC-IUSISESM6NEI4T53 
-A KUBE-SERVICES ! -s 10.244.0.0/16 -d 10.107.113.5/32 -p tcp -m comment --comment "default/subscriber-profile-service: cluster IP" -m tcp --dport 8082 -j KUBE-MARK-MASQ 
-A KUBE-SERVICES -d 10.107.113.5/32 -p tcp -m comment --comment "default/subscriber-profile-service: cluster IP" -m tcp --dport 8082 -j KUBE-SVC-IUSISESM6NEI4T53 [r –

1 Ответ

0 голосов
/ 14 декабря 2018

Если у кластера Kubernetes нет проблем с сетью, вы можете получить доступ к службе NodePort, используя любой узел кластера, включая главные узлы.

По умолчанию kube-proxy pods создают ip-tablesправила для пересылки трафика с NodeIP:NodePort на определенный pod:port.Вы можете проверить существующие правила ip-tables, выполнив следующую команду на каждом узле:

$ sudo iptables-save   
# you may need to install iptables package to use this command
# yum -y install iptables

-A KUBE-NODEPORT ... -j KUBE-SVC-... # shows you port number on the node
-A KUBE-SVC-... -j KUBE-SEP-... # shows you destination rules links and balancing
-A KUBE-SEP-... ... -j DNAT --to-destination <pod-ip:port> # shows you destination for traffic that comes to NodePort

Если все упомянутые правила существуют, проверьте подключение от мастера к узлу:

master-node$> curl http://<pod-ip>:<port>/path-if-needed/

Если проверка не удалась с ошибкой соединения, проверьте следующее:

  • Существуют ли пользовательские правила брандмауэра или firewalld, которые могут отбрасывать трафик?
  • Разрешает ли облачная защита VPC трафикмежду узлами?
  • Правильно ли установлено и работает сетевое решение (фланелевое, ситцевое и т. д.)?
  • Включен ли SELinux?
...