azure 如何禁用AKS LoadBalancer的端口探测?

lc8prwob  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(153)

我正在尝试在Azure AKS中部署ftp服务器映像。为了向公众公开服务器,我添加了类型为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服务器不侦听数据端口。这些端口将“按需”打开。
如何禁用数据端口的运行状况检查?

kmbjn2e3

kmbjn2e31#

此外,您不能禁用健康检查,但您可以使它们与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”部分

kxkpmulp

kxkpmulp2#

这是不可能的.你可以去手动切换那些监听器使用探测器这是扫描端口21.但看看代码它可能会修改你的手动更改下一个服务更新
您可以检查所有可用的注解:https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/azure/azure_loadbalancer.go

相关问题