Для этого вы можете создать конечную точку .
Давайте go на примере:
В этом примере у меня в сети есть http-сервер с IP 10.128.15.209
, и я хочу, чтобы он был доступен из моих модулей в моем Kubernetes Кластер.
Прежде всего, нужно создать конечную точку. Это позволит мне создать службу, указывающую на эту конечную точку, которая будет перенаправлять трафик c на мой внешний http-сервер.
Мой манифест конечной точки выглядит следующим образом:
apiVersion: v1
kind: Endpoints
metadata:
name: http-server
subsets:
- addresses:
- ip: 10.128.15.209
ports:
- port: 80
$ 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
$ 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!
Итак, в вашем конкретном c случае вы должны создать это:
apiVersion: v1
kind: Endpoints
metadata:
name: vm-server
subsets:
- addresses:
- ip: 10.22.0.1
ports:
- port: 30000
---
apiVersion: v1
kind: Service
metadata:
name: vm-server
spec:
ports:
- port: 30000
targetPort: 30000