第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

理解k8s 的 Ingress

標(biāo)簽:
Kubernetes

暴露一个http服务的方式

service 是 k8s 暴露http服务的默认方式, 其中 NodePort 类型可以将http 服务暴露在宿主机的端口上,以便外部可以访问。 service模式的结构如下.

service -> label selector -> pods 
31217 -> app1 selector -> app1 1234
31218 -> app2 selector -> app2 3456
31218 -> app2 selector -> app2 4567

模式的优点

结构简单, 容易理解。

模式缺点

  1. 一个app 需要占用一个主机端口

  2. 端口缺乏管理

  3. L4转发, 无法根据http header 和 path 进行路由转发

Ingress 模式

在service 之前加了一层ingress,结构如下

            ingress -> service -> label selector -> pods
            www.app1.com -> app1-service -> app1 selector -> app1 1234
80   ->     www.app2.com -> app2-service -> app2 selector -> app2 3456            www.app3.com -> app3-service -> app3 selector ->app3 4567

模式的优点

  1. 增加了7层的识别能力,可以根据  http header, path 进行路由转发

模式缺点

  1. 复杂度提升

理解Ingress 实现

Ingress 的实现分为两个部分  Ingress Controller  和 Ingress .

  1. Ingress Controller 是流量的入口,是一个实体软件, 一般是Nginx 和 Haproxy 。

  2. Ingress 描述具体的路由规则。

Ingress Controller  会监听 api server上的 /ingresses 资源 并实时生效。
Ingerss 描述了一个或者多个 域名的路由规则,以 ingress 资源的形式存在。

简单说: Ingress 描述路由规则, Ingress Controller 实时实现规则。

设计理念

k8s 有一个贯穿始终的设计理念,即需求和供给的分离。 Ingress Controller和 Ingress 的实现也很好的实践了这一点。 要理解k8s ,时刻记住 需求供给分离的设计理念。

Ingress Controller 注意事项

  1. 一个集群中可以有多个 Ingress Controller, 在Ingress 中可以指定使用哪一个Ingress Controller

  2. 多个Ingress 规则可能出现竞争

  3. Ingress Controller 本身需要以hostport 或者 service形式暴露出来。 云端可以使用云供应商lb 服务。

  4. Ingress 可以为多个命名空间服务

Ingress Controller 做哪些设置

我们以nginx-ingress 为例. 我们可以设置如下几个全局参数

  1. 全局timeout时间

  2. 全局gzip 压缩

  3. https 和 http2

  4. 全局 请求数量的 limit

  5. vts 实时nginx 状态,可以监控流量

这里只列出了部分, 更多请参考文档 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/configmap.md

如何设置 Ingress Controller

两种方式 configmap 和 custom template。 custom template 用来设置configmap不能设置的一些高级选项, 通常情况下,使用configmap 已经够用。

使用configmap 需要确保Ingress Controller时,启用了 configmap参数

Ingress 可以做哪些设置

我们以nginx-ingress 为例. 我们可以设置如下几参数

  1. 基于http-header  的路由

  2. 基于 path 的路由

  3. 单个ingress 的 timeout (不影响其他ingress 的 timeout 时间设置)

  4. 登录验证

  5. cros

  6. 请求速率limit

  7. rewrite 规则

  8. ssl
    这里只列出了部分, 更多请参考文档 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/annotations.md

如何设置 Ingress

Ingress只能通过Annotations 进行设置。并且需要确保 Ingress Controller 启动时, 启用了 Annotations  选项

需求和供给分离的优点

  1. Ingress Controller 放在独立命名空间中, 由管理员来管理。

  2. Ingress 放在各应用的命名空间中, 由应用运维来设置。

如此可以实现权限的隔离, 又可以提供配置能力 。

总结

  1. Ingress Controller 负责实现路由需求, Ingress负责描述路由需求

  2. Ingress Controller 一个集群可以有多个

  3. Ingress Controller 通过Configmap设置, Ingress 通过Annotations设置

  4. Ingress Controller 设置全局规则, Ingress 设置局部规则

  5. Ingress Controller 可为多个命名空间服务。

  6. 需求供给分离可以做到权限隔离,又能提供配置能力。



作者:Daniels_Cai
链接:https://www.jianshu.com/p/189fab1845c5


點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消