如何使用 k8s 对外暴露 pods 的任意端口?
資深大佬 : AkideLiu 1
如何使用 k8s 在 对外暴露 pods 的任意端口?
现在想实现使用 self host kubernetes 的code-server进行 web preview,现在的用法是使用 yaml 文件里面写 services 和 ingress 进行暴露,但是 ports 是写死的,如果要打开新的端口就需要重新修改 ymal 。搜了半天也没找到办法,希望 v2 的大佬们指点一下。
example yaml:
--- apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: code-server-01 namespace: code-server-01 annotations: kubernetes.io/ingress.class: nginx spec: # 内网 rules: - host: code-server-01.xxxxxxx.xip.io http: paths: - backend: serviceName: code-server-01 servicePort: 80 - host: preview-code-server-01.xxxxxxx.xip.io http: paths: - backend: serviceName: code-server-01 servicePort: 5500 # 外网 - host: code-01.xxx.com http: paths: - backend: serviceName: code-server-01 servicePort: 80 - host: preview-code-01.xxx.com http: paths: - backend: serviceName: code-server-01 servicePort: 5500 --- apiVersion: v1 kind: Service metadata: name: code-server-01 namespace: code-server-01 spec: ports: - port: 80 name: web targetPort: 8080 - port: 5500 name: preview targetPort: 5500 selector: app: code-server-01
期望实现:
比如说 gitpod.io 的 preview 就是根据需求打开端口
复现过程:
- 使用 gitpod 打开 express demo http://gitpod.io/#/https://github.com/jatins/express-hello-world
- 修改 express default port to 3006
- gitpod 会添加一个暴露 3006

我想请教请教这个过程是如何实现的?
ps:感觉是使用了什么神奇的 ingress controller,不知道有没有开源产品
大佬有話說 (4)