微服务交付至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 可以 ...
随机推荐
- vue中如何缓存一些页面
在vue中,有时候我们只想缓存页面中的一些组件或页面,这个时候怎么办呢,我们就需要用判断来加载keep-alive. 例如: // router.js { path: "/driving_l ...
- Python中的BeautifulSoup库简要总结
一.基本元素 BeautifulSoup库是解析.遍历.维护“标签树”的功能库. 引用 from bs4 import BeautifulSoup import bs4 html文档-标签树-Beau ...
- (数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色
本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 通过前面的文章,我们已经对geopanda ...
- Spring Cloud Gateway 实现Token校验
在我看来,在某些场景下,网关就像是一个公共方法,把项目中的都要用到的一些功能提出来,抽象成一个服务.比如,我们可以在业务网关上做日志收集.Token校验等等,当然这么理解很狭隘,因为网关的能力远不止如 ...
- 关于使用fastjson出现的问题:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 1, fastjson-version 1.2.44
先说下需求:是从redis中根据keys批量获取数据集合,再通过fastjson转为对象集合 代码如下: 在postman测试后,出现错误如下: 刚开始以为是使用fstjson方法不对,后面先通过打断 ...
- win下安装virtualenv和创建django项目
一.由于一直在Linux环境下开发,想了解一下winPython开发环境: 1.打开cmd,pip install virtualenv 2.virtualenv test 由于这样需要进入到目录下才 ...
- 音频相关 ALSA ffmpeg ffplay 命令用法 g7xx
采样率: samples 441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式. 通道:channels 2声道 左右声道 也有单声道的声音,5.1 声道 位数: 16 ...
- IRM3800 红外遥控器解码 linux驱动
这一次还是接在 Cemera 上.用 中断引脚 EINT20 也就是 GPG12. 之前焊的 51 板子上有一个红外接收器. 请注意了,是 标准的 NEC 码规范:首次发送的是9ms的高电平脉冲,其后 ...
- chrome安装扩展插件出现-crx_header_invalid问题
1. 将*.crx文件重命名为*.rar 2.将rar文件解压 3. 在chrome浏览器添加扩展程序时选择“加载已解压的扩展程序” 4.添加成功
- 机器学习实用案例解析(1) 使用R语言
简介 统计学一直在研究如何从数据中得到可解释的东西,而机器学习则关注如何将数据变成一些实用的东西.对两者做出如下对比更有助于理解“机器学习”这个术语:机器学习研究的内容是教给计算机一些知识,再让计算机 ...