У меня есть сервис Kubernetes, который предоставляет два порта следующим образом
Name: m-svc
Namespace: m-ns
Labels:
Annotations: <none>
Selector: app=my-application
Type: ClusterIP
IP: 10.233.43.40
Port: first 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.233.115.178:8080,10.233.122.166:8080
Port: second 8888/TCP
TargetPort: 8888/TCP
Endpoints: 10.233.115.178:8888,10.233.122.166:8888
Session Affinity: None
Events: <none>
И вот определение входа:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: f5
virtual-server.f5.com/http-port: "80"
virtual-server.f5.com/ip: controller-default
virtual-server.f5.com/round-robin: round-robin
creationTimestamp: 2018-10-05T18:54:45Z
generation: 2
name: m-ingress
namespace: m-ns
resourceVersion: "39557812"
selfLink: /apis/extensions/v1beta1/namespaces/m-ns
uid: 20241db9-c8d0-11e8-9fac-0050568d4d4a
spec:
rules:
- host: www.myhost.com
http:
paths:
- backend:
serviceName: m-svc
servicePort: 8080
path: /first/path
- backend:
serviceName: m-svc
servicePort: 8080
path: /second/path
status:
loadBalancer:
ingress:
- ip: 172.31.74.89
Но когда я перехожу на www.myhost.com/first/path
, я в конечном итогев службе, которая прослушивает порт 8888
из m-svc
.Что может происходить?
Другая информация состоит в том, что я разделяю службу между двумя входами, которые указывают на разные порты в одной и той же службе, это проблема?Существует другой входной порт порт 8888 для этой службы, который работает нормально
Также я использую контроллер F5
После длительного изучения этого вопроса, похоже, что основная причина вF5s выглядит так, потому что имя бэкэнда (службы Kubernetes) одинаково, оно создает только одну запись в пуле и направляет запросы к этому бэкэнду и одному порту, который регистрируется в политике F5.можно ли это исправить?Обходной путь - создать уникальный сервис для каждого порта, но я не хочу вносить это изменение, возможно ли это на уровне F5?