Mat*_*s M 8 kubernetes kubernetes-ingress
问题是,我只能通过我的ngnix控制器路由http或https请求.如何通过入口向我的容器发送非HTTP请求(例如数据库或corba)?
sta*_*cks 13
这通过入口机制得不到很好的支持,并且是一个悬而未决的问题.
使用nginx-ingress可以解决tcp或udp流量问题,它会使用configmap将暴露的端口映射到kubernetes服务.
看到这个文档.
使用tcp-services-configmap(和/或udp-services-configmap)参数启动入口控制器.
args:
- "/nginx-ingress-controller"
- "--tcp-services-configmap=default/nginx-tcp-configmap"
- "--v=2"
Run Code Online (Sandbox Code Playgroud)
部署configmap:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-tcp-configmap
data:
9000: "default/example-service:8080"
Run Code Online (Sandbox Code Playgroud)
9000暴露端口在哪里,8080是服务端口
小智 5
我在裸机服务器上使用 nginx-ingress-controller。为了从所有节点访问托管站点,我将其创建为 DaemonSet 而不是 Deployment(出于裸机考虑)。
该解决方案运行良好,并且完美集成了 Ingress 规范的更新。
为了使 TS 服务器可用,我更改了 nginx-ingress-controller.yml 中 Pod 的参数,如 stacksonstacks 中所述:
/nginx-ingress-controller
--configmap=$(POD_NAMESPACE)/nginx-configuration
--publish-service=$(POD_NAMESPACE)/ingress-nginx
--annotations-prefix=nginx.ingress.kubernetes.io
--tcp-services-configmap=default/tcp-ingress-configmap
--udp-services-configmap=default/udp-ingress-configmap
Run Code Online (Sandbox Code Playgroud)
不幸的是,当应用更改后的规范时,DaemonSet 不会自动重新创建 Pod,因此在检查 Pod 时,我仍然有旧的参数:
/nginx-ingress-controller
--configmap=$(POD_NAMESPACE)/nginx-configuration
--publish-service=$(POD_NAMESPACE)/ingress-nginx
--annotations-prefix=nginx.ingress.kubernetes.io
Run Code Online (Sandbox Code Playgroud)
删除 ingress-nginx 命名空间内的 Pod 会使kubectl --namespace ingress-nginx delete pod --all控制器创建新的 Pod,最后端口在主机网络上可用。
我知道情况可能会有所不同,但希望有人可以通过此节省几分钟。
| 归档时间: |
|
| 查看次数: |
12385 次 |
| 最近记录: |