Как отключить датчики портов для AKS LoadBalancer? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь развернуть образ ftp-сервера в Azure AKS. Чтобы выставить сервер на всеобщее обозрение, я добавил службу типа LoadBalancer.

apiVersion: v1
kind: Service
metadata:
  name: test-import-ftp
  namespace: staging
spec:
  loadBalancerIP: 168.63.x.x
  type: LoadBalancer
  ports:
  - port: 21
    name: ftp-control
    targetPort: 21
  - port: 50000
    name: ftp-data-0
  - port: 50001
    name: ftp-data-1
  - port: 50002
    name: ftp-data-2
  - port: 50003
    name: ftp-data-3
  - port: 50004
    name: ftp-data-4
  - port: 50005
    name: ftp-data-5
  - port: 50006
    name: ftp-data-6
  - port: 50007
    name: ftp-data-7
  - port: 50008
    name: ftp-data-8
  - port: 50009
    name: ftp-data-9 
  selector:
    app: test-import-ftp

Работает нормально для порта управления, но не для портов данных. Причина в том, что он настраивает зонды для всех портов, а серверы ftp не прослушивают порты данных. Эти порты будут открыты «по запросу».

Как отключить проверки работоспособности портов данных?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

AFAIK, вы не можете отключить проверки работоспособности, но можете заставить их работать с FTP-серверами.

Адаптируйте свою конфигурацию так:

[...]
spec:
  loadBalancerIP: 168.63.x.x
  type: LoadBalancer
  healthCheckNodePort: 30021
  externalTrafficPolicy: Local
  ports: [...]

Итак, вам нужно установить healthCheckNodePort для порта в допустимом диапазоне nodePort и установить externalTrafficPolicy в Local.

Это заставит сервис открывать nodePort, и теперь LoadBalancer будет проверять только этот порт для определения доступности. Недостатком является то, что ваша проверка работоспособности теперь только проверяет, работает ли узел, а не работает ли служба ftp.

Чтобы это работало, вы ДОЛЖНЫ установить для externalTrafficPolicy значение Local. Это означает, что контейнер будет видеть фактический ip источника клиента как источник трафика, а не внутренний источник kubernetes. Измените любые настройки вашего сервиса соответственно. Однако для FTP это желательно, поскольку он позволяет серверу проверять, что попытка пассивного подключения к данным выполняется тем же клиентом, что и исходное управляющее подключение.

См. https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/, раздел «Сохранение исходного IP-адреса клиента»

0 голосов
/ 18 января 2019

это невозможно. вы можете перейти и вручную переключить этих слушателей на использование зонда, который сканирует порт 21. Но, глядя на код, он может изменить ваши ручные изменения при следующем обновлении службы

Вы можете проверить все доступные аннотации: https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/azure/azure_loadbalancer.go

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...