共计 2142 个字符,预计需要花费 6 分钟才能阅读完成。
如何理解 kubernetes 中的 Ingress,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一:简介
Ingress 资源对象,用于将不同 URL 的访问请求转发到后端不同的 Service, 以实现 HTTP 层的业务路由机制。Kubernetes 使用一个 Ingress 策略定义和一个具体的 Ingress Controller, 两者结合并实现了一个完整的 Ingress 负载均衡器。
Ingress Controller 将基于 Ingress 规则将客户请求直接转发到 Service 对应的后端 Endpoint 上,这样会跳过 kube-proxy 的转发功能,kube-proxy 不再起作用。
二:使用 Ingress
具体使用过程,请参照之前的博文 http://blog.itpub.net/28624388/viewspace-2152650/
1. 创建 Ingress Controller
在定义 Ingress 策略之前,需要先部署 Ingress Controller, 以实现为所有后端 Service 提供一个统一的入口。Ingress Controller 需要实现基于不同 HTTP URL 向后转发的负载分发机制,并可以灵活设置 7 层的负载分发策略。如果公有云服务商提供该类型的 HTTP 路由 LoadBalancer, 则可以设置其为 Ingress Controller.
在 Kubernetes 中,Ingress Controller 将以 Pod 的形式运行,监控 apiserver 的 /ingress 端口后的 backend services, 如果 service 发生变化,则 Ingress Controller 应用自动更新其转发规则。
2. 安装 backend 服务
为了让 Ingress Controller 能够正常启动,还需要为它配置一个默认的 backend,用于在客户端访问的 URL 地址不存在时,能够返回一个正确的 404 应答。这个 backend 服务用任何应用实现都可以,只要满足默认对路径的访问返回 404 应答,并且提供 /healthz 完成对它的健康检查。
三:Ingress 策略配置
1. 转发到单个后端服务上
点击 (此处) 折叠或打开
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: myweb
servicePort: 8080
客户端到 Ingress Controller 的访问请求都将被转发到后端的唯一 Service 上,这种情况下 Ingress 无须定义任何 rule.
2. 同一域名下,不同的 URL 路径被转发到不同的服务上
点击 (此处) 折叠或打开
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
– host: mywebsite.com
http:
paths:
– path: /web
backend:
serviceName: web-service
servicePort: 80
– path: /api
backend:
serviceName: api-service
servicePort: 8081
3. 不同的域名被转发到不同的服务上
点击 (此处) 折叠或打开
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
– host: foo.bar.com
http:
paths:
– backend:
serviceName: service1
servicePort: 80
– host: bar.foo.com
http:
paths:
– backend:
serviceName: service2
servicePort: 80
4. 不使用域名的转发规则
点击 (此处) 折叠或打开
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
rules:
– http:
paths:
– path: /web
backend:
serviceName: web-service
servicePort: 80
注意,使用无域名的 Ingress 转发规则时,将默认禁用非安全 HTTP, 强制启用 HTTPS. 可以在 Ingress 的定义中设置一个 annotation ingress.kubernetes.io/ssl-redirect=false 来关闭强制启用 HTTPS 的设置。
四:Ingress TLS 安全设置
1. 创建自签名的密钥和 SSL 证书文件
2. 将证书保存到 Kubernetes 中的一个 Secret 资源对象上
3. 将该 Secret 对象设置到 Ingress 上
关于如何理解 kubernetes 中的 Ingress 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。