我有多个服务在端口 80 上运行。
我现在正在部署另一个在端口 3310(病毒扫描程序)上运行的服务,如果我尝试使用 nginx,我似乎无法让端口正常工作。我在某处读到 nginx 仅适用于标准端口。
所以我走上了使用负载均衡器服务的路线。这非常有效,但会增加额外的 IP 地址等成本。
是否有继续为这个非标准端口使用 nginx 入口?从而消除对集群的额外外部访问的需要?
我有多个服务在端口 80 上运行。
我现在正在部署另一个在端口 3310(病毒扫描程序)上运行的服务,如果我尝试使用 nginx,我似乎无法让端口正常工作。我在某处读到 nginx 仅适用于标准端口。
所以我走上了使用负载均衡器服务的路线。这非常有效,但会增加额外的 IP 地址等成本。
是否有继续为这个非标准端口使用 nginx 入口?从而消除对集群的额外外部访问的需要?
如果端口 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"
您可以通过NodePort 服务访问您的病毒扫描程序。您应该已经为您的节点分配了外部 IP 地址,因此无需额外费用。
您对 Ingress 实体仅使端口 80 和 442 对外可用是正确的。根据K8s 文档,它们似乎是这样设计的。