我正在尝试在Kubernetes中通过网络负载平衡器部署服务。我知道目前这是一个Alpha功能,但我正在运行一些测试。我有一个可以正常工作的部署定义。我的服务定义没有nlb注释,看起来像这样,并且运行良好:
kind: Service
apiVersion: v1
metadata:
name: service1
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
spec:
type: LoadBalancer
selector:
app: some-app
ports:
- port: 80
protocol: TCP
但是,当我切换到NLB时,即使负载平衡器已“正确”创建和配置,AWS目标组中的目标也始终显示为不正常,并且我无法通过HTTP访问该服务。这是服务定义:
kind: Service
apiVersion: v1
metadata:
name: service1
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
type: LoadBalancer
selector:
app: some-app
ports:
- port: 80
protocol: TCP
externalTrafficPolicy: Local
最佳答案
由于NLB转发了客户端IP,因此k8s节点安全组中似乎缺少一条规则。
关于amazon-web-services - 我的kubernetes AWS NLB集成无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49523856/