Ingress 及 Ingress Controller 简介
Ingress
:是k8s 资源对象
,用于对外暴露服务,该资源对象定义了不同主机名(域名)及 URL 和对应后端 Service(k8s Service)的绑定,根据不同的路径路由 http 和 https 流量。
Ingress Contoller
:是一个pod服务
,封装了一个Web前端负载均衡器
,同时在其基础上实现了动态感知Ingress
并根据Ingress的定义动态生成前端web负载均衡器的配置文件
,比如Nginx Ingress Controller
本质上就是一个Nginx
,只不过它能根据 Ingress 资源的定义动态生成 Nginx 的配置文件,然后动态 Reload
。
Ingress Controller 工作架构
- 借用
traefik
官方的图
Ingress Nginx 部署
- 下面是根据官方yaml文件基础上修改
1 | apiVersion: v1 |
配置支持 Socket.io
- 重点是使用
nginx $http_x_forwarded_for
做客户端ip地址一致hash,实现会话保持1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: websocket
namespace: default
annotations:
# 代理发送超时
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
# 代理读取超时
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
# 代理连接超时
nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600"
# 基于客户端出口ip哈希
nginx.ingress.kubernetes.io/upstream-hash-by: "$http_x_forwarded_for"
spec:
rules:
- host: websocket.example.com
http:
paths:
- backend:
serviceName: websocket
servicePort: 8080
path: /
参考链接
官方部署文档
https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yamlnginx annotations配置
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
---本文结束感谢您的阅读。微信扫描二维码,关注我的公众号---
本文作者:
Peng Yang
本文链接: https://www.yp14.cn/2019/11/19/K8s-Ingress-Nginx-支持-Socket-io/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://www.yp14.cn/2019/11/19/K8s-Ingress-Nginx-支持-Socket-io/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!