k8s 容器应用代理-gateway
最后发布时间 : 2025-03-14 10:11:05 浏览量 : 38
metadata:
labels:
app: k8s-21e497d4-42e1-479a-86a5-73f9da1fd5e6
type: webApp
userId: '1'
name: k8s-21e497d4-42e1-479a-86a5-73f9da1fd5e6
spec:
containers:
- env:
- name: PUID
value: '1011'
- name: PGID
value: '1011'
- name: DEFAULT_WORKSPACE
value: /config/workspace
image: registry.cn-hangzhou.aliyuncs.com/sj-bioinfo/linuxserver-code-server
imagePullPolicy: Always
name: k8s-21e497d4-42e1-479a-86a5-73f9da1fd5e6
volumeMounts:
- mountPath: /data/k8sData
name: nfdata
subPath: k8sData
- mountPath: /data/workspace/1
name: nfdata
subPath: workspace/1
- mountPath: /config/workspace
name: nfdata
subPath: workspace/1
- mountPath: /config/.kube
name: nfdata
subPath: user/.kube
- mountPath: /etc/hosts
name: nfdata
subPath: user/hosts
- mountPath: /data
name: nfdata
- mountPath: /data23
name: nfdata23
- mountPath: /ssd2/software
name: software
- mountPath: /data/resultData
name: nfdata
subPath: resultData
- mountPath: /data/databases
name: nfdata
subPath: databases
restartPolicy: Always
securityContext:
runAsGroup: 0
runAsUser: 0
volumes:
- name: software
persistentVolumeClaim:
claimName: software
- name: nfdata23
persistentVolumeClaim:
claimName: nfdata23
- name: nfdata
persistentVolumeClaim:
claimName: nfdata
metadata:
name: k8s-21e497d4-42e1-479a-86a5-73f9da1fd5e6
spec:
type: NodePort
ports:
- name: client
nodePort: 32012
port: 8443
protocol: TCP
targetPort: 8443
selector:
app: k8s-21e497d4-42e1-479a-86a5-73f9da1fd5e6
sessionAffinity: ClientIP
对jupyter的代理
jupyter lab --NotebookApp.token='' --NotebookApp.ip='0.0.0.0' --NotebookApp.base_url='/jupyter/'
- id: vscode-cloud
uri: http://192.168.10.177:32007
predicates:
- Path=/vscode/**
filters:
- RewritePath=/vscode/?(?<segment>.*), /$\{segment}
- id: vscode2
uri: http://192.168.10.177:32007
predicates:
- Path=/vscode2/**
filters:
- StripPrefix=1
- id: jupyter
uri: http://192.168.10.30:8888
predicates:
- Path=/jupyter/**
注意: 代理jupyter
与代理vscode
不同,不能使用filters: StripPrefix=1
代理jupyter与代理vscode的区别是什么
代理vscode访问
http://192.168.10.30:40000/vscode/
实际上访问http://192.168.10.30:40000
,nginx也有类似的代理。vscode的所有资源都在相对于基路径/vscode/
上(/vscode/?folder=/data
),请求静态资源都是相对路径因此代理时去掉路径vscode
是可以的,所有静态资源都能在路由上找到映射,并且代理后也能找到真正资源的位置。对于jupyter
,当我们试图采用与vscode
相同的方式代理时,
jupyter lab --NotebookApp.token='' --NotebookApp.ip='0.0.0.0'
- id: jupyter
uri: http://192.168.10.30:8888
predicates:
- Path=/jupyter/**
filters:
- StripPrefix=1
当你试图访问http://192.168.10.30:40000/jupyter/
浏览器会跳跳转到http://192.168.10.30:40000/lab?
,由于StripPrefix=1
会导致实际访问路径是没有jupyter
的,并且http://192.168.10.30:40000
这个ip下是没有路由lab
的。因此我们首先需要去掉StripPrefix=1
- id: jupyter
uri: http://192.168.10.30:8888
predicates:
- Path=/jupyter/**
结果如下:
同时终端也有如下错误
[W 2024-11-16 14:59:23.440 ServerApp] 404 GET /jupyter (e70b3f6436bc444490f4ec0b5624685b@192.168.10.30) 1.51ms referer=None
此时就需要添加jupyter的参数base_url
--NotebookApp.base_url='/jupyter'
接下来访问http://192.168.10.30:40000/jupyter/lab
就可以成功!
注,如果跨域可以添加参数--NotebookApp.allow_origin='*'