如何理解kubernetes中的Ingress

77次阅读
没有评论

共计 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 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2142字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)