《Kubernetes网络权威指南》读书笔记 | Kubernetes极客们的日常:DIY一个Ingress Controller

本文详细介绍了如何在Kubernetes中使用Ingress进行服务访问控制,涉及IngressController的工作原理、NginxIngressController的部署与配置,以及如何实现L4和L7负载均衡。
摘要由CSDN通过智能技术生成

书籍来源:《Kubernetes网络权威指南:基础、原理与实践》

一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:《Kubernetes网络权威指南》读书笔记 | 汇总_COCOgsta的博客-CSDN博客


要使用Kubernetes的Ingress访问集群内服务,需要准备三样东西:

  • 反向代理负载均衡器;
  • Ingress Controller;
  • Ingress API。

4.2.1 Ingress Controller的通用框架

Ingress Controller实质上可以理解为监视器,实时地感知后端Service、Pod等的变化;当得到这些变化信息后,I更新反向代理负载均衡器,并刷新其配置,起到服务发现的作用。Ingress Controller的通用框架如图4-12所示。

图4-12 Ingress Controller的通用框架

Ingress Controller将Ingress入口地址和后端Pod地址的映射关系(规则)实时刷新到Load Balancer的配置文件中,再让负载均衡器重载(reload)该规则,便可实现服务的负载均衡和自动发现。

4.2.2 Nginx Ingress Controller详解

Nginx Ingress Controller通过Kubernetes的annotations配置,为Ingress提供丰富的个性化配置。

部署一个Nginx Ingress Controller实例的命令非常简单,如下所示:

Nginx Ingress Controller的Deployment配置文件如下所示:

Nginx Ingress Controller容器监听在80和443端口上。Nginx Ingress Controller这个Deployment是在集群内部署的,还需要把它暴露给集群外。一个使用NodePort暴露服务的配置如下所示:

Nginx Ingress Controller会选择宿主机的一个IP地址(一般是默认网关对应网卡的IP)。

  1. 测试HTTP L7负载均衡

部署了官方的Nginx Ingress Controller后,再部署一个Nginx的测试应用并暴露为服务,配置如下所示:

然后,创建对应的一个Ingress对象,对外暴露之前创建的Nginx服务,配置文件如下所示:

找到Nginx Ingress Controller对应的容器后查看里面的Nginx配置文件,生成的对应配置段如下所示:

再找一台客户机,设置hosts文件,把域名nginx.testdomain.com设置到和Nginx Ingress Controller所在主机同集群的任意一个节点IP上,打开浏览器访问nginx.testdomain.com即可发现集群内的Nginx已经暴露在集群外。

  1. 如何实现L4负载均衡

Nginx Ingress Controller有以下两个启动参数:

Ingress API本身并没有关于L4负载均衡的相关定义,因此要想使用Nginx的L4代理功能(包括TCP和UDP),需要在Configmap中配置并传给Nginx Ingress Controller。

下面这个例子就是上文提到的ingress-nginx/tcp-services这个Configmap对象,意思是访问Ingress的3306端口,流量转发给default namespace中名为mysql的Service的3306端口。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值