У меня есть две службы (клиентская и серверная), оба типа балансировщика нагрузки. Я хотел бы, чтобы клиентская служба разговаривала с серверной службой. Как это сделать программно (через файл yaml и т. Д.).
Более конкретно, клиент запускает код Python, в котором ему нужен доступ к внешнему IP-адресу сервера. Однако я знаю только имя службы сервера, а не внешний IP-адрес.
Конечно, один из способов решить эту проблему - сначала запустить сервер, получить внешний IP-адрес и добавить его в файл yaml клиента. Я ищу решение, такое как доступ к внешнему IP-адресу, просто зная имя службы.
Клиент и сервер находятся в одном кластере кубернетов.
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