如何解决通过 kuberenetes 的负载均衡 IP 访问 Kubernetes 容器中的自托管 net.tcp wcf
我使用 net.tcp 绑定控制台应用程序自行托管了一个 .NET framework 4.x 版本的 WCF,该应用程序在 Azure k8s contianer 中运行,作为自托管 wcf 服务
暴露为 net.tcp://CONTAINERIP:5000/WCFServiceName
并且端口 5000 通过 Loadbalancer 类型的入口服务公开
所以客户端将像下面一样访问这个服务
net.tcp://LoadBalancerIP:5000/containerAppName/WCFServiceName
但使用负载均衡器 ip 不会将请求转发到容器 - 出现错误。
'没有端点侦听 net.tcp://LoadBalancerIp:5000/ContainerAppName/WCFServiceName 可以接受消息。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。'
LB Yaml
spec:
clusterIP: IP.ADDRESS.OF.CLUSTER
externalTrafficPolicy: Cluster
ports:
- name: nettcp
nodePort: 30412
port: 5000
protocol: TCP
targetPort: 5000
selector:
app: CONTAINERAPPNAME
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: LB.PUBLIC.IP.ADDRESS
任何想法或建议??
解决方法
感谢您的投入,
找到问题原因,由于应用是使用LoadBalancer类型的服务部署的,所以不需要在URL中提供应用名称。
当外界访问服务时:
net.tcp://LoadBalancerIP:5000/containerAppName/WCFServiceName - 行不通
net.tcp://LoadBalancerIP:5000/WCFServiceName - 这有效!!! (解决方案)
或
当我们进行自托管时,我们需要在 URI 框架中包含应用名称以托管 WCF TCP 服务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。