我正在尝试在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服务器不侦听数据端口。这些端口将“按需”打开。
如何禁用数据端口的运行状况检查?
答案 0 :(得分:2)
AFAIK,您不能禁用运行状况检查,但是可以使它们与FTP服务器一起使用。
像这样修改您的配置:
[...]
spec:
loadBalancerIP: 168.63.x.x
type: LoadBalancer
healthCheckNodePort: 30021
externalTrafficPolicy: Local
ports: [...]
因此,您需要将healthCheckNodePort
设置为Legal nodePort范围内的端口,并将externalTrafficPolicy
设置为Local
。
这将使服务打开一个nodePort,并且LoadBalancer现在仅检查该端口以确定可用性。缺点是您的运行状况检查现在仅检查节点是否已启动,而不检查ftp服务是否正在运行。
为此,您必须将externalTrafficPolicy设置为Local。这意味着容器将实际的客户端源ip视为流量源,而不是内部的kubernetes源。相应地调整任何服务设置。但是,对于FTP来说,这是理想的,因为它允许服务器检查与原始控制连接相同的客户端进行的被动数据连接尝试。
请参见https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/,“保留客户端源IP”部分
答案 1 :(得分:1)
那是不可能的。您可以手动切换这些侦听器以使用扫描端口21的探针,但是查看代码可能会修改您在下一次服务更新时进行的手动更改
您可以检查所有可用的注释:https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/azure/azure_loadbalancer.go