我有一个裸机Kubernetes(1个主节点和3个节点),并使用metallb提供负载平衡。
我还安装了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
Jupyterhub
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
proxy-public LoadBalancer 10.102.251.6 192.168.1.242 80:32691/TCP,443:31737/TCP 8h
我可以从外部IP访问jupyterhub,但无法通过nginx-ingress访问
nginx-inress config.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(代理公共)
答案 0 :(得分:1)
proxy-public
后端服务应该是ClusterIP类型,而不是nginx-ingress-default-backend
服务那样的LoadBalancer类型。入口的服务名称应为proxy-public
,而不是jhub
。
您应该可以通过http://192.168.1.240/classes
答案 1 :(得分:0)
您将需要DNS记录或托管指向example.com
(可能会更改)指向入口控制器的外部IP(192.168.1.240
)的文件条目。
如果请求的URI与入口中的host
字段匹配,则入口控制器将仅将请求路由到入口中定义的服务后端。