《基于Kubernetes舵手集群的设计与实现》
前言
《基于Kubernetes舵手集群的设计与实现》是我的毕业设计项目。本系统采用Kubernetes容器编排、基于Jenkins\Gitlab的CICD技术、EFK日志收集、Prometheus监控告警、Ceph后端存储和Harbor镜像管理,设计并实现了具有“源码一键部署”、“日志实时收集”、“监控告警展示”、“数据存储分析”和“镜像管理维护”五大模块的舵手集群系统。
拓扑图
总体架构图

日志收集架构图

原理
部署方案

(1) Kubernetes集群采用三主三从模式,从架构规划上防止单点故障,保证集群高可用性;
(2) 由bs-k8s-ceph-209、bs-k8s-gitlab-208、bs-k8s-harbor-207三节点组成后端分布式存储Ceph集群;
(3) Gitlab源码管理仓库是供开发工程师使用,独立于Kubernetes集群之外,既减轻了Kubernetes集群的负担又权限分明便于维护管理。
部署原理
(1) 开发工程师将项目源码合并到Master分支并推送到Gitlab源码管理仓库服务器;
(2) Gitlab Webhook感知到Master分支发生改动后触发Jenkins持续集成Pod在Kubernetes集群中临时启一个Jenkins-slave Pod,进行项目源码拉取、编译、测试、构建Docker镜像、并推送镜像到私有仓库Harbor;
(3) Jenkins通过Kubernetes deployment插件在Kubernetes集群中拉取推送到Harbor镜像仓库中的应用镜像制做成应用Pod,此时已经完成一键部署源码到Kubernetes集群;
(4) Traefik代理容器编排集群中的应用服务,将应用服务暴漏到公网供用户访问;
(5) EFK日志收集集群的Kibana界面可以展示采集到的已经发布的应用服务的日志信息,供运维工程师和开发工程师分析;
(6) Prometheus监控告警集群的Grafana展示界面可以实时刷新整个容器编集群和应用服务的运行状态,并将越限行为进行邮件告警发送给运维工程师;
(7) 舵手集群内所有有状态类应用程序的数据都存储在分布式存储集群Ceph中。
后续
《基于Kubernetes的舵手集群系统》是由我借鉴互联网现有拓扑架构图而独立设计并完成的项目,代表了我大学期间的最高水平,设计到了运维、开发、容器三个方面。但此项目并不完善如:缺乏微服务、Go项目不优秀等,还需要进行改动升级。此项目的监控部分、日志收集部分、数据存储部分依然存在不深入的问题,我会持续的进行优化下去。
大学不是终点,人生正式起步。道阻且长,我对自己有要求:今年的目标是完成容器生态圈之旅-第三章《容器编排工具Kubernetes》、容器生态圈之旅-第四章《自动化部署CICD》、容器生态圈之旅-第五章《日志收集EFK》、容器生态圈之旅-第五章《监控告警Prometheus》、容器生态圈之旅-第六章《监控告警Prometheus》、容器生态圈之旅-第七章《数据存储Ceph》。对于Mysql、Redis、Zookeeper、Kafka的掌握也是今年的要求,对了还有Go语言的深入学习(这块要求不高,今年还是围绕web深入,务必拿出原创项目)。
今年的任务很简单全面提升自我,钱不是今年的目标。人生的路很长,IT的路不会太长,我渴望站在巨人(前辈)的肩膀上成为新的巨人(前辈)。我要求自己明年的时候IT江湖有我名,紫色代表高贵,飞猪代表不屈服。我就是紫色飞猪,站在巨人的肩膀上成为新的巨人。
下半年必须在工作的同时全面提示自我!
《基于Kubernetes舵手集群的设计与实现》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- ORM All In One
ORM All In One ORM Object Relational Mapping https://en.wikipedia.org/wiki/Object-relational_mapping ...
- 5分钟入门websocket
5 个步骤快速掌握消息发送和接收 获取您的 appkey 先注册一个irealtime账号,然后登录到后台管理端,创建一个免费应用,就能得到您的 appkey.点击注册 各种前端生态端集成 ireal ...
- JVM 字节码之 int 入栈指令
本文转载自JVM 字节码之 int 入栈指令(iconst.bipush.sipush.ldc) 前言 本文介绍 int 入栈指令 iconst.bipush.sipubh.Idc. 当 int 取值 ...
- 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...
- 必知必会之Java注解
必知必会之Java注解 目录 不定期更新中-- 元注解 @Documented @Indexed @Retention @Target 常用注解 @Deprecated @FunctionalInte ...
- Maven 打包项目到私服 (deploy)
一.配置maven 在maven安装目录 /conf/setting.xml 中的servers下添加: 1 <servers> 2 <server> 3 <id> ...
- LeetCode-在受污染的二叉树中查找元素
在受污染的二叉树中查找元素 LeetCode-1261 /** * 给出一个满足下述规则的二叉树: * root.val == 0 * 如果 treeNode.val == x 且 treeNode. ...
- HDR(高动态范围)
一: 简介 一般来说,当存储在帧缓冲(Framebuffer)中时,亮度和颜色的值是默认被限制在0.0到1.0之间的. 但是如果我们遇上了一个特定的区域,其中有多个亮光源使这些数值总和超过了1.0,又 ...
- 【老孟Flutter】Flutter 2.0 重磅更新
老孟导读:昨天期待已久的 Flutter 2.0 终于发布了,Web 端终于提正了,春季期间我发布的一篇文章,其中的一个预测就是 Web 正式发布,已经实现了,还有一个预测是:2021年将是 Flut ...
- Hi3559AV100外接UVC/MJPEG相机实时采图设计(四):VDEC_Send_Stream线程分析
下面随笔将对Hi3559AV100外接UVC/MJPEG相机实现实时采图设计的关键点-VDEC_Send_Stream线程进行分析,一两个星期前我写了有三篇系列随笔,已经实现了项目功能,大家可以参考下 ...