微服务交付至kubernetes流程
1、微服务简介
微服务优点
- 服务组件化
每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署 - 技术栈灵活
约定通信方式,是得服务本身功能实现对技术要求不再那么铭感 - 独立部署
每个微服务独立部署,加快部署速度,方便扩展 - 扩展性强
每个微服务可以部署多个,并且有负载均衡能力 - 独立数据
每个微服务有独立的基本组件,例如数据库、缓存等
微服务缺点
- 沟通成本
- 数据一致性
- 运维成本
- 内部架构复杂性
微服务和单体应用
单体应用,易于部署、测试,但是会使得代码膨胀,难以维护,构建和部署成本大,新人上手难
适用于微服务的框架:Spring Boots、Spring Cloud、Dubbo
2、K8s部署微服务考虑的问题
微服务架构图

微服务间如何通信?
REST API、RPC、MQ微服务如何发现彼此?
通过注册中心进行注册,发现组件之间怎么个调用关系?
微服务内部处理逻辑那个服务作为整个网站入口?
网关,即gateway那些微服务需要对外访问?
只需要网关入口对外即可微服务怎么部署?更新?扩容?
基于Kubernetes就可以轻易实现区分有状态应用和无状态应用?
无状态应用:不考虑存储,不维护有状态信息,也不考虑和其它服务副本是否有关系
有状态应用:有固定存储,例如:mysql、mongodb
有状态应用不建议部署到kubernetes
为什么要用注册中心
微服务太多面临的问题:
- 怎么记录一个微服务多个副本接口地址?
- 怎么实现一个微服务多个副本负载均衡?
- 怎么判断一个微服务副本是否可用?
主流注册中心:Eureka,Nacos
不同环境如何区分配置文件
- configmap
- entrypoint.sh
- java -jar --spring.profiles.active=dev xxx.jar
- 统一配置中心,例如:Apollo,Disconf
3、项目迁移到k8s流程
制作镜像(应用程序、运行环境、文件系统)
控制器管理Pod
Deployment:无状态部署
StatefulSet:有状态部署
DaemonSet:守护进程部署
Job & CronJob:批处理暴露应用
Service定义了Pod的逻辑集合和访问这个集合的策略
Service引入为了解决Pod的动态变化,提供服务发现和负载均衡
支持Cluster IP,NodePort以及LocalBalancer三种类型
Service的底层实现主要实现有iptables和ipvs两种网络模式
使用CoreDNS解析Service名称
通过Label关联Pod对外发布应用(ingress)
通过Service关联Pod
基于域名访问
通过Ingress Controller实现Pod的负载均衡(支持TCP/UDP 4层和HTTP 7层)日志/监控
容器部署过程中一般有以下三种数据:
启动时需要初始化数据,可以是配置文件。
启动过程中产生的临时数据,该临时数据需要多个容器共享
启动过程中产生的持久化数据
主流方案:FileBeat + ELK、Prometheus + Grafana
微服务交付至kubernetes流程的更多相关文章
- Kong 微服务网关在 Kubernetes 的实践
来源:分布式实验室译者:qianghaohao本文主要介绍将 Kong 微服务网关作为 Kubernetes (https://www.alauda.cn)集群统一入口的最佳实践,之前写过一篇文章使用 ...
- 从Spring Cloud微服务视角理解Kubernetes
- 为什么 kubernetes 天然适合微服务 (3)
此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 四.Kubernetes 本身就是微服务架构 基于上面这十个设计要点,我们再回来看 Kubernetes,会发现 ...
- 为什么 kubernetes 天然适合微服务 (2)
此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 三.微服务化的十个设计要点 微服务有哪些要点呢?第一张图是 SpringCloud 的整个生态. 第二张图是微服 ...
- 为什么 kubernetes 天然适合微服务 (1)
此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发 ...
- 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南
[SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...
- Openstack+Kubernetes+Docker微服务实践
Openstack+Kubernetes+Docker微服务实践 ..... Openstack+Kubernetes+Docker微服务实践之路--选型 posted @ 2016-11-15 ...
- 解读与部署(三):基于 Kubernetes 的微服务部署即代码
在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...
- 使用 Nocalhost 开发 Rainbond 上的微服务应用
本文将介绍如何使用 Nocalhost 快速开发 Rainbond 上的微服务应用的开发流程以及实践操作步骤. Nocalhost 可以直接在 Kubernetes 中开发应用,Rainbond 可以 ...
随机推荐
- 1、【Spark】Spark安装
本文基于的环境 Red Hat Linux Enterprise 7 x86_64 jdk 1.7.0_79 Python 2.7Spart spark-1.5.2-bin-hadoop2.6 官方要 ...
- mongodb 修改oplogSize
oplog是local库下的一个固定集合,Secondary就是通过查看Primary的oplog这个集合来进行复制的.每个节点都有oplog,记录从主节点复制过来的信息,这样每个成员都可以作为同步源 ...
- symfony 5.05 dev安装为了更好的迭代更新
我的项目目录 安装命令 composer create-project symfony/website-skeleton:^5.0.x-dev manage 数据查询测试输出
- 46-Python深浅拷贝
目录 一.引言 1.1 可变或不可变 二.拷贝 三.浅拷贝 深拷贝 一.引言 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象 ...
- MVC三层架构
需求: 注册登录: # 知识补充: >> MVC模型: |-- M 模型: |-- V 视图: |-- >> 基本概念: |-- 层级之间的调用关系: |-- V层接收前台数据 ...
- 【Python3】HTML基础
[web前端]HTML基础 一.BS模式 BS(Browser-Server)模式:顾名思义为浏览器-服务器的意思,对比的话类似我们PC上面浏览器使用的产品即为BS模式产品,例如google doc. ...
- Echarts轻松入门,内附踩坑秘籍
首先介绍一下我们的主角ECharts ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fir ...
- python实验一
安徽工程大学 Python程序设计实验报告 班级物流管理191 姓名彭艺 学号3190505139成绩 日期 2020年3月3日 指导老师 修宇 实验名称 ...
- go 下载qq音乐
//go下载qq音乐 package main import ( _ "fmt" jsoniter "github.com/json-iterator/go" ...
- markdown简明语法1
目录 Cmd Markdown 简明语法手册 1. 斜体和粗体 2. 分级标题 3. 外链接 4. 无序列表 5. 有序列表 6. 文字引用 7. 行内代码块 8. 代码块 9. 插入图像 Cmd M ...