高可靠设计,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个节点以上。
 

k8s的paas平台的更多相关文章

  1. 移动App开发需要更多的PaaS平台而不是IaaS

    时代的变迁,创业的大潮,越来越多的人关注了有点开发,越来越多的人了解了互联网服务术语:PaaS.IaaS.SaaS.BaaS等.今天大家在开发App的时候这么多复杂的云服务如何来选择呢? IaaS服务 ...

  2. Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台

    <Windows Azure Platform 系列文章目录> 本文将简单介绍,如何将企业内现有的ASP.NET应用程序迁移到Azure PaaS平台. 因为在迁移过程中,可能需要对现有的 ...

  3. PAAS平台构建7×24小时高可用应用的方案设计

    本博客迁移到部署在jae上的独立博客系统wordpress,博客地址:点击打开独立博客.欢迎大家一起来讨论IT技术. 现在很多企业都在搭建自己的私有PAAS平台,当然也有很多大型互联网公司搭建共有PA ...

  4. PAAS平台的web应用性能测试与分析

    引言 为什么我会写这一篇博客,因为最近很多京东云擎jae的用户反应一个问题就是他们部署在jae上面的应用访问很慢,有极少数应用甚至经常出现504超时现象,当然大家首先想到的是jae性能太差,这也是人之 ...

  5. 云计算PAAS平台测试设计之镜像管理

    下面是云计算PAAS平台页面概览: 今天我们要讲的是镜像管理页面的测试设计: 可以看到,这个页面主要有增删改查四个功能. 1. 查询镜像 (1)易用性:查看镜像查询界面,界面上各组件设计合理.美观.易 ...

  6. 搜狐云景paas平台实践之路

    前言: 搜狐云景作为搜狐的paas平台,在2014年5月22日的云计算大会上正式发布了公测.初测,注册用户必须先申请邀请码参与公测会赠送用户100元电子券,经过实名认证之后会再赠送100电子券,目测可 ...

  7. PAAS平台7&#215;24小时可用性应用设计

    如今非常多企业都在搭建自己的私有PAAS平台,当然也有非常多大型互联网公司搭建共同拥有PAAS平台(比如SAE/BAE/JAE(jae.jd.com)).那么使用PAAS平台来部署SAAS应用有哪些优 ...

  8. PaaS平台的尴尬与变革

    当今时代只要提到云计算这个词语,一定会提到云计算分为IaaS.PaaS.SaaS 这三个层面,现阶段云环境中IaaS和SaaS都实现了商品化.但是,PaaS作为云计算的服务模式之一,既不像IaaS那样 ...

  9. 企业级分布式应用服务EDAS _Dubbo商业版_微服务PaaS平台 【EDAS Serverless 运维 创业】

    企业级分布式应用服务EDAS _Dubbo商业版_微服务PaaS平台_分布式框架 - 阿里云https://www.aliyun.com/product/edas?source_type=yqzb_e ...

随机推荐

  1. linux系统 重启盘符错乱问题

    linux磁盘重启乱序问题处理 最近到客户那去巡检时,客户提到一个问题,他们的rac在重启的时候,原来的sda1.sdb1.sdc1会对应变成sdd1.sde1.sdf1,由于他们使用的是盘符来绑定裸 ...

  2. CF1237D Balanced Playlist

    思路:假设从第i首歌开始听,结束位置为j,那么从第i+1首歌开始听,结束位置一定不早于j.可以用反证法证明.想到这一点,就不难解决了. 实现: #include <bits/stdc++.h&g ...

  3. 微信小程序之 语言特点

    主页面的CSS样式默认为index.wxss,无需引入

  4. windows下安装JDK1.8和eclipse

    JVM的执行过程: 加载.class文件->管理并分配内存->执行垃圾收集 1.JDK下载和安装 JDK是面向开发人员使用的SDK,提供了java的开发环境和运行环境,SDK是Softwa ...

  5. 配置jdbc问题 mysql与IDEA

    1.新建lib文件夹,将jar文件导入 2在structure中添加jar文件 3设置url时需要设置时区: import java.sql.Connection;import java.sql.Dr ...

  6. 设计模式之--Visitor

    Ref: https://www.jianshu.com/p/feec47a25b67 https://www.cnblogs.com/alphablox/p/5346567.html

  7. [转帖]理解k8s 的 Ingress

    理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...

  8. CTeX 更改字体(软件)

    CTeX默认显示字体太小了,写起来看着费眼睛.有没有办法更改字体呢? 更改字体方法:(图片是默认字体) 未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文) </b

  9. 打开python 交互式模式

    pip install jupyter jupyter notebook --ip=127.0.0.1 --port=8888

  10. Python进阶:值传递,引用传递?不存在的,是赋值传递

    Python的变量及其赋值 c/c++/c#/java 里面都有值传递,引用传递的概念,在Python中是如何的? 例 a = 1 b = a print(id(a),id(b)) #14072334 ...