天天看点

当Kubernets遇上阿里云 -之七层负载均衡(一).

当Kubernets遇上阿里云 -之七层负载均衡(一).

本教程为系列教程,会陆续介绍如何在阿里云上实现kubernetes的七层负载均衡,并支持诸如健康检查,带宽控制,ssl,白名单管理,三方权限验证,限流,url重写等特性。

对kubernetes service及ingress有一定的了解。

对nginxingresscontroller有一定的了解。

阿里云账号

使用hostnetwork的模式部署两个nginxingresscontroller pod作为七层负载均衡服务,然后为该nginx pod提供一个阿里云slb接入点。

当Kubernets遇上阿里云 -之七层负载均衡(一).

nginxingresscontroller的运行需要有一个默认的http后端服务器用来返回自定义的404与200页面,因此通过下面的yaml文件可以创建一个default_http_server服务,一个nginxingresscontroller rc.

监听端口为宿主机的80和443,确保该端口没有占用。

注意自定义<code>--ingress-class="nginx-1"</code>,这个用来设定nginxcontroller会处理哪些ingress. 请留意这个值

<code>--publish-service</code> 指定使用cloudprovider提供的ip。

现在116.62.82.64就是阿里云为您提供的slb地址,访问<code>http://116.62.82.64</code>, 您会被重定向到一个404页面,就是我们刚才创建的default_http_server.

到此,我们就部署好了一个可用的安全的ingresscontroller了,接下来部署实际应用来测试一下。

按照如下命令创建一个阿里云slb,然后您以后所有annotations包含<code>kubernetes.io/ingress.class: "nginx-1"</code>的ingress流量都会通过这个slb进入。

使用下面列出的ingress文件创建一个ingress,后端指向http-svc. 注意设置annotation为<code>kubernetes.io/ingress.class: "nginx-1"</code>来使用前面创建的nginxingresscontroller和阿里云slb。 本节先忽略tls配置,但nginx默认包含一个自带证书。

现在再次访问<code>http://116.62.82.64</code>,您会被重定向到https并且浏览器给出一个安全提示,这是因为我们并未配置自己的证书。选择忽略,然后您会看到一个打印了请求信息的页面,说明应用运行成功。然后您可以将这个ip地址绑定到您购买的域名上了。

本文介绍了如何在阿里云上为kubernetes创建七层负载均衡服务。这是一个一个简单的示例,接下来我们将介绍更加复杂的配置,包含ssl支持,七层uri路由,及多节点负载均衡应对大流量访问策略等等。敬请期待