【问题标题】:How to configure a GKE load balancer for a golang tcp server?如何为 golang tcp 服务器配置 GKE 负载均衡器?
【发布时间】:2019-05-03 00:28:40
【问题描述】:

部署golang服务器容器和gke负载均衡器后,我可以成功连接到负载均衡器的外部ip,但是没有数据到达服务器容器。

当我在本地运行服务器容器并将客户端指向本地主机时,它按预期工作。我将其更改为服务 http 请求,并且它在相同的 kubernetes 清单上运行良好。但是,如果我尝试同时提供 tcp 和 http(在不同的端口上),那么在 gke 上 都不工作 但在本地又可以正常工作。所以我怀疑这可能与我如何配置负载平衡器或我如何在服务器中侦听 tcp 连接在 gke 但不是本地运行时中断某些东西有关。

K8s 服务清单

apiVersion: v1
kind: Service
metadata:
  name: steel-server-service
spec:
  type: LoadBalancer
  selector:
    app: steel-server
  ports:
  - protocol: TCP
    name: tcp
    port: 12345
    targetPort: 12345

K8s 部署清单

apiVersion: apps/v1
kind: Deployment
metadata:
  name: steel-server-deployment
  labels:
    app: steel-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: steel-server
  template:
    metadata:
      labels:
        app: steel-server
    spec:
      containers:
      - name: steel-server
        image: gcr.io/<my-project-id>/steel-server:latest
        ports:
        - containerPort: 12345
          name: tcp

相关 Go TCP 服务器代码

server, err := net.Listen("tcp", ":12345")
if err != nil {
    log.Fatalln("Couldn't start up tcp server: ", err)
}

【问题讨论】:

  • 如果直接向容器发送流量,是否有效?尝试 ssh 到一个节点,运行“sudo toolbox bash”,然后测试与您的 pod 的连接(绕过服务)。收到回复了吗?
  • 另外,您是否使用 Ingres 进行 http?如果是这样,是不同的 nodePort 服务吗?您的容器不应仅仅因为您为 tcp 添加了另一个设备而停止在 http 上提供流量

标签: go tcp kubernetes google-kubernetes-engine


【解决方案1】:

您能否先尝试使用kubectl get svc,以便在您从 GCP 获取外部 IP 为 type:loadbalancer 时了解哪些端口已使用负载均衡器打开。

apiVersion: v1
kind: Service
metadata:
  name: steel-server-service
spec:
  type: LoadBalancer
  selector:
    app: steel-server
  ports:
  - protocol: TCP
    name: tcp
    port: 80
    targetPort: 12345

尝试使用此服务配置,我将端口更改为 80,而目标端口与容器端口相同。

【讨论】:

  • 我在更改为端口 80 kubernetes ClusterIP 10.35.240.1 443/TCP 2d steel-server-service LoadBalancer 10.35.251.155 35.232.215.231 80:32093/ 后运行 kubectl get svc 得到这个TCP 6m 相同的结果,我的客户端可以连接到外部 ip 但我的服务器容器没有收到任何数据包
  • 检查你创建的负载均衡器是全局的、TCP的、网络负载均衡器还是什么类型的负载均衡器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2017-02-12
  • 1970-01-01
相关资源
最近更新 更多