-
我在Mac OS上使用捆绑了docker的本地kubernetes .
-
我安装了nginx-ingress-controller .
-
我管理员将外部http request via ingress发送到我的kubernetes托管容器(例如从我的本地浏览器) . 所有请求都通过nginx端口80或443发送 .
问题是,我只能通过我的ngnix控制器路由http或https请求 . 如何通过入口向我的容器发送非HTTP请求(例如数据库或corba)?
我在Mac OS上使用捆绑了docker的本地kubernetes .
我安装了nginx-ingress-controller .
我管理员将外部http request via ingress发送到我的kubernetes托管容器(例如从我的本地浏览器) . 所有请求都通过nginx端口80或443发送 .
问题是,我只能通过我的ngnix控制器路由http或https请求 . 如何通过入口向我的容器发送非HTTP请求(例如数据库或corba)?
2 回答
这通过入口机制得不到很好的支持,并且是open issue .
使用nginx-ingress可以解决tcp或udp流量问题,它会使用configmap将暴露的端口映射到kubernetes服务 .
见this doc .
使用
tcp-services-configmap
(和/或udp-services-configmap
)参数启动入口控制器 .部署configmap:
其中
9000
是公开端口,8080
是服务端口我在裸机服务器上使用nginx-ingress-controller . 为了从所有节点上获取托管站点,我将其创建为DaemonSet而不是部署(Bare-metal considerations) .
该解决方案运行良好,Ingress规范的更新完美集成 .
为了使TS服务器可用,我更改了我在arginx-ingress-controller.yml中的Pod的args,如stacksonstacks所述:
不幸的是,当应用更改的规范时,DaemonSet不会自动重新创建Pod,所以在检查Pod时,我仍然有旧的args:
使用
kubectl --namespace ingress-nginx delete pod --all
删除ingress-nginx命名空间内的Pod使控制器创建新的Pod,最后端口在主机网络上可用 .我知道情况可能会有所不同,但希望有人可以节省几分钟 .