微服务交付至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 可以 ...
随机推荐
- Nginx之常用基本配置(二)
上一篇我们把nginx的主配置文件结构大概介绍了下,全局配置段比较常用的指令说了一下,http配置段关于http服务器配置指令介绍了下,以及有几个调优的指令,server_name的匹配机制,错误页面 ...
- ip修改成域名
将ip修改成域名,这样的话可以使程序变得更加健壮,别人不能直接看见你的ip地址. 后来总结下分享给大家.首先找到hosts文件的位置,这个文件是系统dns默认查找的文件. windows 系统:C:\ ...
- Object-C 银行卡,信用卡校验规则(Luhn算法)
最近的项目中涉及到绑定用户的银行卡,借记卡.经过查找银行卡的校验规是采用 Luhn算法进行验证. Luhn算法,也被称作“模10算法”.它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美 ...
- vmware workstaion之不能连接外网
Vmwareworkstation15系列桥接模式不能上网解决办法 最近在vmwareworkstation15中创建一个双网卡虚拟机,由于一直连不了外网,一直困扰着我.各种姿势在百度谷歌查找,最终还 ...
- AI:深度学习用于文本处理
同本文一起发布的另外一篇文章中,提到了 BlueDot 公司,这个公司致力于利用人工智能保护全球人民免受传染病的侵害,在本次疫情还没有引起强烈关注时,就提前一周发出预警,一周的时间,多么宝贵! 他们的 ...
- Go module学习笔记
一 go module 常用命令 模块维护:go mod command arguments创建模块:go mod init example.com/hello清除无用依赖: go mod tidy ...
- Python基础-求两个字符串最长公共前轴
最长公共前缀,输入两个字符串,如果存在公共前缀,求出最长的前缀,如果没有输出no.如“distance”和“discuss”的最长公共前缀是“dis”. s1 = input('请输入第1个字符串-- ...
- SpringBoot突报java.lang.NoSuchFieldError分析
SpringBoot项目,引了一个内部的工具包,竟然导致启动失败,报找不到freemarker Configuration类的一个属性,网上的解法都大同小异,最终用了自己的办法解决,花点时间记录下来, ...
- python学习-练习题9*9乘法表巩固
9*9乘法表 分析: 1X1为一行 1X2 2X2 为一行 for i in range(1,10): for j in range(1,i+1): print(str(i) + 'X' + str( ...
- plist 图集 php 批量提取 PS 一个个切
最近,迷上了用 cocos2d 做游戏开发.由于是新入门,很多东西从头开始学. 在使用 sprite 的 Rect 裁剪显示的时候,显示总是多一块.所以,要从图集中提取一张张图,这样就省了裁剪. 原图 ...