阿里云ACK 使用LoadBalancer和Ingress访问web网站

前言

最近在学习阿里云k8s相关容器服务ACK,因而本身建立了ACK集群,配置好了SLB、NAT、Node、EIP等相关操做,因而建立了next.js项目,并经过发布镜像到阿里云容器服务,因而在ACK上建立无状态应用选用该镜像来访问next.js网站,经过了解k8s有两种访问方式:LoadBalancer和Ingress,如今记录下来供你们参考。html

前置操做

无论是LoadBalancer仍是Ingress都要进行前置操做,这里先来介绍下如何去建立next.js应用。
一、配置应用基本信息
首先咱们在工做负载下面->点击无状态->右上角点击使用镜像建立nginx

image.png
二、容器配置
咱们选择镜像,使用官方提供的nginx镜像,点击选择肯定,其它参数默认便可。
image.png
三、高级配置
这里只需默认便可,后面会介绍如何建立Service和Ingress,点击建立。
image.png负载均衡

配置Ingress访问

一、建立Service
在配置Ingress以前咱们要建立Service,才能暴露Endpoint。在服务与路由菜单下点击服务,点击右上角有建立按钮。
名称本身输入便可,类型选择虚拟集群IP,并关联my-nginx,端口都设置成80,80,或者next.js的80,3000,看实际状况设定。
设定好了以后点击建立便可。
image.png
二、建立Ingress
建立好Service以后,咱们再点击左侧菜单服务与路由下面的路由,点击右上角建立按钮,打开配置面板,输入自定义名称,输入域名,服务选择上一步咱们建立的my-nginx-svc便可,点击建立。
image.png学习

三、域名访问
建立好以后咱们能够经过域名或者ip便可访问咱们的nginx页面。
image.png
四、注意事项
默认状况下阿里云K8S的ACK的组件管理菜单里面有个Nginx-Ingress-Controller组件,而且会多出一个监听是80和443的SLB,另外若是你的SLB是私网环境,那么你得配置EIP绑定到该SLB,这样你才能真正能访问你的网站了,若是是公网就忽略上面操做。还有一点就是你的域名解析问题,必定要解析到你的SLB所在的公网地址。
image.png
image.png网站

配置LoadBalancer访问

这里又能够分为:一、经过自动建立SLB服务公开应用 二、经过已有SLB服务公开应用阿里云

一、经过自动建立SLB服务公开应用

接着上面的前置操做,选择服务与路由菜单下面的服务菜单,而后点击右上角的建立按钮打开建立面板,接着咱们输入服务名称,类型选择->负载均衡->公网访问->新建SLB,接着关联咱们在前置操做建立的my-nginx,外部流量策略为Local,配置对应端口,再添加相关注解,下图有解释注解干吗用的,点击建立,再点击外部IP端口便可访问咱们的网站了。
image.png
image.pngspa

二、经过已有SLB服务公开应用

和上面的操做类型,类型选择->负载均衡->公网访问->使用已有SLB->选择SLB列表下面的SLB便可,点击外部端口便可访问,跟上面相同。
image.png
三、注意事项
上面咱们选择的是类型选择->负载均衡->公网访问,若是你的SLB是私网,这里也要配置成相同的私网访问,不然访问失败。3d

总结

一、建立k8s集群以后会建立两个SLB,一个是APIServer监听端口6445,一个是nginx-ingress-controller监听端口是80和443。
二、若是你的Service的type=ClusterIP,那么使用上面的nginx-ingress-controller的SLB便可
若是你的Service的type=LoadBalancer,那么你要么经过自动建立SLB服务公开应用,要么经过已有SLB服务公开应用,取决于你本身。
三、这里要提醒一下,若是你的SLB是支持公网的话这里不作任何操做,可是若是你的SLB是私网环境,那么你的SLB要配置EIP,容许公网访问,不然你内网的地址是打不开你的nginx网址页面的
四、LoadBalancer和Ingress的最大区别在于LB不须要建立Ingress,而Ingress必需要建立。htm

引用

经过负载均衡类型Service公开应用.mov
经过使用已有SLB的服务公开应用
建立无状态工做负载Deployment
经过Annotation配置负载均衡ip

相关文章
相关标签/搜索