![kubernetes外部访问问题](https://linux22.com/image/124844/kubernetes%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE%E9%97%AE%E9%A2%98.png)
我有一个在 AWS 中运行的 Kubernetes 集群。 Kubes Worker 位于私有子网中,Master 位于公共子网中。
集群工作正常。现在我将在一个 pod 中使用 3 个容器进行部署,并且 3 个端口将作为这些容器的服务公开。
我想从互联网访问这个 Pod。即在外面。
我们无法为每个 Pod 部署负载均衡器,因为将有 500 个 Pod,我们该如何做到这一点
答案1
我知道我们讨论过这个问题,但我想我也会在这里回答这个问题,这样其他人可能会知道一个可能的解决方案。
据我了解,您需要一个入口控制器,该控制器可用于将传入流量路由到请求的服务/部署。
IE; this.example.com 将是您的域。
您已经部署了一个由多个容器组成的 Pod。
理论上,您可以进行以下入口设置;
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress annotations: kubernetes.io/ingress.class: nginx ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - this.example.com secretName: my-tls rules: - host: this.example.com http: paths: - path: /one backend: serviceName: this-deploy servicePort: 80 - path: /two backend: serviceName: this-deploy servicePort: 9000 - path: /three backend: serviceName: this-deploy servicePort: 8080
在此入口中,我们指定了相同的服务,但每个服务都有不同的端口。
当用户导航到this.example.com/one
流量进入入口控制器设置时,它会检查是否有任何匹配的规则,以及是否有一些规则会将流量引导至服务。
服务本身将有一个端点,流量将定向到该端点。这将是 Pod(或者如果您有许多副本,则其中任何一个)。
这些资源可能有助于设置入口控制器。
https://hub.kubeapps.com/charts/stable/nginx-ingress https://github.com/kubernetes/ingress-nginx