共计 2669 个字符,预计需要花费 7 分钟才能阅读完成。
本篇文章为大家展示了 Kubernetes Ingress 高可靠部署的实践是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
简介
在 Kubernetes 集群中,Ingress 是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力,您可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等。作为集群流量接入层,Ingress 的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的 Ingress 接入层。
高可靠部署架构
高可靠性首先要解决的就是单点故障问题,一般常用的是采用多副本部署的方式,我们在 Kubernetes 集群中部署高可靠 Ingress 接入层同样采用多节点部署架构,同时由于 Ingress 作为集群流量接入口,建议采用独占 Ingress 节点的方式,以避免业务应用与 Ingress 服务发生资源争抢。
如上述部署架构图,由多个独占 Ingress 实例组成统一接入层承载集群入口流量,同时可依据后端业务流量水平扩缩容 Ingress 节点。当然如果您前期的集群规模并不大,也可以采用将 Ingress 服务与业务应用混部的方式,但建议进行资源限制和隔离。
在阿里云容器服务集群中部署高可靠 Ingress 接入层部署说明
Ingress SLB:Ingress 接入层前端 SLB 实例
Ingress Node:部署 Ingress Pod 的集群节点
Ingress Pod:Ingress 服务实例
这三者之间依据标签 node-role.kubernetes.io/ingress=true 进行关联:
Ingress SLB 后端只会挂载打标了 node-role.kubernetes.io/ingress=true 的集群 Node;
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=true
node cn-hangzhou.i-bp1ecwpuisra0y0bizdb
3、创建 Ingress 服务
集群初始化时默认部署了一个 Ingress Controller,具体部署说明请参考。这里我们通过 DaemonSet 方式将其重新部署到目标 Ingress Node 上,当然您也可以采用 Deployment 配合亲和性方式来部署。
~ kubectl -n kube-system delete deploy nginx-ingress-controller
deployment nginx-ingress-controller deleted
~ kubectl create -f https://acs-k8s-ingress.oss-cn-hangzhou.aliyuncs.com/nginx-ingress-controller-ds.yml
daemonset nginx-ingress-controller created
~ kubectl -n kube-system get ds | grep nginx-ingress-controller
nginx-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-controller
nginx-ingress-controller-57j4l 1/1 Running 0 1m 172.16.3.2 cn-hangzhou.i-bp1ecwpuisra0y0bizdd
nginx-ingress-controller-d7cxb 1/1 Running 0 1m 172.16.5.7 cn-hangzhou.i-bp1ecwpuisra0y0bizdc
nginx-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.yml
service nginx-ingress-lb configured
5、此时具有 3 个 Ingress 实例的高可靠接入层部署完成。
快速扩容
随着您的业务流量不断增长,集群规模不断扩大,您只需要简单地通过打标的方式来快速扩容 Ingress 接入层。
全方位监控
集群 Ingress 接入层的监控是必不可少的,您可以通过阿里云容器服务监控以及阿里云云监控对 Ingress Pod 和 Ingress Node 进行全方位监控。
上述内容就是 Kubernetes Ingress 高可靠部署的实践是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。