Kubernetes生产架构浅谈
注意
本文,只是笔者针对Kubernetes生产环境运行的一些关于架构设计介绍。
介绍
基于 Kubernetes 系统构建的统一开发运维管控平台。在 Kubernetes 基础上,围绕 微服务系统的构建,提供开发、交付、运维等环节所需的技术框架和工具。同时,增强开发了应 用监控和日志采集分析系统,并作了性能优化和高可靠保证。
首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境。如下图所示。

- 高可靠设计,Etcd 集群,Kubernetes 三主节点,保证集群的高可用性。
- 基于 GlusterFS /nfs集群,在生产环境和非生产环境下提供存储卷服务。
- Flannel+VXLAN,提供可靠的网络服务。
- 提供分布式监控和统一日志中心,全方位的应用监管能力。
- 支持 Redis/ZooKeeper 等常用中间件的集群编排方案。
- 通用组件服务,提供快速构建企业级应用的能力。
在该架构中,我们可以将其分为四层,如下:
- 用户层:即普通用户。
- 服务访问层:基于gorouter和haproxy服务发现、负载均衡和路由分发等。
- 应用中间件层:提供基于redis/zk等常见中间件给业务使用。
- 业务应用层:即基于Kubernetes平台构建和运行企业业务应用,如CI/CD持续集成、微服务项目、监控告警和日志管理、私有镜像仓库等服务。
- 基础设施层:即laas层支撑的由Kubernetes容器管理平台和GlusterFS数据持久化存储等系统组成的基础平台。
下面,我们分别来谈谈各层的具体实现方案。
基础设施层
Kubernetes平台
- 部署管理:Kubernetes平台都是在阿里云云、和各自私有云之上自己建设维护的。
- 网络通信:在容器和容器之间、容器和主机网络方面,可以使用Calico或Flannel等方案,我们使用的Flannel。
- HA高可用:Kubernetes节点分为Master和Node两种类型节点,前者负责运行集群相关的控制管理服务,而后者负责运行Pod容器。在多Node节点模式下,由于Kubernetes Pod具有天然的容灾冗余HA高可用实现,因此,我们并不需要关心Node节点的HA高可用,而只需关心Master节点的HA即可,Master节点的HA高可用,通过多Master节点+nginx方案实现。从Kubernetes 1.12版本起,kube-proxy服务默认使用ipvs实现,取消了之前的iptables。这有助于提升K8s大规模集群环境下的性能和稳定性。
- Docker和操作系统优化:在生产环境中,Docker和操作系统版本应当使用较新的release版本。并且,主机操作系统应当做一定程度的优化配置。
GlusterFS/NFS数据存储
Kubernetes平台的数据持久化存储,可以使用GlusterFS、NFS等存储方案。其中,GlusterFS适用于有其技术背景或大容量存储需求的公司;而NFS适用于存储容量需求相对较小,无专业存储技术背景的公司。
业务应用层
- 镜像管理:使用Harbor私有镜像仓库服务。
- 日志管理:使用Elasticsearch、Filebeat + 自研界面。
- 监控告警管理:使用open-falcon +自研、也使用了Prometheus + 自研等技术栈。
- 微服务架构:使用Service Mesh服务网格中的Istio方案,主要是灰度发布方面。
- Devops:自研流水线集成pass平台;
- 应用类型:无状态类服务使用deployment,有状态类服务则使用Statefulset,pass使用helm。
- 规划好Namespace:根据项目-环境指定namespace,统一管理诸如监控告警和日志管理方面的pod、service、pvc等资源。这样,可以较为方便的管理和区分K8s上的各种应用。
应用中间件层
对于有状态应用,我们线上环境只上了redis,zk,mq等等常见中间件,由于数据库需要较强的稳定性和可靠性,暂时未使用。
中间件上容器后,在pass上即可进行增删,便于服务管理维护,也避免了应用交付周期变长。
服务访问层
中间件上容器便于维护扩容管理。
整个数据流走向如下图,负载均衡和路由规则、域名分发使用gorouter和haproxy实现,gorouter简单说就是一个路由器,haproxy是负载均衡。此外,gorouter和haproxy实现HA高可用,可以想象在K8s集群中,大量的出入口流量都进过gorouter和haproxy,其负载是非常大的,其重要程度不言而喻,因此实现HA就非常重要。我们一般部署至少在2个节点以上。
架构如下图所示:

