docker - Kubernetes:在同一端口上运行的微服务?

标签 docker kubernetes google-cloud-platform microservices

我正在构建一个微服务全栈Web应用程序(到目前为止):

ReactJS (client microservice) : listens on 3000


Authentication (Auth microservice) : listens on 3000 // accidently assigned the same port


从技术上讲,到目前为止,我已经听到/了解到的是,我们不能在同一端口上运行两个Pod。
我真的很困惑如何在不同的应用程序/容器上使用相同的端口(完全)运行这样的应用程序?
ingress-nginx配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
    name: ingress-service 
    annotations: 
        kubernetes.io/ingress.class: nginx 
        nginx.ingress.kubernetes.io/use-regex: 'true'
spec: 
    ## our custom routing rules  
    rules: 
        - host: ticketing.dev 
          http: 
            paths:
                - path: /api/users/?(.*) 
                  backend: 
                    serviceName: auth-srv 
                    servicePort: 3000
                - path: /?(.*)
                  backend: 
                    serviceName: client-srv
                    servicePort: 3000 

我真的很好奇,我在这里想念什么吗?

最佳答案

每个Pod都有自己的网络 namespace 和IP地址,尽管Pod专用的IP地址无法从群集外部访问,也无法在群集内部真正发现。由于每个Pod都有其自己的IP地址,因此您可以拥有任意数量的Pod,让他们都收听同一端口。
每个服务还具有自己的IP地址。同样,尽管它们具有DNS名称,但从群集外部无法访问,因此应用程序可以找到它们。由于每个服务都有其自己的IP地址,因此您可以拥有所有要监听同一端口的任意数量的服务。服务端口可以与Pod端口相同或不同。
可通过HTTP从群集外部访问Ingress Controller 。您显示的Ingress规范定义了HTTP路由规则。如果我使用.dev TLD设置了DNS服务,并为指向入口 Controller 的ticketing.dev定义了A记录,则http://ticketing.dev/api/users/anything将转发到集群中的http://auth-srv.default.svc.cluster.local:3000/,而http://ticketing.dev/otherwise会转到http://client-srv.default.svc.cluster.local:3000/。这些反过来将被转发到他们所连接的任何Pod。
没有特别禁止多个具有相同端口的Pod或服务。我倾向于将所有HTTP服务设置为侦听端口80,因为它是标准HTTP端口,即使各个Pod侦听端口3000或8000或8080或其他端口也是如此。

关于docker - Kubernetes:在同一端口上运行的微服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62734966/

相关文章:

docker - apt-get install 在 Dockerfile 中找不到固定版本

Docker:proxy_pass 到另一个容器 - nginx:在上游找不到主机

django - 如何从 docker-compose 链接到 Amazon RDS

tomcat - Ingress 和 Helm Chart HTTPS 问题

python-3.x - 使用python和谷歌云引擎处理大数据

ssh - gcloud 使用本地 key 和项目限制计算 ssh

Docker Swarm 模式路由网格不适用于wireguard VPN

kubernetes - 自定义调度程序将Pod留在未决的Kubernetes集群中

docker - kubernetes 的安全工具

google-cloud-platform - 谷歌CP : Can't get Compute Engine VMs to contact a specific public DNS name server after applying a DNS outbound forwarding policy