У меня есть сценарий, в котором мне нужно запустить два экземпляра контейнера приложения в одном модуле. Я настроил их для прослушивания на разных портах. Ниже показано, как выглядит манифест развертывания. Pod отлично запускается с ожидаемым количеством контейнеров. Я даже могу подключиться к обоим портам на podIP из других модулей.
kind: Deployment
metadata:
labels:
service: app1-service
name: app1-dep
namespace: exp
spec:
template:
spec:
contianers:
- image: app1:1.20
name: app1
ports:
- containerPort: 9000
protocol: TCP
- image: app1:1.20
name: app1-s1
ports:
- containerPort: 9001
protocol: TCP
Я даже могу создать две разные службы, по одной для каждого порта контейнера, и это тоже отлично работает. Я могу индивидуально связаться с обеими службами и попасть в соответствующий контейнер внутри модуля.
apiVersion: v1
kind: Service
metadata:
name: app1
namespace: exp
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 9000
selector:
service: app1-service
sessionAffinity: None
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: app1-s1
namespace: exp
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 9001
selector:
service: app1-service
sessionAffinity: None
type: ClusterIP
Я хочу, чтобы оба экземпляра контейнера находились за одной службой, которая выполняет циклический перебор между обоими контейнерами. Как я могу этого добиться? Возможно ли это в сфере услуг? Или мне нужно изучить Ingress для чего-то вроде этого?