2

我有多个服务在端口 80 上运行。

我现在正在部署另一个在端口 3310(病毒扫描程序)上运行的服务,如果我尝试使用 nginx,我似乎无法让端口正常工作。我在某处读到 nginx 仅适用于标准端口。

所以我走上了使用负载均衡器服务的路线。这非常有效,但会增加额外的 IP 地址等成本。

是否有继续为这个非标准端口使用 nginx 入口?从而消除对集群的额外外部访问的需要?

4

2 回答 2

3

如果端口 3310 上的病毒扫描程序接受 HTTP/HTTPS 连接,那么您可以使用入口控制器。入口资源将仅接受端口 80 和 443 上的传入流量。您需要将该服务公开给不同的主机名或路径,以识别将哪些请求发送到您的防病毒服务。

如果你需要 TCP/UDP 连接到服务,你可以创建一个 ConfigMap 由 nginx 入口控制器读取。您需要--tcp-services-configmap在启动时将参数传递给 nginx 入口控制器(通过入口控制器Deployment资源中的容器参数)。

鉴于此示例入口控制器部署资源,您可以将参数添加--tcp-service-configmap=default/tcp-controller-configmap到文件末尾作为args列表中的另一个元素。

ConfigMap 看起来像这样:

apiVersion: v1
kind: ConfigMap
metadata:
    name: tcp-controller-configmap
    namespace: default
data:
    3310: "default/name-of-your-av-service:3310"
于 2020-05-19T22:40:58.763 回答
1

您可以通过NodePort 服务访问您的病毒扫描程序。您应该已经为您的节点分配了外部 IP 地址,因此无需额外费用。

您对 Ingress 实体仅使端口 80 和 442 对外可用是正确的。根据K8s 文档,它们似乎是这样设计的。

于 2020-05-20T15:07:22.877 回答