当Kubernets遇上阿里云 -之七层负载均衡(一).
我们知道Kubernetes的service只能实现基于4层的负载均衡,无法提供7层之上的许多特性,诸如基于URL的负载均衡,SSL支持,三方授权等等;Ingress可以实现七层负载均衡的许多功能,唯一的遗憾就是无法提供一个固定的接入IP。想想当你为业务申请了一个域名后准备将域名绑定到IngressIP上的时候,却发现后端IP会时不时的变一下是怎样的心情。本文结合阿里云SLB为Kubernetes服务提供7层之上的负载均衡。本文假设您已经有一个支持阿里云的Kubernetes部署,参考。
本教程为系列教程,会陆续介绍如何在阿里云上实现kubernetes的七层负载均衡,并支持诸如健康检查,带宽控制,SSL,白名单管理,三方权限验证,限流,URL重写等特性。
前置条件
- 对Kubernetes Service及Ingress有一定的了解。
- 对NginxIngressController有一定的了解。
- 已经按照当 Kubernetes 遇到阿里云部署好一个可用的Kubernetes集群。
- 阿里云账号
七层负载均衡服务拓扑
使用hostNetwork的模式部署两个NginxIngressController Pod作为七层负载均衡服务,然后为该Nginx Pod提供一个阿里云SLB接入点。
部署IngressController
运行NginxIngressController
NginxIngressController的运行需要有一个默认的http后端服务器用来返回自定义的404与200页面,因此通过下面的yaml文件可以创建一个default_http_server服务,一个NginxIngressController RC.
- 监听端口为宿主机的80和443,确保该端口没有占用。
- 注意自定义
--ingress-class="nginx-1"
,这个用来设定NginxController会处理哪些Ingress. 请留意这个值 --publish-service
指定使用CloudProvider提供的IP。
root@iZbp:~# curl -L http://aliacs-k8s.oss-cn-hangzhou.aliyuncs.com/conf/ingress/0.9.0/nginx-ingress-controller.yaml -o nginxcontroller-0.9.0-beta.yml
root@iZbp:~# vi nginxcontroller-0.9.0-beta.yml
root@iZbp:~# kubectl apply -f nginxcontroller-0.9.0-beta.yml
为NginxIngressController创建阿里云SLB。
由于NginxIngressController又RC启动,无固定IP。因此需要在NginxIngressController上堆叠一个阿里云SLB。通过使用annotationservice.beta.kubernetes.io/alicloud-loadbalancer-ProtocolPort: "http:80,http:443"
和service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckFlag: off
来启用阿里云SLB的Http协议,并关闭SLB的健康检查,健康检查相关功能交给NginxIngressControllerPod.阿里云SLB配置参见
root@iZbp:~# curl -L http://aliacs-k8s.oss-cn-hangzhou.aliyuncs.com/conf/ingress/0.9.0/static-ip-svc.yaml -o alicloud-slb-4nginxingress.yml
root@iZbp:~# vi alicloud-slb-4nginxingress.yml
root@iZbp:~# kubectl apply -f alicloud-slb-4nginxingress.yml
root@iZbp:~# kubectl get svc --namespace=kube-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default-http-backend 172.19.7.83 <none> 80/TCP 14h
nginx-ingress-lb 172.19.13.53 116.62.82.64 80:32047/TCP,443:31655/TCP 14h
现在116.62.82.64就是阿里云为您提供的SLB地址,访问http://116.62.82.64
, 您会被重定向到一个404页面,就是我们刚才创建的default_http_server.
到此,我们就部署好了一个可用的安全的IngressController了,接下来部署实际应用来测试一下。
运行示例应用
首先创建demo应用echoserver及其service.
按照如下命令创建一个阿里云SLB,然后您以后所有annotations包含kubernetes.io/ingress.class: "nginx-1"
的Ingress流量都会通过这个SLB进入。
root@iZbp:~# curl -L http://aliacs-k8s.oss-cn-hangzhou.aliyuncs.com/conf/ingress/0.9.0/http-svc.yaml -o echoservers.yml
root@iZbp:~# vi echoservers.yml
root@iZbp:~# kubectl apply -f echoservers.yml
root@iZbp:~# kubectl get svc
root@iZbp:~# kubectl get po
为echoserver创建Ingress
使用下面列出的Ingress文件创建一个Ingress,后端指向http-svc. 注意设置annotation为kubernetes.io/ingress.class: "nginx-1"
来使用前面创建的NginxIngressController和阿里云SLB。 本节先忽略tls配置,但nginx默认包含一个自带证书。
root@iZbp:~# cat << EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: nginx-ingressannotations:kubernetes.io/ingress.class: "nginx-1"
spec:#tls:# This assumes tls-secret exists.#- secretName: tls-secretrules:- http:paths:- backend:# This assumes http-svc exists and routes to healthy endpoints.serviceName: http-svcservicePort: 80
EOFroot@iZbp:~# kubectl get ing
NAME HOSTS ADDRESS PORTS AGE
nginx-ingress * 116.62.82.64 80 13h
现在再次访问http://116.62.82.64
,您会被重定向到https并且浏览器给出一个安全提示,这是因为我们并未配置自己的证书。选择忽略,然后您会看到一个打印了请求信息的页面,说明应用运行成功。然后您可以将这个IP地址绑定到您购买的域名上了。
小结
本文介绍了如何在阿里云上为Kubernetes创建七层负载均衡服务。这是一个一个简单的示例,接下来我们将介绍更加复杂的配置,包含SSL支持,七层URI路由,及多节点负载均衡应对大流量访问策略等等
转载于:https://www.cnblogs.com/nongchaoer/p/6410938.html
当Kubernets遇上阿里云 -之七层负载均衡(一).相关推荐
- 浅析阿里云网络-SLB负载均衡
浅析阿里云网络-SLB负载均衡 最近有很多朋友问阿里云网络-SLB负载均衡是什么?怎么样?小编赵一八笔记特意从网上整理相关资料,希望能够帮到大家. 你可以了解阿里云网络SLB负载均衡产品进化史. 你可 ...
- 企业运维之七层负载均衡--Haproxy
企业运维之七层负载均衡--Haproxy 1. 基础介绍 2. 负载均衡的类型 3. Haproxy 的部署 3.1 Haproxy 实现负载均衡和监控 3.2 日志采集 3.3 调度算法 3.5 设 ...
- 阿里云的网站负载均衡解决方案
2015年5月,国务院印发了<关于进一步做好新形势下就业创业工作的意见>,全国范围内刮起了"大众创业,万众创新"的高潮.于是中关村电子市场悄然改成了创业大街,美食街变成 ...
- 阿里云SLB实现负载均衡
一.SLB概念 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务. ...
- 阿里云SLB(负载均衡)获取真实ip地址, log_format配置
nginx.conf配置文件 #vim /usr/local/nginx/conf/nginx.conf log_format access '$remote_addr - $remote_user ...
- 阿里云dns做负载均衡
控制台->运维管理->域名->解析->解析设置->添加服务器地址->权重配置->开启权重->设置权重->默认1:1.
- 四层和七层负载均衡的区别
负载均衡设备也常被称为"四到七层交换机",那补充: 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP ...
- 七层负载均衡--Haproxy
七层负载均衡--Haproxy 1 Haproxy的定义 2 七层负载均衡的概念 3 四层和七层负载均衡的对比 4 Haproxy的安装及部署 4.1 Haproxy实现负载均衡 4.2 建立监控 4 ...
- 四层和七层负载均衡的区别介绍--转
简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均 ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
最新文章
- Java变量名的命名方式
- java数组的四个要素_Java零基础系列教程04Java数组
- HDU 2242 考研路茫茫——空调教室
- Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)
- 11-JSP开发模型
- github 代理_GitHub访问提速方法
- koa如何实现Oauth2(一)
- shell语法中的test命令用法
- 2018下半年初级程序员考试时间
- 使用PIL和OpenCV在PC上模拟动画OLED / LCD显示器
- 整数变百分数C语言,整数百分比
- github windows系统监控_辅助Windows 自带的微软五笔字型输入法,解决长期存在的7大问题...
- 看到这类代码,别再说你不认识了!手把手带你认识初阶结构体(结构体类型的声明、初始化、成员访问与传参,全在这篇文章里)
- windows7计算机无法到达,win7电脑突然无法进入到安全模式了怎么办?
- 高校供需撮合交易平台规范管理及创新发展
- android监控手机使用次数,原来手机还自带监控功能,手机使用记录一清二楚,赖也赖不掉...
- 哪款软件可以测试刘海,测试自己适合什么刘海 按照脸型来选一测便知
- VC的IP控件的用法
- Java后端_Properties集合的遍历
- 详解SQL的四种连接-左外连接、右外连接、内连接、全连接
热门文章
- webstorm运行的端口在哪看_webstorm(10.0.2)的端口号修改
- dotenv 是什么 怎么使用
- 并发控制中存在问题及解决方案
- matlab图像分割基于小波变换,图小波变换在图像分割中的应用研究
- php sql慢查询,Select多行SQL语句慢查询优化
- Centos7 Kubernetes(k8s) 开发服务器(单服务器)部署 grafana 度量分析和可视化
- 5)Thymeleaf 模板布局 th:fragment、th:replace、th:insert、th:remove
- android eventbus view,Android-EventBus框架详细介绍与简单实现
- 拖拽功能 php,js实现拖拽功能
- 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