我在AWS上有一个k8s集群,该集群公开了DNS端点。这意味着它需要一个静态IP和端口53 / UDP。我们也将客户端的原始源IP保留到接受请求的k8s服务中。我很难找到执行它的负载均衡器。现在,我公开一个具有其IP的节点。
有什么想法吗?
答案 0 :(得分:0)
目前,没有AWS负载平衡器在AWS内支持UDP-LoadBalancing。
当前有3种AWS负载均衡器类型:
这使您可以选择构建自己的负载均衡器for which NGINX might be an option。如果尝试这种方法,建议您设置多个负载均衡器实例以实现高可用性。然后,可以将带有Multi-Value-Answers的Route 53用作其前面的原始负载均衡器,它也可以进行运行状况检查。在这种情况下,您必须自己处理缩放和类似的事情。
答案 1 :(得分:0)
莫里斯的答案是正确的。
但是,有一种方法可以通过运行t3.nano ec2 linux实例来解决此问题,该实例将为您完成负载平衡。
您有责任自行缩放它,但是在某些情况下它是可行的。
只需将以下内容添加到Userdata(下面的cloudformation YAML示例)
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
service iptables start
iptables -t nat -A PREROUTING -p udp --dport 53 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination ${instance0.PrivateIp}:53
iptables -t nat -A PREROUTING -p udp --dport 53 -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination ${instance1.PrivateIp}:53
iptables -t nat -A PREROUTING -p tcp --dport 53 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination ${instance0.PrivateIp}:53
iptables -t nat -A PREROUTING -p tcp --dport 53 -m state --state NEW -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination ${instance1.PrivateIp}:53
iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE
service iptables save
我希望这会有所帮助,我在统计模块中遇到了一些问题,但是使用--every 2 ==> --every 1可以100%满意,对此解决方案感到满意。
答案 2 :(得分:0)