- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Oracle VM Virtualbox 中使用 Minikube 单节点 Kubernetes 集群。节点中的一个 pod 是基于 Next.js 的客户端,其余 pod 是不同的微服务。假设我的客户端 (Pod1) 需要在渲染之前向 auth 微服务 (Pod2) 发送一个 HTTP 请求——参见图表: Minikube Cluster
下面是我的 ingress-service.yaml 文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
rules:
- host: dummyweb.info
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000
可以看到每个服务都有一个特定的路径。因此,我想将来自客户端 (Pod1) 的 HTTP 请求发送到 Ingress Service,然后 Ingress 根据路径将请求重新路由到适当的服务。换句话说,居住在 Pod1 中的客户端将使用以下 URL 通过 Ingress Service 向居住在 Pod2 中的 auth 服务发送 HTTP GET 请求: http://<ingress-service-url>/api/users/....
我需要弄清楚 Ingress 服务的 URL 是什么。
我启用了 NGINX Ingress Controller :
minikube addons enable ingress
我验证了 NGINX Ingress Controller 正在运行:
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-f9fd979d6-hfnfj 1/1 Running 5 45h
etcd-minikube 1/1 Running 5 45h
ingress-nginx-admission-create-dkthv 0/1 Completed 0 23h
ingress-nginx-admission-patch-4gtth 0/1 Completed 0 23h
ingress-nginx-controller-789d9c4dc-qdqxv 1/1 Running 3 23h
kube-apiserver-minikube 1/1 Running 5 45h
kube-controller-manager-minikube 1/1 Running 5 45h
kube-proxy-sr6pt 1/1 Running 5 45h
kube-scheduler-minikube 1/1 Running 5 45h
storage-provisioner 1/1 Running 11 45h
然后,我正在检查 kube-system 命名空间中可用的服务:
kubectl get services -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller-admission ClusterIP 10.97.5.35 <none> 443/TCP 24h
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 45h
我假设 Ingress 服务的内部 URL 是:
http://ingress-nginx-controller-admission.kube-system.svc.cluster.local
正如我们在上面看到的,ingress-nginx-controller-admission 服务仅公开端口 443,因此在 HTTP 请求中我收到以下错误:
Server Error
Error: connect ETIMEDOUT 10.97.5.35:80
This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
<unknown> (Error: connect ETIMEDOUT
10.97.5.35 (80)
TCPConnectWrap.afterConnect [as oncomplete]
net.js (1145:16)
我对直接连接到身份验证服务不感兴趣。
最佳答案
对于上述问题有一个非常简单的解决方案:
minikube addons enable ingress
.helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install my-release ingress-nginx/ingress-nginx
在哪里可以替换 my-release
随心所欲。在我的例子中,这是 dimi
.
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
auth-mongo-srv ClusterIP 10.110.44.53 <none> 27017/TCP 46m
auth-srv ClusterIP 10.106.154.84 <none> 3000/TCP 46m
client-srv ClusterIP 10.108.31.36 <none> 3000/TCP 46m
dimi-ingress-nginx-controller LoadBalancer 10.102.12.127 <pending> 80:31599/TCP,443:32639/TCP 34m
dimi-ingress-nginx-controller-admission ClusterIP 10.102.171.116 <none> 443/TCP 34m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 58m
nats-srv ClusterIP 10.110.239.15 <none> 4222/TCP,8222/TCP 46m
orders-mongo-srv ClusterIP 10.101.67.81 <none> 27017/TCP 46m
orders-srv ClusterIP 10.103.29.63 <none> 3000/TCP 46m
tickets-mongo-srv ClusterIP 10.107.137.160 <none> 27017/TCP 46m
tickets-srv ClusterIP 10.106.203.231 <none> 3000/TCP 46m
dimi-ingress-nginx-controller
LoadBalancer 类型的服务。因此,如果您需要处理服务器端渲染 (SSR) 并从一个 pod(您的 Next.js 应用程序正在运行的位置)发送 HTTP 请求到您的一个微服务(在不同的 pod 中运行),在页面之前甚至呈现,您可以将请求发送到 http://dimi-ingress-nginx-controller.default.svc.cluster.local/<path_set_in_the_Ingress_Resource>
.例如,如果我的 Next.js 应用程序需要向我的 Auth 微服务发送请求,则 URL 将为:http://dimi-ingress-nginx-controller.default.svc.cluster.local/api/users
.这样,HTTP(S) 流量将由 Ingress 资源处理,我们已经有一个匹配所有传入请求的规则列表。关于kubernetes - 通过入口服务将来自 kubernetes pod 的 http 请求发送到 Minikube 中的另一个 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64260214/
我已在本地设置 Docker 引擎以在 minikube 上运行(而不是使用 Docker Desktop)。我知道我需要确保引擎与 minikube 集群“对话”。我查阅了两个教程,它们的说明略有不
我正在尝试创建 minikube 集群,但它总是失败。 非常欢迎任何建议: C:\WINDOWS\system32>minikube 启动 --driver=vmware Microsoft Wind
我正在尝试调查网络问题并想安装 tcpdump/tshark。 minikube 使用什么包管理器?如何安装 tcpdump? 最佳答案 这不是一件容易的事。 Minikube VM 基于 Build
我正在尝试使用 https://kubernetes.io/docs/tasks/tools/install-minikube/ 在 RHEL 7.4 上安装 minikube .我的系统设置了无密码
我正在运行 minikube。 Minikube 状态结果为: kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99
如何将自定义 ssh 公钥放入 minikube 集群上的 authorized_keys 中?为什么对 /home/docker/.ssh/authorized_keys 的更改在重启后会丢失?如何
我在 Windows 10 上。命令“systeminfo”显示: Hyper-V Requirements: A hypervisor has been detected. Features req
我正在 Linux 工作站上使用 podman 和 minikube 探索和学习容器和 kubernetes。我使用 podman 在工作站上构建镜像,并希望使用 kvm2 虚拟机驱动程序将这些镜像部
当我运行以下代码时: minikube addons enable ingress 我收到以下错误: ▪ Using image k8s.gcr.io/ingress-nginx/controller
我想在每次启动和停止时为我的 ubuntu 主机(带有 KVM2)上的 minikube 集群(输入 minikube ip 时获得的那个)设置一个固定的 IP 地址。 我想将一个 DNS 子域指向它
我刚刚使用以下命令在 Ubuntu 18.04 上为我的 Kubernetes 本地设置安装了 Minikube: curl -LO https://storage.googleapis.com/mi
编辑 - 这是在 OSX 上 另外,我试过运行 minikube service ,如下所示,当它尝试在浏览器中打开它时,我收到“连接被拒绝”信号,因为端口已关闭。 我有一个 kubernetes
我想在每次启动和停止时为我的 ubuntu 主机(带有 KVM2)上的 minikube 集群(输入 minikube ip 时获得的那个)设置一个固定的 IP 地址。 我想将一个 DNS 子域指向它
我对 Kubernetes“非常”陌生,我想在运行 Windows 10 和 HyperV 的本地机器上试用它。我看到了 minikube用于本地开发,我可以在 Chocolatey 上找到,所以我使
我正在尝试通过 hyperv 在我的本地 Windows 10 机器上安装 kubernetes。我遇到了一些我不确定如何解决的错误。我也尝试过运行 kubernetes v1.8.0,但收到了同样的
我有一个可以在多个环境中工作的简单入口文件,但要访问它,它的行为会有所不同,具体取决于我是在我的 Mac 上还是在我的 Ubuntu 机器上运行我的 minikube 集群。 具体来说,对于我的 ma
是否可以使用 minikube 在特定端口上公开服务? kubectl expose deployment my-deployment --type=NodePort --port=80 不会抛出错误
我正在尝试使用嵌入式仪表板内部服务为 minikube 仪表板创建入口。 我同时启用了 ingress和 dashboard minikube 插件。 我还写了这个 ingress YAML 文件:
你好,所以我昨天使用 minikube,它工作正常,但今天我试图用 minikube start 命令开始,它给出了以下错误: 在运行 minikube status 之后,它会给出以下结果: 提前感
我在 macOS 上升级了 minikube,现在我无法启动它(在两台不同的机器上)。我一直在阅读一堆论坛,这似乎是一个常见问题,但没有一致的解决方案,也没有关于如何寻找根本原因的指导。 首次下载 V
我是一名优秀的程序员,十分优秀!