我试图从一个服务访问我的ingress-nginx服务,但它拒绝连接。这是我的入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: ticketing.dev
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000
- path: /api/tickets/?(.*)
backend:
serviceName: tickets-srv
servicePort: 3000
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000
apiVersion: v1
kind: Namespace
metadata:
name: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
---
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
- name: http
port: 443
protocol: TCP
targetPort: https
❯ kubectl get services -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx LoadBalancer 10.101.124.218 10.101.124.218 80:30634/TCP,443:30179/TCP 15m
ingress-nginx在命名空间ingress-nginx上运行。所以它应该可以通过http://ingress-nginx.ingress-nginx.svc.cluster.local
访问。但是当我打开它的时候,它显示的是connection refused 10.101.124.218:80
。我能够从外部进入入口,即。从ingress
ip。
我正在使用minikube,并通过运行minikube addons enable ingress
来使用engage。是的,我正在通过minikube tunnel
运行隧道
1条答案
按热度按时间bweufnob1#
我测试了你的环境,发现了同样的行为,外部访问但内部连接被拒绝,这是我如何解决的:
kube-system
命名空间中。如果您尝试在新创建的命名空间中部署服务,它将无法到达kube-system
命名空间中的部署。nginx-ingress
部署使用名称空间ingress-nginx
。kubectl expose
:字符串
复制:
ingress
和metallb
插件。v1
和v2
,两个Pod都侦听端口8080
,并作为节点端口公开,如下所示:型
型
nginx-ingress
服务,公开控制器部署,这样所有的标签和设置都将被继承:型
型
型
alpine
pod来测试从集群内部的访问:型
如你所见,所有的请求都得到了满足。
备注:
<SVC_NAME>.<NAMESPACE>.svc.cluster.local
。Host
参数才能到达入口。如果你有任何问题,请在评论中告诉我。