Kubernetes Ingress 高可靠部署最佳实践

摘要: 在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进行全方位监控。

原文链接

干货好文,请关注扫描以下二维码:
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 当前时间戳_kettle教程-mysql数据增量抽取-无需时间戳无需标识

合并记录控件介绍该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。需要设置的参数:

容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

摘要: 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark OSS on ACK,允许…

spring boot 集成 log4j 解决与logback冲突问题

现在很流行springboot的开发&#xff0c;小编闲来无事也学了学&#xff0c;开发过程中遇见了log4j日志的一个小小问题&#xff0c;特此记载。 首先在pox.xml中引入对应的maven依赖&#xff1a; <!-- 引入log4j--><dependency><groupId>org.springframework.…

mysql in 按顺序排序_mysql in 排序 也可以按in里面的顺序来排序

SQL: select * from table where id IN (3,6,9,1,2,5,8,7);这样的情况取出来后&#xff0c;其实&#xff0c;id还是按1,2,3,4,5,6,7,8,9,排序的&#xff0c;但如果我们真要按IN里面的顺序排序怎么办&#xff1f;SQL能不能完成&#xff1f;是否需要取回来后再foreach一下&#x…

三步走——带你打造一份完美的数据科学家简历|(附件有PPT福利)

摘要&#xff1a; 本文介绍了关于写数据科学家简历的一些技巧&#xff0c;主要包含三个部分&#xff0c;分别为简历前的材料准备&#xff0c;写简历时应注意的地方以及对整个简历的整理。不管你是不是数据科学领域的工作者&#xff0c;本文对于即将求职或找实习的同学而言是一份…

你的目的是什么是谁指使你_电视剧《谁说我结不了婚》第25-27集剧情:魏书帮程璐搞定投资人...

电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25-27集剧情介绍电视剧《谁说我结不了婚》第25集剧情介绍&#xff1a;程璐向魏书请教感情困扰 田蕾帮徐海峰彻底打垮凯文程璐来找魏书诉苦&#xff0c;小哈最近不但躲着她&#xff0c;还撒谎骗她不在上海&…

纪·阿晶的首次AWS之行!

戳蓝字“CSDN云计算”关注我们哦&#xff01;这是阿晶的第一次AWS之行&#xff0c;在上海&#xff0c;2019世界人工智能大会。一年前&#xff0c;同样在上海&#xff0c;AWS成立其亚太地区首个人工智能研究院。还记得当时振奋人心的官宣&#xff1a;AWS上海人工智能研究院将重点…

Markdown表格合并单元格

属性属性值描述typetext单行文本输入框password密码输入框radio单选按钮CheckBox复选按钮button普通按钮submit提交按钮reset重置按钮image图像形式的提交按钮file文件域name用户自定义控件名称value用户自定义默认文本值size正整数控件在页面中的显示宽度checkedchecked定义选…

阿里云与WPS深度合作,开放数据处理生态

摘要&#xff1a; 在3月28日举行的2018云栖大会-深圳峰会上&#xff0c;阿里云与金山办公达成深度合作&#xff0c;WPS在线预览与格式转换能力落地阿里云。标志着阿里云存储开放的数据湖体系不但面向计算引擎&#xff0c;还面向应用开放。 在3月28日举行的2018云栖大会-深圳峰会…

interp1函数matlab_【原创】干货:用MATLAB搭建电化学单粒子模型(中)

上一期讲到Eq.1中所需要求解的参数&#xff0c;我们已经获取了3个&#xff0c;需要注意的是&#xff0c;上期所获得的电化学反应过电势已经转化成时间的函数&#xff0c;接下来只需要求正负极的固相电势随时间的变化就可以了。Eq.1 固相电势与材料的soc或体相锂离子浓度…

官宣!CSDN“2019 优秀 AI、IoT 应用案例 TOP 30+”重磅发布!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 王金许、伍杏玲责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;「Talk is cheap. Show me the case.」在 AI、IoT 技术当道的时代下&#xff0c;空泛的概念炒作永远说服不了抱有质疑的消费者。如今随…

用html设计一个logo页面_如何设计一个Logo?——Bobu Africa旅行品牌Logo设计

负空间Logo听起来很牛逼&#xff0c;但是到底要怎么做&#xff1f;Bobu Africa是一家位于肯尼亚&#xff0c;主营泛非洲奢侈旅行与工艺品销售的品牌。Africa当然指的是其主要业务范围——非洲。Bobu则是猴面包树Baobabu的一种本地化称谓。树形Logo通常的设计方式大概是写实剪影…

云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据

摘要&#xff1a; 使用过开源HBase的人都知道&#xff0c;运维HBase是多么复杂的事情&#xff0c;集群大的时候&#xff0c;读写压力大&#xff0c;配置稍微不合理一点&#xff0c;就可能会出现集群状态不一致的情况&#xff0c;糟糕一点的直接导致入库、查询某个业务表不可用,…

来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle

执行计划&#xff08;execution plan&#xff0c;也叫查询计划或者解释计划&#xff09;是数据库执行 SQL 语句的具体步骤&#xff0c;例如通过索引还是全表扫描访问表中的数据&#xff0c;连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想&#xff0c;我们首先应…

linux 升级mysql版本 lamp_Linux 下安装 LAmp及配置

第一步&#xff1a;配置防火墙(默认情况下&#xff0c;端口80和3306是拒绝访问的&#xff0c;在防火墙上进行配置)&#xff1a;vi /etc/sysconfig/iptables(在"COMMIT"的上一行加上如下两句)-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许8…

阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统

摘要&#xff1a; 本文主要介绍视频直播间系统&#xff0c;以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量&#xff0c;低延迟的视频直播间服务。 背景 视频直播间作为直播系统对外的表现形式&#xff0c;在整个系统中处于核心地位。通常除了视频直播窗口外&#…

python和c++无缝对接_总结:Python学习 和 Python与C/C++交互

本篇仅仅是Python的学习和Python和C数据对接过程中的一些总结。由于工作的需要&#xff0c;用一周的时间学习 Python。Python是基于C实现的一门解释型语言&#xff0c;由于其易用性&#xff0c;俘获了不少开发者和运维的心。据说&#xff0c;Python 在科学计算领域&#xff0c;…

mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

报错如下&#xff1a; Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sss.month_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by问题出现…

融合非负矩阵分解和图全变分的歌曲推荐算法

摘要&#xff1a; Kirell Benzi, Vassilis Kalofolias, Xavier Bresson and Pierre Vandergheynst Signal Processing Laboratory 2 (LTS2), Swiss Federal Institute of Technology (EPFL) Kirell Benzi, Vassilis Kalofolias, Xavier Bresson and Pierre Vandergheynst Sign…

Facebook面向所有用户开放人脸识别功能;福布斯美国最具创新力领袖公布;AMD:将发新BIOS 优化三代锐龙加速性能……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…