Почему я не могу получить доступ к модулю Kubernetes с IP-адреса другого узла? - PullRequest
0 голосов
/ 14 июля 2020

Я установил кластер kubernetes с помощью Kubespray. Кластер с 3 узлами (2 мастера и 1 рабочий). node1 - 10.1.10.110, node2 - 10.1.10.111, node3 - 10.1.10.112

$ kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   12d   v1.18.5
node2   Ready    master   12d   v1.18.5
node3   Ready    <none>   12d   v1.18.5

Я развернул этот модуль в node1 (10.1.10.110) и предоставил службу nodeport, как показано.

NAMESPACE     NAME                                              READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES

default       pod/httpd-deployment-598596ddfc-n56jq             1/1     Running   0          7d21h   10.233.64.15   node1   <none>           <none>
---
NAMESPACE     NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE     SELECTOR

default       service/httpd-service               NodePort    10.233.16.84    <none>        80:31520/TCP             12d     app=httpd

Описание службы

$ kubectl describe services -n default httpd-service
Name:                     httpd-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=httpd
Type:                     NodePort
IP:                       10.233.16.84
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31520/TCP
Endpoints:                10.233.64.15:80
Session Affinity:         None
External Traffic Policy:  Cluster

Вопрос: Я могу получить доступ к службе с узла node1: 31520 (где фактически развернут модуль), но не могу получить доступ к той же службе с других узлов (узел2: 31520 (или) node3: 31520)

$curl http://10.1.10.110:31520
<html><body><h1>It Works!</h1></body></html>

but if I curl with other node IP, timed out response

$curl http://10.1.10.111:31520
curl (7): Failed connect to 10.1.10.111; Connection timed out

$curl http://10.1.10.112:31520
curl (7): Failed connect to 10.1.10.112; Connection timed out

Может ли кто-нибудь подсказать, что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 14 июля 2020

Поскольку у вас есть только один модуль на 10.1.10.110

Ваш curl неправильный, вы не развернули модуль на узлах 111 и 112, это причина того, что конечные точки не работают. Просто выполните curl http://10.1.10.110:31520 на других узлах, и он будет работать

0 голосов
/ 14 июля 2020

В идеале вы должны иметь возможность получить доступ к модулю через NodePort, используя любой IP-адрес узла. Если kube-proxy или подключаемый модуль CNI (calico et c) не работают должным образом в вашем кластере, это может вызвать проблему, когда модуль недоступен через IP-адрес узла, на котором модуль не запланирован.

Отметьте этот связанный вопрос kubernetes: нет доступа к NodePort с других машин

...