kubernetes - 使用 tcp 暴露 k8s 服务
问题描述
我有一个 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(或其他入口控制器)才能使其工作?
解决方案
首先,您使用 LoadBalancer 类型创建服务的正确方法。通过查看 Service.yaml 内容,唯一缺少的是 Service 对象中的选择器字段丢失,您的服务不知道在哪些 pod 上转发流量。尝试添加它。
如果您打算只公开单个服务,那么 LoadBalancer 类型是有意义的。但是,如果您要拥有多个服务,那么创建多个 LoadBalancer 服务的成本会很高。在这种情况下,Nginx Ingress 可以帮助您只需要一个 LoadBalancer 类型的服务。参考https://medium.com/better-programming/how-to-expose-your-services-with-kubernetes-ingress-7f34eb6c9b5a
推荐阅读
- drupal - 出现错误:EntityMetadataWrapperException:未知数据属性 group_access
- flutter - 频道溢出:颤振/生命周期
- android - 使用 CardView 的网格布局未在某些旧的 Android 设备上显示
- python - 使用 Conda 安装包以进行第二次 Python 安装
- python - 使用 X 值更改 fromDate 和 toDate - Python
- javascript - 为javascript设置相对URL(websocket连接到Spring MVC)
- angular - 拖动开始延迟不适用于移动设备
- matlab - 如何在matlab中求解代数方程组
- html - 需要帮助解决在将 HTML 转换为 PDF 时 Select.pdf 仅呈现最后一页上一半内容的错误
- python - 如何使用 TFlearn 中的新训练数据更新现有模型