У меня есть два сервиса (клиент и сервер) обоих типов балансировщика нагрузки. Я хотел бы, чтобы клиентский сервис общался с серверным сервисом. Как это сделать программно (через файл yaml и т. Д.).
Более явно клиент запускает код Python, в котором ему нужен доступ к внешнему IP-адресу сервера. Однако я знаю только имя службы сервера, а не внешний ip.
Конечно, один из способов решения этой проблемы - сначала запустить сервер, получить внешний ip и добавить его в файл yaml клиента. Я ищу решение, как доступ к внешнему IP, просто зная имя службы.
Клиент и сервер находятся в одном кластере kubernetes.
Client.yaml Клиент запускает веб-сервер и, если кто-то нажимает URL, объявленный веб-сервером demo.py
, следует позвонить в службу сервера. Я думал о способе получить сервер external-ip
программно здесь, однако я открыт для предложений.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name:client-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: client
spec:
containers:
- name: client-container
image: client_image:latest
command:
- "python"
- "/root/demo.py"
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
labels:
run: client-service
name: client-service
spec:
ports:
- port: 5000
targetPort: 5000
selector:
app: inception-client
type: LoadBalancer
Server.yaml : он предоставляет службу на порту 9000, которую клиент должен вызвать.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: server
spec:
containers:
- name: server-container
image: server_image:latest
command:
- <Command to start a server which listens on port 9000>
ports:
- containerPort: 9000
---
apiVersion: v1
kind: Service
metadata:
labels:
run: server-service
name: server-service
spec:
ports:
- port: 9000
targetPort: 9000
selector:
app: server
type: LoadBalancer