在该架构中,gorouter和haproxy都是使用pod运行的,对于gorouter如何实现流量负载,可以参考容器云架构中使用gorouter+haproxy作为流量入口
如上图所示,部署两个流量节点,公网ip映射或转发到内网的两台流量节点上。访问的域名会在gorouter中进行匹配,然后进行转发到pod上。
本篇简单介绍了下pass平台架构组成。
欢迎您关注程序员同行者订阅号,程序员同行者是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、redis、golang、docker、kubernetes、vue等经验分享及经验交流。
如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!
Kubernetes生产架构浅谈的更多相关文章
- 浅谈Kubernetes生产架构
注意本文,只是笔者针对Kubernetes生产环境运行的一些关于架构设计和实现方案的总结,内容很粗糙,同时也会不断完善. 首先,我们来梳理下Kubernetes生产架构,其设计适用于绝大多数环境.如下 ...
- 基于puppet分布式集群管理公有云多租户的架构浅谈
基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍 在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...
- iOS应用架构浅谈
(整理至http://www.cocoachina.com/ios/20150414/11557.html) 缘由 从事iOS工作一年多了,主要从事QQ钱包SDK开发和财付通app维护,随着对业务的慢 ...
- JavaWeb应用开发架构浅谈
本文就我所经历和使用过的技术和框架, 讨论 Java / Javascript 技术组合构成的Web 应用架构. 一. 概述 Web 应用架构可以划分为两大子系统:前端子系统和后台子系统. 前端子系统 ...
- iOS 应用架构浅谈
当我们讨论客户端应用架构的时候,我们在讨论什么? 其实市面上大部分应用不外乎就是颠过来倒过去地做以下这些事情: 简单来说就是调API,展示页面,然后跳转到别的地方再调API,再展示页面. App确实就 ...
- Nopcommerce架构浅谈之文件结构
应该是在两年前了,在拜读园子里大神的文章时偶然了解到有个叫NopCommerce的商城系统,苦于没有时间,各种耽误,其中研究过一段时间,也就是一个星期时间,后来又耽搁了,直到最近,随着项目进入间歇期, ...
- Nopcommerce架构浅谈之架构层次
前面谈到了系统的文件,从文件结构中我们也可以看出Nop的层次划分还是非常清晰,下面我将介绍下Nop的架构层次,并对每个层做简要的介绍,先看我画的层次图. 这个系统基本上按照了ddd的形式做了划分,我本 ...
- Linux架构浅谈
以下图为基础: 最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等.硬件是物质基础,而应用提供服务.但在两者之间,还要经过一番周折. 还 ...
- C++插件架构浅谈与初步实现
一.插件架构初步介绍 想到写本博客,也没想到更好的名字,目前就先命这个名吧.说到插件架构,或许大部分IT从业者都听过或者某些牛人也自己实现过稳定高效的插件框架.目前有很多软件以及库都是基于插件架构,例 ...
随机推荐
- Kubernetes之Pod使用
一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...
- JeeSite | 保存信息修改记录续
遗留问题 上篇文章中遗留了一个问题,就是为了要关联类属性与注释,注释与字典的地方使用了两个map来逐个添加了相关的信息,如下所示: Map<String, String> mapField ...
- linux服务器上配置进行kaggle比赛的深度学习tensorflow keras环境详细教程
本文首发于个人博客https://kezunlin.me/post/6b505d27/,欢迎阅读最新内容! full guide tutorial to install and configure d ...
- git clone: HTTP Basic: Access denied 错误
git clone 报 HTTP Basic: Access denied 错误 解决方案: 1. 如果账号密码有变动 用这个命令 git config –-system –-unset creden ...
- PHP常见循环例题
以下的每道题都没有固定的写法,可以使看的人更好的理解 1.通过for循环将数组中值求和.求平均值 <?php //1.求数组的和.平均值 $num=[1,20,53,23,14,12,15]; ...
- Linux网络——配置防火墙的相关命令
Linux网络——配置防火墙的相关命令 摘要:本文主要学习了如何在Linux系统中配置防火墙. iptables命令 iptables准确来讲并不是防火墙,真正的防火墙是运行于系统内核中的netfil ...
- Dynamics CRM定制子网格添加按钮实例之一
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复221或者20160430可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- 微信语音短消息amr文件转WAV
- amr说明 - 转WAV程序 我对SILK编码库稍作修改,编译了一个Windows下可直接将SILK V3编码转换为WAV格式,并支持原生的微信语音短消息amr文件的版本,提供给大家使用,压缩包( ...
- 计算机基础 python安装时的常见致命错误 pycharm 思维导图
计算机基础 1.组成 人 功能 主板:骨架 设备扩展 cpu:大脑 计算 逻辑处理 硬盘: 永久储存 电源:心脏 内存: 临时储存,断电无 操作系统(windonws mac linux): 软件,应 ...
- BayaiM__oracle切换归档模式步骤:
BayaiM__oracle切换归档模式(步骤): ------------------oracle11g设置归档模式和非归档模式--------------------------[root@tes ...