使用nginx-ingess访问kubernetes集群中的应用程序
我有一个裸机Kubernetes(1个主节点和3个节点),并使用metallb提供负载平衡。使用nginx-ingess访问kubernetes集群中的应用程序,kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我有一个裸机Kubernetes(1个主节点和3个节点),并使用metallb提供负载平衡。 我还安装了Jupyterhub和nginx ingress作为服务 nginx入口: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-ingress-controller LoadBalancer 1
我还安装了Jupyterhub和nginx ingress作为服务 nginx入口:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer 10.108.54.171 192.168.1.240 80:31463/TCP,443:30231/TCP 5m11s
nginx-ingress-default-backend ClusterIP 10.98.47.19 <none> 80/TCP 5m11s
我可以从外部IP访问jupyterhub,但无法通过nginx入口访问它
nginx入口配置.yaml
apiVersion: extensions/v1beta1
ingress
enabled: true
hosts:
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: myingress
namespace: default
rbac:
create: true
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: jhub
servicePort: 80
path: /classes
我的问题是,如何通过nginx ingress访问jupyterhub(代理公共)您需要一个DNS记录或主机文件条目,指向
example.com
(可能会更改此项)ingress控制器的外部IP(192.168.1.240
)
如果请求的URI与入口中的
主机
字段匹配,则入口控制器仅将请求路由到入口中定义的服务后端。代理公共后端服务应为ClusterIP类型,而不是LoadBalancer类型,就像nginx ingress默认后端一样
服务ingress中的服务名称应该是proxy public
,而不是jhub
您应该能够通过http://192.168.1.240/classes
apiVersion: extensions/v1beta1
ingress
enabled: true
hosts:
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: myingress
namespace: default
rbac:
create: true
spec:
rules:
- host: example.com
http:
paths:
- backend:
serviceName: jhub
servicePort: 80
path: /classes