Для тестирования я создал Kubernetes на одном узле с помощью Virtualbox.
Я создал один Pod для прослушивания через порт 4646, затем я создал LoadBalancer для этого Pod.
Файл Yaml для Pod:
apiVersion: v1
kind: Pod
metadata:
name: simple-app
labels:
app: simple-app
spec:
containers:
...
name: test-flask-app
ports:
- containerPort: 4646
Файл Yaml для LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: simple-app-lb
spec:
type: LoadBalancer
ports:
- port: 88
protocol: TCP
targetPort: 4646
selector:
app: simple-app
Вывод команды kubectl get nodes -o wide
:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
server Ready master 20h v1.14.1 10.0.2.8 <none> Ubuntu 18.04.2 LTS 4.15.0-48-generic docker://18.6.2
Вывод команды kubectl get all
NAME READY STATUS RESTARTS AGE
pod/simple-app 1/1 Running 5 20h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20h
service/simple-app-lb LoadBalancer 10.98.241.39 <pending> 88:32319/TCP 20h
На другой виртуальной машине, расположенной в той же сети, я хотел бы получить доступ к LoadBalancer по IP-адресу машины с Kubernetes и по порту 88. Если я запускаю следующую команду, я получаю вывод ниже:
sergey@server2:~$ curl 10.0.2.8:88
curl: (7) Failed to connect to 10.0.2.8 port 88: connection refused
Но если я использую порт 32319, я получаю доступ:
sergey@server2:~$ curl 10.0.2.8:32319
{"msg":"superuser, Hello from GeoServer"}
Также я могу получить доступ, если я нахожусь на машине с Kubernetes:
sergey@server:~$ curl 10.98.241.39:88
{"msg":"superuser, Hello from GeoServer"}
По каким причинам я не могу получить доступ по ВНЕШНЕМУ IP и ПОРТУ?