Amazon web services 当externalTrafficPolicy设置为Local时,Kubernetes在使用AWS网络负载平衡器时默认进行http运行状况检查
我正在尝试为Kubernetes集群上运行的服务设置AWS NLB,并对后端服务进行TCP健康检查。当externalTrafficPolicy设置为Local时,Kubernetes总是倾向于为任何服务创建HTTP运行状况检查,并且仅在设置为集群时创建TCP运行状况检查Amazon web services 当externalTrafficPolicy设置为Local时,Kubernetes在使用AWS网络负载平衡器时默认进行http运行状况检查,amazon-web-services,kubernetes,aws-load-balancer,Amazon Web Services,Kubernetes,Aws Load Balancer,我正在尝试为Kubernetes集群上运行的服务设置AWS NLB,并对后端服务进行TCP健康检查。当externalTrafficPolicy设置为Local时,Kubernetes总是倾向于为任何服务创建HTTP运行状况检查,并且仅在设置为集群时创建TCP运行状况检查 .metadata.annotations.service.beta.kubernetes.io/aws-load-balancer-type: "nlb" .metadata.annotations.service.beta
.metadata.annotations.service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
.metadata.annotations.service.beta.kubernetes.io/aws-load-balancer-internal: "true"
.metadata.annotations.service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
.spec.ports.protocol: TCP
.spec.externalTrafficPolicy : **Cluster/Local**
只有当我将externalTrafficPolicy从本地切换到集群时,我才能为目标组设置TCP健康检查,否则它倾向于在/healthz上设置HTTP检查,这对我来说是失败的
我试图通过kubeproxy和cluster externalTrafficPolicy避免额外的负载平衡,这可能会创建跨节点边界的跃点
有什么我遗漏的吗?你说“否则它会在/healthz上设置HTTP检查,这对我来说会失败”,你所说的“这对我来说会失败”@mWatney我的服务不是HTTP,而是TCP,所以任何使用HTTP的NLB健康检查都会失败。下面是我的部署<代码>规范:端口:-端口:8888名称:端口-1目标端口:8888协议:TCP请注意(使用externaltrafficpolicy local时)nodePort和healthCheckNodePort是不同的(
kubectl get svc-oyaml
)nodePort用于与应用程序通信,healthCheckNodePort被NLB用作healthcheck端点。请检查是否可以手动访问healthCheckNodePort(curl:/healthz
)。