完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。
简介 在Kubernetes集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力,您可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。 高可靠部署架构 高可靠性首先要解决的就是单点故障问题,一般常用的是采用多副本部署的方式,我们在Kubernetes集群中部署高可靠Ingress接入层同样采用多节点部署架构,同时由于Ingress作为集群流量接入口,建议采用独占Ingress节点的方式,以避免业务应用与Ingress服务发生资源争抢。 如上述部署架构图,由多个独占Ingress实例组成统一接入层承载集群入口流量,同时可依据后端业务流量水平扩缩容Ingress节点。当然如果您前期的集群规模并不大,也可以采用将Ingress服务与业务应用混部的方式,但建议进行资源限制和隔离。 在阿里云容器服务集群中部署高可靠Ingress接入层 部署说明
1.Ingress SLB后端只会挂载打标了node-role.kubernetes.io/ingress=true的集群Node; 2.Ingress Pod只会被部署到打标了node-role.kubernetes.io/ingress=true的集群Node; 开始部署 1、创建 Kubernetes 集群 在创建集群之前,我们需要依据自身具体业务场景来适当规划集群的规模以及集群内各节点角色,比如业务节点数、Ingress节点数等,注意集群默认会初始化3台Master节点来部署集群管控服务。 我们通过阿里云容器服务控制台创建一个Kubernetes集群,这里以创建3台Worker节点集群为例。 2、打标 Ingress Node 由于测试集群规模较小,我们暂采用混部的方式:即3台Worker节点既作为业务节点又作为Ingress节点。我们给3台Worker节点同时打标node-role.kubernetes.io/ingress=true,注意不建议将Ingress Pod部署在集群Master节点上,因为Master节点承载着集群的所有管控服务,以避免集群接入流量过高时对管控服务造成影响。 ~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdb node-role.kubernetes.io/ingress=truenode "cn-hangzhou.i-bp1ecwpuisra0y0bizdb" labeled ~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdc node-role.kubernetes.io/ingress=truenode "cn-hangzhou.i-bp1ecwpuisra0y0bizdc" labeled ~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdd node-role.kubernetes.io/ingress=truenode "cn-hangzhou.i-bp1ecwpuisra0y0bizdd" labeled ~ kubectl get noNAME STATUS ROLES AGE VERSIONcn-hangzhou.i-bp11psgsvkxklfvb8vvj Ready master 1h v1.9.3cn-hangzhou.i-bp183t1a82uun0s12ddr Ready master 1h v1.9.3cn-hangzhou.i-bp1ecwpuisra0y0bizdb Ready ingress 56m v1.9.3cn-hangzhou.i-bp1ecwpuisra0y0bizdc Ready ingress 56m v1.9.3cn-hangzhou.i-bp1ecwpuisra0y0bizdd Ready ingress 57m v1.9.3cn-hangzhou.i-bp1gb2498ykvy23k0jsy Ready master 1h v1.9.3 3、创建 Ingress 服务 集群初始化时默认部署了一个Ingress Controller,具体部署说明请参考。这里我们通过DaemonSet方式将其重新部署到目标Ingress Node上,当然您也可以采用Deployment配合亲和性方式来部署。 ~ kubectl -n kube-system delete deploy nginx-ingress-controllerdeployment "nginx-ingress-controller" deleted ~ kubectl create -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-controller-ds.ymldaemonset "nginx-ingress-controller" created ~ kubectl -n kube-system get ds | grep nginx-ingress-controllernginx-ingress-controller 3 3 3 3 3 node-role.kubernetes.io/ingress=true 42s ~ kubectl -n kube-system get pod -o wide | grep nginx-ingress-controllernginx-ingress-controller-57j4l 1/1 Running 0 1m 172.16.3.2 cn-hangzhou.i-bp1ecwpuisra0y0bizddnginx-ingress-controller-d7cxb 1/1 Running 0 1m 172.16.5.7 cn-hangzhou.i-bp1ecwpuisra0y0bizdcnginx-ingress-controller-m9w75 1/1 Running 0 1m 172.16.4.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdb 4、更新 Ingress SLB 服务 集群初始化时默认部署了一个Ingress LoadBalancer Service,具体部署说明请参考,这里需要更新下Ingress LoadBalancer Service,以自动识别挂载打标的Ingress Node。 ~ kubectl apply -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-slb-service.ymlservice "nginx-ingress-lb" configured 5、此时具有3个Ingress实例的高可靠接入层部署完成。 快速扩容 随着您的业务流量不断增长,集群规模不断扩大,您只需要简单地通过打标的方式来快速扩容Ingress接入层。 全方位监控 集群Ingress接入层的监控是必不可少的,您可以通过阿里云容器服务监控以及阿里云云监控对Ingress Pod和Ingress Node进行全方位监控。 原文链接 阅读更多干货好文,请关注扫描以下二维码: |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:21 , Processed in 0.539874 second(s), Total 72, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号