【发布时间】:2019-02-09 02:37:28
【问题描述】:
- 在 AWS (EKS) 上创建了 K8s 集群。
- 已创建部署工作负载。
- 使用注释 service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" 创建了服务类型负载均衡器 (应该在 ELB 上启用代理协议)TCP 端口 4334。
所以在我的 pod 中,我无法看到保留客户端 IP 的代理协议。 尝试过数据包嗅探器和 tcpdump,但我看不到客户端 IP 是由协议保留的。
谁能告诉我如何验证代理协议是否保留了客户端 IP?
请参阅下面提到的负载均衡器。它有一个名为“k8s-proxyprotocol-enabled”的策略,应用于实例端口 31431 上的“BackendServerDescriptions”。
我观察到的一件事是,在“ListenerDescriptions”中,例如端口 31431 策略名称为空。要使代理协议按预期工作,是否需要在侦听器描述中的侦听器策略上应用“启用 k8s-proxyprotocol-enabled”?
任何人都可以确认以下配置足以让代理协议保留源 IP 还是必须完成额外的配置?
"LoadBalancerDescriptions": [
{
"Subnets": [
"subnet-1",
"subnet-2",
"subnet-2"
],
"CanonicalHostedZoneNameID": "******",
"CanonicalHostedZoneName": "*************",
"ListenerDescriptions": [
{
"Listener": {
"InstancePort": 31431,
"LoadBalancerPort": 4334,
"Protocol": "TCP",
"InstanceProtocol": "TCP"
},
"PolicyNames": []
}
],
"HealthCheck": {
"HealthyThreshold": 2,
"Interval": 10,
"Target": "TCP:31499",
"Timeout": 5,
"UnhealthyThreshold": 6
},
"VPCId": "vpc-***********",
"BackendServerDescriptions": [
{
"InstancePort": 31431,
"PolicyNames": [
"k8s-proxyprotocol-enabled"
]
}
],
"Instances": [
{
"InstanceId": "i-085ece5ecf"
},
{
"InstanceId": "i-0b4741cf"
},
{
"InstanceId": "i-03aea99"
}
],
"DNSName": "***************************",
"SecurityGroups": [
"sg-********"
],
"Policies": {
"LBCookieStickinessPolicies": [],
"AppCookieStickinessPolicies": [],
"OtherPolicies": [
"k8s-proxyprotocol-enabled"
]
},
"LoadBalancerName": "a1df476de2aa011e9aabe0af927e6700",
"CreatedTime": "2019-02-07T06:18:01.020Z",
"AvailabilityZones": [
"us-east-1a",
"us-east-1b",
"us-east-1c"
],
"Scheme": "internet-facing",
"SourceSecurityGroup": {
"OwnerAlias": "906391276258",
"GroupName": "k8s-elb-a1df476de2aa011e9aabe0af927e6700"
}
}
]
【问题讨论】:
-
出于好奇,我尝试使用命令“set-load-balancer-policies-of-listener --load-balancer-port 4334”将“k8s-proxyprotocl-enabled”添加到侦听器策略中—— policy-names k8s-proxyprotocol-enabled --region us-east-1 抛出此错误:调用 SetLoadBalancerPoliciesOfListener 操作时发生错误(InvalidConfigurationRequest):无法启用 k8s-proxyprotocol-enabled
标签: kubernetes amazon-elb amazon-eks aws-elb