原创 | k8s系列教程一:开篇
作者:潘吉祥
欢迎加入k8s学习系列教程,在接下来的系列文章,你将可以在较短的时间内达到入门k8s的效果。
k8s是什么
Kubernetes(K8S)作为Google在2014年发布的一个开源项目,直到发展如今的地步,最大的原因离不开docker容器化的发展,而docker的如火如荼正是受益于微服务架构的推动。
因此k8s也是微服务架构发展的产物,那它到底是干什么的呢?
官方化的解释:“Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,它的目标是让部署容器化的应用简单并且高效,并提供了应用部署,规划,更新,维护的一种机制。”
去掉冗长的修饰定语“kubernetes(以下简称k8s)是一种管理容器的应用”,以前也听人这样说过:“就是统一管理docker的平台”。
虽然这写说法本质没错,但是对于初学者来说可能会显得kubernetes作用不是那么大,因为这里的管理隐形囊括的东西太多了,包括容器伸缩、部署回滚、存储编排、自我修复、服务发现和负载均衡、权限管理等功能。
仔细观察其实可以发现,最前面的定义可能是相对于k8s开发初衷而言的,随着后续的发展,它所承担的任务已经远不止此了。抛开管理容器,k8s在功能上实现了微服务框架部分功能,因此,在这里我以个人的理解来进行解释:它是一个基于容器的微服务构建平台。
K8s为我们带来什么
Kubernetes作为一个基于容器完备的微服务构建平台(完善的集群管理能力),可以在物理机或虚拟机的Kubernetes集群上运行容器化应用,并提供一个以容器为中心的基础架构,满足在生产环境中运行应用的一些常见需求:
多进程协同工作
应用实例扩容缩容
服务负载均衡
应用健康检查
平滑版本更新
服务调度
认证授权管理
……
总之k8s能够帮助我们更加方便快速地开发复杂的微服务系统;它的设计理念(pod)全面拥抱微服务,拥有优秀的动态服务调整能力;而就k8s平台本身,基于master和worker的架构模式,也拥有极强的横向扩展能力。
Springcloud VS k8s
上面解释道k8s是一个基于容器的微服务构建平台,那么和我们当下火热的springcloud有什么区别或者说对比性呢?笔者对于springcloud也学习了一段时间,也搜集参考了一些网上的资料,下面给出核心参考:
Springcloud和k8s都是微服务架构开发的工具,就流行度而言,目前springcloud成为现在微服务开发的主流选择,k8s处于相对辅助的位置。因为springcloud的核心Netflix系列组件在开发之初docker还未出现。
就开发而言,springcloud的方式更早一些,虽然随着servermash理论的广泛传播,对k8s这类管理平台发展起到助推作用,但当下springcloud依然是该理论事实上的标杆。
从开发层级来说,springcloud将微服务问题的解决方案融合到了业务逻辑层面,有过相关学习或开发经验的读者应该知道,通常以Java代码注解的形式嵌入主体代码中。因此springcloud可以说是入侵性较强的,它散布在开发的微服务代码中。
而k8s则不同,k8s将解决方案抽离,从业务代码层面下沉到容器软件层面(如下图所示),这样来说,开发人员在开发阶段只需关注业务实现即可,而不需要考虑微服务的衍生问题,甚至没有感知,比如服务注册和发现、负载均衡和高可用等。从而实现微服务架构中“微服务”和“架构”的分离,各司其职。
尽管这样比较美好地说,但事实上k8s目前并不能完全取代springcloud,可取的选择是二者共同使用,我们可以根据实际情况将服务的注册发现、负载均衡、配置中心等使用k8s代替,其它方面依然沿用springcloud。
但是就发展而言,k8s相对是一个更好的微服务架构方案,尤其是随着支持k8s相关servermash产品的出现,比如istio,它可以提供诸如服务接口调用、验证授权、流量控制、服务跟踪治理等相关功能,在更大程度上使得替代springcloud成为可能。另外springcloud面向Java的短板也没有迎合微服务的语言无关性,在笔者看来,被k8s取代只是时间问题。
需要说明的是,k8s是基于docker(或者说实现了容器类似标准的产品)的,因此,在学习系列教程之前,还请对docker有一定的了解。(也可以参考前几期的docker入门哦)
我们在下期正式进入kubernetes的实战学习!关注不迷路呦!
推荐阅读
1.原创 | 全网最实在的docker入门教程一
2.原创 | 全网最实在的docker入门教程二
3.原创 | 全网最实在的docker入门教程三
4.程序员的崩溃很简单
5.Spring Boot + Vue 开发网易云,QQ音乐(附源码)!
6.如何设计一个安全的对外接口
原创 | k8s系列教程一:开篇相关推荐
- pytorch打印模型参数_Pytorch网络压缩系列教程一:Prune你的模型
Pytorch网络压缩系列教程一:Prune你的模型 本文由林大佬原创,转载请注明出处,来自腾讯.阿里等一线AI算法工程师组成的QQ交流群欢迎你的加入: 1037662480 深度学习模型取得了前所未 ...
- 教你如何开发VR游戏系列教程一:前言
VR现在发展很快,也被炒的很热.因此,做VR应用开发(主要是游戏,也包含全景播放器等)的同学越来越多.AR学院(www.arvrschool.com)就准备了这么一份教程,给大家提供一些帮助和参考. ...
- ClickHouse系列教程一:Debian/Ubuntu 下ClickHouse的安装和使用
ClickHouse系列教程: ClickHouse系列教程 ClickHouse是一个真正面向列的DBMS.数据按列存储,并在执行数组(向量或列块)期间存储.只要有可能,就会在数组上调度操作,而不是 ...
- ASP .NET Core Web MVC系列教程一:创建一个Web应用程序
系列文章目录:ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序 从Visual Studio中选择" 创建新项目". 选 ...
- ASP.NET Core Web Razor Pages系列教程一:使用ASP.NET Core 创建一个Razor Pages网络应用程序
系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...
- Android Studio系列教程一:下载与安装
原文出处:http://stormzhang.com/devtools/2014/11/25/android-studio-tutorial1/ 背景 相信大家对Android Studio已经不陌生 ...
- asp.NET自定义服务器控件内部细节系列教程一
如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...
- Laravel系列教程一:安装及环境配置
免费视频教程地址https://laravist.com/series/laravel-5-basic 最近在SF上面看到越来越多的Laravel相关的问题,而作为一个Laravel的脑残粉,本来打算 ...
- python是一种蟒蛇使用的语言_python树莓派系列教程一:初识大蟒蛇 python(python语言环境搭建篇)...
作者:剑若游龙微信公众号<科学是什么东东>,欢迎关注 作者微信号,欢迎与我交流 网络爬虫,人工智能,机器学习,如何让计算机理解能力更强,如 何让你手中的机器人更人性化,更聪明? 不管是大人 ...
最新文章
- Python OpenCV像素操作
- 做木匠、开烘焙店、写科幻小说,那些选择转行的开发者们…
- JavaScript快速入门-ECMAScript本地对象(RexExp)
- 计算机应用基础专业自我鉴定范文毕业生,中专生计算机专业自我鉴定(7页)-原创力文档...
- 别人家的孩子!高校博士实现Nature、Science双发!
- 神经网络 卷积神经网络_如何愚弄神经网络?
- Mongodb简介及基本操作
- NFinal 控制器—URL
- Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
- face_recognition 安装报错问题解决
- Win7 下安装 Sketsa.SVG.Editor v7.0.1
- 卡尔曼滤波学习小记 How a Kalman filter works, in pictures
- Jumpserver docker部署及踩坑
- python判断信用卡号是否合法_三十八、练习、Python判断一个信用卡号是否合理
- 微信小程序wxacode.getUnlimited 生成圆形二维码
- otn与stn网络_mstp和stn的区别
- 轻量级私有云存储企业主要功能探析
- invalid method declaration
- 测试开发进阶——常用中间件概念——线程与线程池理解
- HTML CSS 背景图居中属性background-position