【问题标题】:Self hosted net.tcp wcf in a Kubernetes container access via Loadbalance IP of kuberenetes通过 kubernetes 的负载均衡器 IP 在 Kubernetes 容器中自托管 net.tcp wcf 访问
【发布时间】:2021-06-08 16:54:20
【问题描述】:

我已经自托管了一个带有 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

有什么想法或建议吗??

【问题讨论】:

  • 我建议发布负载均衡器 yaml。
  • @mmking 添加了 lb yaml
  • 这个WCF服务可以正常访问吗?我的意思是WCF能否正常运行。
  • 是的,我确实尝试在容器内调用容器 IP 主机 URL - 我可以创建代理通道以在容器内使用它。但是当尝试使用负载均衡器 IP 创建代理时,它无法获得肥皂动作
  • 那么这应该是 Kuberenetes 问题。

标签: azure kubernetes azure-aks wcf-binding nettcpbinding


【解决方案1】:

谢谢大家的意见,

找到问题的原因,由于应用是使用LoadBalancer类型的服务部署的,所以不需要在URL中提供APP名称。

当外界访问服务时:

net.tcp://LoadBalancerIP:5000/containerAppName/WCFServiceName - 不会工作

net.tcp://LoadBalancerIP:5000/WCFServiceName - 这行得通!!! (解决方案)

当我们进行自托管时,我们需要在 URI 框架中包含应用名称以托管 WCF TCP 服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2020-01-30
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2023-03-16
    相关资源
    最近更新 更多