Вход указывает на неправильный порт службы

У меня есть сервис 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?

2 ответа

Из того, что я вижу, у вас нет Selector поле в вашем сервисе. Без этого он не будет пересылать ни одному бэкенду или модулю. Что заставляет вас думать, что он собирается в порт 8888? Что странно, что у вас есть Endpoints к вашим услугам. Вы создали их вручную?

Сервис должен быть примерно таким:

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>

Тогда в вашем определении развертывания:

selector:
  matchLabels:
    app: my-application

Или в стручках:

apiVersion: v1
kind: Pod
metadata:
  annotations: { ... }
  labels:                                
    app: my-application

Вы также должны быть в состоянии описать ваши Endpoints:

$ kubectl describe endpoints m-svc
Name:         m-svc
Namespace:    default
Labels:       app=my-application
Annotations:  <none>
Subsets:
  Addresses:          x.x.x.x
  NotReadyAddresses:  <none>
  Ports:
    Name    Port  Protocol
    ----    ----  --------
    first   8080  TCP
    second  8081  TCP

Events:  <none>

Ваш Service Похоже, что это называется безголовый сервис: https://kubernetes.io/docs/concepts/services-networking/service/. Это объясняет, почему Endpoints был создан автоматически.

Что-то не так, потому что ваш HTTP-запрос не может прийти к вам без пакетов .spec.selector населен.

Я предлагаю удалить Service Вы создали и удалили Endpoints с тем же именем, а затем воссоздать Service с type=ClusterIP и spec.selector правильно заселены.

Другие вопросы по тегам