微服务交付至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 简介 Nginx 架构说明 Nginx 基础配置与使用 Nginx 反向代理与负载均衡 Nginx 实现高速缓存 Nginx 性能参数调优 一.Nginx 简介与安装 Nginx ...
- CentOS7 部署K8S集群,最新版1.17.3-0
小白在网上找了很多关于k8s集群部署的文档,但是版本老旧,到处踩坑,终于部署成功,记录下过程. 一.准备工作 虚拟机:VMware® Workstation 15 Pro Xhell 6:Xshell ...
- webpack中打包拷贝静态文件CopyWebpackPlugin插件
copyWebpackPlugin: 作用:用于webpack打包时拷贝文件的插件包 安装:npm install copyWebpackPlugin@版本号 使用:// copy custom st ...
- PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构
百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...
- 一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)
滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. ...
- [LeetCode] 207. Course Schedule 课程表
题目: 分析: 这是一道典型的拓扑排序问题.那么何为拓扑排序? 拓扑排序: 有三件事情A,B,C要完成,A随时可以完成,但B和C只有A完成之后才可完成,那么拓扑排序可以为A>B>C或A&g ...
- Linux学习4-部署LAMP项目
前言 LAMP——linux Apache Mysql PHP 今天我们来学习如何在Linux部署Discuz论坛 准备工作 1.一台linux服务器,没有购买服务器的小伙伴也可以使用虚拟机,操 ...
- Typora[MarkDown编辑器]+(PicGo+Github+JsDelivr)[个人图床] ,开启你的高效创作
使用Typora搭配Picgo开启你的高效创作 0x00 一切都要从MarkDown说起 富文本语言的弊端 平常我们最常用的写作工具,无非是富文本编辑器中的代表--微软家的Office Word.这种 ...
- js的变量——基本类型保存在栈中,引用类型保存在堆中
javascript的基本类型:Undefined,Null,Boolean,Number,String 引用类型:Object,Array,Function 基本类型值在内存中占据固定大小,被保存在 ...
- Web架构之Nginx基础配置
目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...