Я воспроизвел похожий сценарий в моей системе мини-кубов, и это решение работает, как описано. Я проведу вас через настройку и как устранить эту проблему.
У меня есть linux сервер (имя хоста http-сервер), и я установил на него 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 и проверить, могу ли я получить доступ к этой службе http:
user@minikube-server:~$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ curl 10.128.15.209
Hello World!
Отлично! Это выглядит хорошо. Если вы не можете получить доступ к своему сервису здесь, вы должны проверить свою сеть, что-то мешает вашему серверу minikube взаимодействовать с вашим сервисом.
Теперь давайте выйдем из этого мини-куба s sh и создадим нашу конечную точку:
Мой манифест конечной точки выглядит следующим образом:
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!
Пожалуйста, выполните все эти шаги и дайте мне знать, если у вас возникли проблемы с любым из них и где.