深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
116708 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

39 | 谈谈Service与Ingress

提供NodePort类型的Service暴露Nginx服务
支持Nginx配置文件的定制
根据Ingress对象生成Nginx配置文件
Ingress的灵活度和自由度对容器用户非常有意义
Ingress用于HTTP相关操作和TLS配置
Ingress实现了全局负载均衡器的抽象
希望Kubernetes内置全局负载均衡器
为每个Service创建负载均衡服务浪费成本
LoadBalancer类型的Service在Cloud Provider中创建负载均衡服务
三种暴露Service的方法
Nginx Ingress Controller
支持多种反向代理项目的Ingress Controller
Ingress Controller根据Ingress对象提供代理能力
Ingress对象的核心内容是反向代理服务的配置描述
通过IngressRule对请求进行转发
Ingress对象描述了代理规则
为了代理不同后端Service而设置的负载均衡服务
Kubernetes对“反向代理”的抽象
Ingress如何定义以满足不同域名访问不同Service的需求?
Service
Ingress
思考题
Ingress与Service

该思维导图由 AI 生成,仅供参考

你好,我是张磊。今天我和你分享的主题是:谈谈 Service 与 Ingress。
在上一篇文章中,我为你详细讲解了将 Service 暴露给外界的三种方法。其中有一个叫作 LoadBalancer 类型的 Service,它会为你在 Cloud Provider(比如:Google Cloud 或者 OpenStack)里创建一个与该 Service 对应的负载均衡服务。
但是,相信你也应该能感受到,由于每个 Service 都要有一个负载均衡服务,所以这个做法实际上既浪费成本又高。作为用户,我其实更希望看到 Kubernetes 为我内置一个全局的负载均衡器。然后,通过我访问的 URL,把请求转发给不同的后端 Service。
这种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的 Ingress 服务。
所以,Ingress 的功能其实很容易理解:所谓 Ingress,就是 Service 的“Service”。
举个例子,假如我现在有这样一个站点:https://cafe.example.com。其中,https://cafe.example.com/coffee,对应的是“咖啡点餐系统”。而,https://cafe.example.com/tea,对应的则是“茶水点餐系统”。这两个系统,分别由名叫 coffee 和 tea 这样两个 Deployment 来提供服务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes中Ingress的作用和实际应用是本文的重点。文章深入介绍了Ingress的概念,将其解释为Kubernetes对反向代理的一种抽象,并详细介绍了如何使用Ingress对象来描述转发规则。以Nginx Ingress Controller为例,说明了部署和使用Ingress机制的方法,还介绍了Nginx Ingress Controller的工作原理和配置方法。此外,文章还提到了在Bare-metal环境中创建Service的步骤,以及在集群中部署应用Pod和创建Ingress所需的SSL证书和密钥的操作步骤。总的来说,本文全面而深入地阐述了Ingress的设计思想和使用方法,为读者提供了宝贵的技术指导。文章还提到了Ingress的灵活度和自由度,对于使用容器的用户来说是非常有意义的。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(73)

  • 最新
  • 精选
  • wang jl
    文章里面这个nginx ingress只是api网关啊,负载均衡体现在哪里?其实还是service做的?

    作者回复: 是的

    2020-03-03
    3
    18
  • 黄巍
    「但是,相信你也应该能感受到,由于每个 Service 都要有一个负载均衡服务,所以这个做法实际上既浪费成本又高。」没错,下周的 KubeCon 我会做一个关于共享 4 层 LoadBalancer 的session :)

    作者回复: 听起来就很给力

    2018-12-05
    3
    12
  • wang jl
    lvs->nginx->lvs->service 这操作骚得可以。 关键是lvs还是nat模式的。

    作者回复: 如果你愿意,还可以继续往前面搭

    2020-03-03
    6
  • Adam
    感觉再加上一层ingress,又多了一层转发,性能上会不会损失比较大。

    作者回复: 多层lb的方案不是挺普遍的?

    2018-12-10
    6
  • 勤劳的小胖子-libo
    老师,为什么在创建 Ingress 所需的 SSL 证书(tls.crt)和密钥(tls.key)之后,使用curl命令还需要加上--insecure. "curl --resolve cafe.example.com:$IC_HTTPS_PORT:$IC_IP https://cafe.example.com:$IC_HTTPS_PORT/tea --insecure" 我的理解是:创建的SSL证书和密钥没有通过CA验证,所以要加上--secure. 对吗?

    作者回复: 对的,假证书,哈哈

    2018-11-27
    2
    6
  • zylv
    ingress-controller 里面如果不配置域名,配置ip,可以吗

    作者回复: 公有IP可以

    2018-11-21
    2
    3
  • 左氧佛沙星人
    请问各位大神和老师 可以看到,这个 Service 的唯一工作,就是将所有携带 ingress-nginx 标签的 Pod 的 80 和 433 端口bao lu出去。 为啥需要创建一个svc呢?为啥需要bao lu80和443呢?

    作者回复: 因为外部的用户需要通过 http/https 方式访问这个pod

    2020-03-11
    1
  • Holy
    K8s目前这几类负载均衡都属于服务端负载均衡,优点很明显,对客户端友好透明,无需额外的感知工作,缺点是在大流量高并发对性能有要求的场景,负载均衡器可能会变为单点瓶颈,不知道自己理解的对不对

    作者回复: service的话没有单点的问题啊

    2018-11-28
    3
    1
  • 陈小虎
    这种非系统类控制器本来就主要部署在work-node上吧:)

    作者回复: 没有固定约束

    2018-11-21
    1
  • 虎虎❤️
    思考题: spec: rules: - host: www.mysite.com http: paths: - backend: serviceName: site-svc servicePort: 80 - host: forums.mysite.com http: paths: - backend: serviceName: forums-svc servicePort: 80
    2018-11-21
    135
收起评论
显示
设置
留言
73
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部