前言

《基于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舵手集群的设计与实现》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. css3 units & 1 turn

    css3 units & 1 turn One full circle is 1turn, 180deg === 0.5turn degrees, gradians, radians, tur ...

  2. 按键显示器(判断键盘监听器获得的值为普通Key还中modifiers)

    1 import sys 2 from PyQt5 import QtWidgets,QtCore 3 from PyQt5.QtCore import Qt 4 from PyQt5.uic.pro ...

  3. 13_MySQL如何去除结果集中的重复记录

    本节所涉及的sql语句 -- 去除结果集中的重复记录 SELECT job FROM t_emp; SELECT DISTINCT job FROM t_emp; SELECT DISTINCT jo ...

  4. TERSUS无代码开发(笔记07)-简单实例手机端后台逻辑开发

    提交申请逻辑开发 1.添加父级对象引用(从父级对象中获取前端输入框的值) 1.设计数据库表(表名和字段名称不能用中文) 2.设计置数据库主键(可设联合主键) 3.传值形成数据实列处理 4.服务器端处理 ...

  5. while(1)和system("pause")区别

    我们在调试时,有时候会用到这两个语句. 1.显而易见,第一个是一个循环函数,占cpu.占内存: 2.system("pause")是一个系统调用,占内存,不占cpu;这个开销还是有 ...

  6. 后端程序员之路 28、一个轻量级HTTP Server的实现

    提到http server,一般用到的都是Apache和nginx这样的成熟软件,但是,有的情况下,我们也许也会用一些非常轻量级的http server.http server的c++轻量级实现里,M ...

  7. AXU2CGB开发板验证Vitis加速基本平台创建

    Vitis 加速基本平台创建 1.Vivado 工程创建,硬件平台bd 图如下所示 1.1.双击Block图中ZYNQ核,配置相关参数 1.1.1.Low Speed 配置,在 I/O Configu ...

  8. Python3+pygame实现Windows经典扫雷

    今天给大家分享一个由Python3(当然python3.5 3.6 3.7 3.8 ...都行)与pygame模块结合制作的一个经典小游戏"扫雷" 代码是完全可运行的,请大家放心运 ...

  9. java基础知识 + 常见面试题

    准备校招面试之Java篇 一. Java SE 部分 1.1 Java基础 1. 请你解释Object若不重写hashCode()的话,hashCode()如何计算出来的? Object 的 hash ...

  10. 《Selenium自动化测试实战》新书上市,有需要朋友们可以了解下,欢迎大家多提宝贵意见

    京东:https://item.jd.com/13123910.html当当:http://product.dangdang.com/29204520.html 1. 本书基于 Python 3.8 ...