У меня есть служба 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) такое же, он создает только одну запись в пуле и направляет запросы к этому backend и один порт, который регистрируется в политике F5. можно ли это исправить? Обходной путь — создать уникальную службу для каждого порта, но я не хочу вносить это изменение, возможно ли это на уровне F5?