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

标签 azure kubernetes azure-aks wcf-binding nettcpbinding

我使用 net.tcp 绑定(bind)控制台应用程序自行托管了 .NET Framework 4.x 版本的 WCF,该应用程序作为自托管 WCF 服务在 Azure k8s 容器中运行

暴露为net.tcp://CONTAINERIP:5000/WCFServiceName

并且端口 5000 通过负载均衡器类型入口服务公开

因此客户端将像下面一样访问此服务

net.tcp://LoadBalancerIP:5000/containerAppName/WCFServiceName

但是使用负载均衡器 IP 不会将请求转发到容器 - 出现错误。

'net.tcp://LoadBalancerIp:5000/ContainerAppName/WCFServiceName 上没有监听端点可以接受该消息。这通常是由不正确的地址或 SOAP 操作引起的。有关详细信息,请参阅 InnerException(如果存在)。'

LBYaml

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中提供APP Name。

当外界访问该服务时:

net.tcp://LoadBalancerIP:5000/containerAppName/WCFServiceName - 不起作用

net.tcp://LoadBalancerIP:5000/WCFServiceName - 这有效! (解决方案)

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

关于azure - Kubernetes 容器中的自托管 net.tcp wcf 通过 kubernetes 的负载均衡器 IP 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66569971/

相关文章:

kubernetes - 如何根据Kubernetes是否完成某些任务仅终止某些Pod?

azure - Terraform Azure AKS 内部负载均衡器

reactjs - Microsoft.AspNetCore.Authentication.JwtBearer 使用 React.js 模板 (dotnet SDK v7.0.101) 将 Asp.Net Core 部署到 Azure Web App 时出错

.NET 6 Linux 多容器应用程序无法在 Azure 应用服务中建立容器内部通信

docker - 为使用 docker-compose 启动的 Rancher 2.x 的 cert-manager 创建 Issuer

kubernetes - 使用现有设置将 AKS 中的 Pod 公开到 Internet

azure - 终于将 Key Vault 与 AKS 集成...但不清楚我需要做什么,如果之后有任何事情要读入环境变量

c# - .net core Web应用程序并从azure事件中心读取数据

linux - Azure 云初始化 : Failed to install packages

kubernetes - 用户 “system:anonymous”无法在 namespace “kube-system”中代理服务: “No policy matched.\nUnknown user\” system:匿名\“”