Я воспроизвел аналогичный сценарий в своей системе minikube, и это решение работает, как описано. Я расскажу вам о настройке и о том, как устранить эту проблему.
У меня есть Linux-сервер (имя хоста http-server), и я установил на нем http-сервер (apache2), который обслуживает сообщение hello world:
user@http-server:~$ netstat -tan | grep ::80
tcp6 0 0 :::80 :::* LISTEN
user@minikube-server:~$ curl 10.128.15.209
Hello World!
Теперь, когда мы подтвердили, что моя служба доступна с машины, на которой у меня установлен minikube, давайте подключимся к виртуальной машине minikube и проверим, могу ли я получить доступ к этой http-службе:
user@minikube-server:~$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ curl 10.128.15.209
Hello World!
Большой! Выглядит хорошо. Если вы не можете получить здесь доступ к своей службе, вам необходимо проверить свою сеть, что-то мешает вашему серверу minikube взаимодействовать с вашей службой.
Теперь давайте выйдем из этого minikube ssh и создадим нашу конечную точку:
Мой манифест конечной точки выглядит так:
apiVersion: v1
kind: Endpoints
metadata:
name: http-server
subsets:
- addresses:
- ip: 10.128.15.209
ports:
- port: 80
user@minikube-server:~$ kubectl apply -f http-server-endpoint.yaml
endpoints/http-server configured
Создадим наш сервис:
apiVersion: v1
kind: Service
metadata:
name: http-server
spec:
ports:
- port: 80
targetPort: 80
user@minikube-server:~$ kubectl apply -f http-server-service.yaml
service/http-server created
Проверяем, существует ли наш сервис, и сохраняем его clusterIP для использования письма:
user@minikube-server:~$$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
http-server ClusterIP 10.96.228.220 <none> 80/TCP 30m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d
Теперь пора проверить, можем ли мы получить доступ к нашему сервису из модуля:
kubectl run ubuntu -it --rm=true --restart=Never --image=ubuntu bash
Эта команда создаст и откроет сеанс bash внутри модуля ubuntu.
В моем случае я установлю curl, чтобы проверить, могу ли я получить доступ к своему http-серверу. Вам может потребоваться установить mysql:
root@ubuntu:/# apt update; apt install -y curl
Проверка связи с моей службой с помощью clusterIP:
root@ubuntu:/# curl 10.128.15.209:80
Hello World!
И, наконец, используя имя службы (DNS):
root@ubuntu:/# curl http-server
Hello World!
Пожалуйста, выполните все эти шаги и дайте мне знать, если у вас возникнут проблемы с какими-либо и где.
20.03.2020