gpt4 book ai didi

reactjs - 连接到私有(private) IP 地址 - graphql - kubernetes

转载 作者:行者123 更新时间:2023-12-02 12:19:30 25 4
gpt4 key购买 nike

如何连接graphql api 在专用网络上,可通过专用 IP 地址访问。我的前端服务器和 api 在 VNET .

import { ApolloClient } from 'apollo-client'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { createUploadLink } from 'apollo-upload-client'

const uploadLink = createUploadLink({
uri: 'http://10.0.0.10:3000'+'/api'
})

const client = new ApolloClient({
link: uploadLink,
cache: new InMemoryCache()
})
export default client

两个应用程序都在 kubernetes 上运行相同的集群不同的 pod。集群内可以访问私有(private)服务,当我 exec进入我可以访问的前端 pod graphql具有私有(private) IP 地址的端点。

但是,在浏览器上,它没有连接并给出此错误: ERR_CONNECTION_REFUSED

frontend (public ip) --> graphql (private ip)

最佳答案

从外部访问内部 Kubernetes 服务的 3 种主要方法是:节点端口 , 负载均衡器 , 和 入口 .
您可以在此处了解它们之间的一些主要区别 https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

节点端口
将某个范围内随机或手动选择的高端口以 1 对 1 的方式映射到服务。
要么允许 kubernetes 随机选择一个高端口,要么从一个预定义的范围内手动定义一个高端口,默认为 30000-32767(但可以更改),并将其以 1 对 1 的方式映射到内部服务端口。
警告:虽然可以为每个服务手动定义一个 NodePort 端口号,但由于可能存在端口冲突等问题,通常不建议这样做。所以在大多数情况下,您应该让集群为您随机选择一个 NodePort 端口号。
来自官方文档:https://kubernetes.io/docs/concepts/services-networking/service/#nodeport

If you set the type field to NodePort, the Kubernetes master willallocate a port from a range specified by --service-node-port-rangeflag (default: 30000-32767), and each Node will proxy that port (thesame port number on every Node) into your Service.



负载均衡器
将服务附加到由 IP Provider 服务(例如云提供商 Public IP Service)提供的外部 ip。
此服务类型的功能取决于外部驱动程序/插件。大多数现代云都支持为 LoadBalancer 定义提供公共(public) IP。但是,如果您正在旋转一个无法分配公共(public) IP 的自定义集群(例如使用没有 IP 提供程序插件的 Rancher),那么您可能做的最好的事情就是将主机的 IP 分配给单个服务。
来自官方文档: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer

On cloud providers which support external loadbalancers, setting the type field to LoadBalancer will provision aload balancer for your Service. The actual creation of the loadbalancer happens asynchronously, and information about the provisionedbalancer will be published in the Service’s .status.loadBalancerfield.



入口
运行一个中央应用程序路由器服务,该服务接收某个端口(或多个端口)上的所有流量,并根据请求的域和路径等参数将其路由到服务。
要安装它,您必须创建一个应用程序路由器服务(例如 nginx),该服务在您的集群中运行并分析创建的每个 Ingress 类型的新资源。然后创建定义路由规则的 Ingress 资源,例如监听哪个 DNS 请求以及将请求转发到哪个服务。
尽管为此目的存在多种解决方案,但我推荐 Nginx Ingress
https://github.com/helm/charts/tree/master/stable/nginx-ingress https://github.com/kubernetes/ingress-nginx
官方文档:

What is Ingress? Typically, services and pods have IPs only routableby the cluster network. All traffic that ends up at an edge router iseither dropped or forwarded elsewhere. Conceptually, this might looklike:

internet
| ------------ [ Services ] An Ingress is a collection of rules that allow inbound connections to reach the cluster services.

internet
| [ Ingress ] --|-----|-- [ Services ] It can be configured to give services externally-reachable URLs, load balance

traffic, terminate SSL, offer name based virtual hosting, and more.Users request ingress by POSTing the Ingress resource to the APIserver. An Ingress controller is responsible for fulfilling theIngress, usually with a loadbalancer, though it may also configureyour edge router or additional frontends to help handle the traffic inan HA manner.

关于reactjs - 连接到私有(private) IP 地址 - graphql - kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52526361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com