摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的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进行关联:

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=true
node "cn-hangzhou.i-bp1ecwpuisra0y0bizdb" labeled~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdc node-role.kubernetes.io/ingress=true
node "cn-hangzhou.i-bp1ecwpuisra0y0bizdc" labeled~ kubectl label no cn-hangzhou.i-bp1ecwpuisra0y0bizdd node-role.kubernetes.io/ingress=true
node "cn-hangzhou.i-bp1ecwpuisra0y0bizdd" labeled~ kubectl get no
NAME                                 STATUS    ROLES     AGE       VERSION
cn-hangzhou.i-bp11psgsvkxklfvb8vvj   Ready     master    1h        v1.9.3
cn-hangzhou.i-bp183t1a82uun0s12ddr   Ready     master    1h        v1.9.3
cn-hangzhou.i-bp1ecwpuisra0y0bizdb   Ready     ingress   56m       v1.9.3
cn-hangzhou.i-bp1ecwpuisra0y0bizdc   Ready     ingress   56m       v1.9.3
cn-hangzhou.i-bp1ecwpuisra0y0bizdd   Ready     ingress   57m       v1.9.3
cn-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-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 高可靠部署最佳实践相关推荐

  1. nginx 集群部署_Nginx Ingress on TKE 部署最佳实践

    概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...

  2. Mendix基于腾讯云部署最佳实践

    本实践由腾讯云与西门子数字化工业软件授权发布,未经允许不得转载. 1.  概述 本文档介绍了西门子企业级应用开发平台Mendix应用快速托管到腾讯云容器服务(简称TKE)的最佳实践.该方案仅用于非生产 ...

  3. 全链路压测构建高可用应用最佳实践

    简介:电商大促.明星直播.在线教育等大量场景,用户访问量会在一定时间段剧增,或者在业务上云过程中需要高可用体系评估客户系统在云环境下面的性能表现,判断是否符合客户的预期. 通过阿里云的PTS+AHAS ...

  4. SAP(HANA+S/4)上云基础环境部署最佳实践

    简介:为提高客户服务水平及集团管理效率,客户选择了SAP解决方案.但是同时也对客户的IT基础设施提出了更多的要求.对此我们针对SAP上云基础设施选型.云原生产品.灾备方案设计,云上安全环境设计总结出了 ...

  5. k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性

    引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...

  6. 可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践

     写在前面 为了不违反广告法,我竭尽全力,不过"最佳实践"确是标题党无疑,如果硬要说的话 只能是个人最佳实践. 问题引出 可能很多新手都会遇到同样的问题:我要我的Asp.net ...

  7. 跨 AZ 部署最佳实践之 Zookeeper

    作者:焦振清 跨 AZ 部署是实现服务高可用较为有效的方法,同时也极具性价比.如果实现了跨 AZ 部署,不仅可以消除服务中的单点,同时还可以逐步建设如下能力:服务隔离,灰度发布,N+1 冗余,可谓一举 ...

  8. 跨AZ部署最佳实践之Elasticsearch

    作者:焦振清 跨AZ部署是实现服务高可用较为有效的方法,同时也极具性价比.如果实现了跨AZ部署,不仅可以消除服务中的单点,同时还可以逐步建设如下能力:服务隔离,灰度发布,N+1冗余,可谓一举多得.因此 ...

  9. android double精度_Android车辆运动轨迹平滑移动(高仿滴滴打车)最佳实践

    点击上方"Android技术杂货铺",选择"标星" 干货文章,第一时间送达! 作者:门心叼龙 链接:https://www.jianshu.com/p/015b ...

最新文章

  1. 02 Scratch等级考试(二级)模拟题
  2. GitHub 标星 7k+,面试官的灵魂 50 问,问到你怀疑人生!
  3. input缓存中选值事件触发
  4. 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)
  5. Json模块dumps、loads、dump、load函数介绍
  6. Excel做好的图表复制到PPT中变颜色了怎么办
  7. flutter 代码仓库_go-flutter开发桌面应用(二) 创建go-flutter插件
  8. C++全局函数做友元
  9. 为现有的表添加自增列id并赋值
  10. codeforces280 C. Game on Tree(期望)
  11. 转!!ftp的主动模式(port)与被动模式(PASV)
  12. origin 修改水平坐标的刻度
  13. 2019 最新实战!给程序员的 7 节深度学习必修课,最好还会 Python!
  14. 一种实现 Java调用C++的DLL的方法
  15. keil5.155.18版本兼容keil4安装包百度云链接
  16. 《Python股票量化交易从入门到实践》学习记录
  17. SpringBoot application.properties读取属性配置文件中文显示为乱码问题的解决
  18. 使用R语言 4秒对10万行qq群聊天记录进行基本的清洗整理
  19. 清华大学霸榜计算机学科第一!2022 USNews世界大学排名出炉!
  20. 5G取代光纤宽带,可能吗?

热门文章

  1. js bind 传参、_js中的面向对象(一)
  2. 匹配正则_程序员入门基础:python正则表达式贪婪匹配和非贪婪匹配
  3. idea添加scala环境_idea怎么在线安装scala并且启动'
  4. linux 7查内核,查看CentOS7内核版本及发行版本
  5. 最后解密的两弹元勋,众帅之帅朱光亚。
  6. 网友不同意 | 政协常委袁亚湘院士:不建议大部分孩子学奥数
  7. 全球大学文凭“含金量”排名出炉:“北清复”名列30强
  8. 提携数学天才陶哲轩的伯乐是谁?
  9. 一道皮皮物理题的皮皮解法
  10. scrapy爬取天气存MySQL_Scrapy实战篇(五)之爬取历史天气数据