go - 使用 istio 时 Tcp 客户端未连接到服务器
问题描述
我创建了两个示例应用程序(tcp-server 和 tcp-client)来检查 istio 环境中的 TCP 连接。使用以下链接在 g0 中创建服务器和客户端
https://www.linode.com/docs/guides/developing-udp-and-tcp-clients-and-servers-in-go/
在 kubernetes 集群中部署了应用程序并在没有 istio 的情况下进行了测试,它工作正常。
但是安装了 istio(demo 配置,按照这个 url 安装 istio:https ://istio.io/latest/docs/setup/getting-started/ ),并重新部署应用程序填充 envoy-proxy 后,客户端没有连接到服务器
同样使用以下命令使服务器连接成功
sh -c "echo world | nc 10.244.1.29 1234" is
我究竟做错了什么?
解决方案
发布我找到的解决方案。
问题:我试图使用 ip 地址和 nodePort 连接到服务器,这在 istio 环境中无法正常工作
解决方案:从客户端而不是提供服务器节点的ip地址和nodePort,而是提供服务器应用程序的服务名称和容器端口。
额外信息:为了使用来自外部集群的客户端,为服务器创建网关和虚拟服务。在您的外部客户端中,提供 istio-ingress pod 的 nodePort 和 ip 地址作为服务器目标
推荐阅读
- node.js - 这个快速应用程序中的回调来自哪里?
- google-bigquery - 根据先前的查询从表中选择列
- wordpress - 重置帐户后,woocommerce 在同一页面中重定向
- c - 从输入文件中读取并将单词存储到数组中
- java - 如何解决在 Android Studio 2.2 上使用记录为 @since 1.8+ 错误的 API 的问题?
- kotlin - org.gradle.api.GradleException:编译错误
- node.js - Express JS - 正则表达式 - 除了
- r - 在R中从向量移动到矩阵
- php - Nginx:使用来自 x_custom_header 的值修改 http_host 标头
- xml - 如何在 SSIS 中使用 C# 或 VB.Net 脚本任务从 URL 下载 XML 文件