【问题标题】:Exposing a k8s serivce with tcp使用 tcp 暴露 k8s 服务
【发布时间】:2021-01-27 12:58:50
【问题描述】:

我有一个 eks 集群,一切正常。 我想运行一个在端口 5000 上侦听 tcp 请求的服务。 我正在尝试阅读它,但我能找到的所有指南都使用 http 作为示例。 我想我对所有不同的概念有点困惑。 如果我定义:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: LoadBalancer
  ports:
    - port: 5000
      targetPort: 5000
      protocol: TCP

并运行它(实际上是使用 helm),我可以在 aws-console 上看到创建了一个经典的负载均衡器。 但我无法ping通。

基本上,我如何创建一个将端口 5000 转发到我的服务的网络负载均衡器?看起来这应该很简单,因为我找不到如何做到这一点。最终,我想为 nlb 提供一个静态 IP,以便我可以向该端口发送请求。 我是否需要安装 nginx(或其他入口控制器)才能完成这项工作?

【问题讨论】:

标签: kubernetes tcp amazon-eks nlb


【解决方案1】:

首先,您使用 LoadBalancer 类型创建服务的正确方法。通过查看 Service.yaml 内容,唯一缺少的是服务对象中的选择器字段丢失,您的服务不知道在哪些 pod 上转发流量。尝试添加它。

如果您只打算公开单个服务,那么 LoadBalancer 类型是有意义的。但是,如果您要拥有多个服务,那么创建多个 LoadBalancer 服务的成本会很高。在这种情况下,Nginx Ingress 可以帮助您只需要一个 LoadBalancer 类型的服务。参考https://medium.com/better-programming/how-to-expose-your-services-with-kubernetes-ingress-7f34eb6c9b5a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 2016-02-11
    • 2021-07-16
    • 1970-01-01
    • 2022-07-17
    • 2019-07-27
    • 2019-07-22
    • 2021-08-13
    相关资源
    最近更新 更多