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

39 | 谈谈Service与Ingress

你好,我是张磊。今天我和你分享的主题是:谈谈 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》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(73)

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

    作者回复: 是的

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

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

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

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

    5
  • 勤劳的小胖子-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. 对吗?

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

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

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

    3
  • zylv
    ingress-controller 里面如果不配置域名,配置ip,可以吗

    作者回复: 公有IP可以

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

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

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

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

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

    作者回复: 没有固定约束

  • 虎虎❤️
    思考题: 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
    130
收起评论
显示
设置
留言
73
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部