微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 kuberenetes 的负载均衡 IP 访问 Kubernetes 容器中的自托管 net.tcp wcf

如何解决通过 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 举报,一经查实,本站将立刻删除。