我在 Oracle VM Virtualbox 中使用 Minikube 单节点 Kubernetes 集群。节点中的一个 Pod 是基于 Next.js 的客户端,其余 Pod 是不同的微服务。假设我的客户端 (Pod1) 需要在渲染之前向身份验证微服务 (Pod2) 发送 HTTP 请求 - 请参阅图表:Minikube集群 https://i.stack.imgur.com/fTzeq.png
以下是我的 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
可以看到每个服务都有特定的路径。因此,我想将 HTTP 请求从客户端 (Pod1) 发送到 Ingress Service,然后 Ingress 根据路径将请求重新路由到适当的服务。换句话说,Pod1 中的客户端将使用以下 URL 通过 Ingress Service 向 Pod2 中的 auth 服务发送 HTTP GET 请求:http://<ingress-service-url>/api/users/....
我需要弄清楚 Ingress 服务的 URL 是什么。
我启用了 NGINX Ingress 控制器:
minikube addons enable ingress
我验证了 NGINX Ingress 控制器正在运行:
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 中 Ingress Service 的正确内部 URL 吗?
- 如果是的话如何开放80端口?
我对直接连接到身份验证服务不感兴趣。