初识k8s

kubernetes,从接触到今年6月接触到现在有3个月了,严格来说是断断续续的接触,没有一直持续学习。在未接触之前,这个技术对我来说,有点像传说,运维同行对此评价普遍是比较难懂,概念庞大,应用落地困难这类评价较多,看到大概的评价,我暂时是不打算学习这块的,精力更多的是放在学习加固基础上,最近对知识的复盘,对很多技术有不同的思考,这里说一下我对k8s的思考。

学习k8s简单吗

后续接触docker这个容器技术,个人认为是介于应用程序和操作系统之间的一个虚拟层,有点类似软件设计里面的“虚拟层”意思,接触过的都知道,docker命令非常多,平时使用和真正在生产落地可不是简单的能用就可以的,所以编排技术的产生随之而来,实际上这里有一个疑问,管理一个复杂的技术本身会是简单的?接触k8s之后,觉得一点都不简单

什么是k8s

关于k8s的介绍,这里摘自官网的主页的介绍,以下为官网原文

kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。Kubernetes 将构成应用的容器按逻辑单位进行分组以便于管理和发现。 Kubernetes 基于谷歌公司在运行生产负载上的 15 年经验打造,并融合了来自社区的最佳建议与实践。

基于一定的规则原理,谷歌公司每周能够运行数十亿的容器;通过遵循相同的设计, Kubernetes 能够在保持现有运维团队规模的前提下完成集群的弹性伸缩。

作为一个开源系统,Kubernetes 使您能够自由地获得内部云、混合云或公有云基础设施所提供的便利, 并根据需要轻松地迁移工作负载。

看了上面介绍的你,对这个技术是不是有一种好奇,这么牛皮,这么多特点,好像无所不能。。。

如果去搜索引擎找k8s介绍这类文章,铺天盖地的这种介绍,各种特点神话的技术,很认同的一句话“多度的包装容易让技术本身披上一层迷雾”,在k8s上,不知道在座的第一次看到k8s介绍是否会有同感,我是有这种感觉。

k8s到底是什么

在回答这个问题之前,先来看看下面wiki对计算机的定义

电子计算机(亦称电脑)是利用数字电子技术,根据一系列指令指示并且自动执行任意算术或逻辑操作串行的设备。通用计算机因有能遵循被称为“程序”的一般操作集的能力而使得它们能够执行极其广泛的任务

这段话和平时接触的计算机概念,在大意上大家都接触过,在这里我把计算机的处理任务的能力整体上称为“计算力”,用来代表一台计算机的整体处理能力,接下来回顾前文k8s官网的介绍。

首先看看第一段话,“用于容器化应用的自动部署、扩缩和管理”,再看这句话,“自动部署”这个词应该是很早之前就有的,应用部署规模大了之后,不可能人工部署,效率、正确性各种方面都不合适,所以说自动化部署也可以看成是一种“偷懒”下的产物

接下来看看“管理”,这也不难理解,毕竟规模体系大了之后,人工管理都是需要像更高效的平台化管理发展的(其实也有点“偷懒”的味道)

最后来看看中间的的介绍词“扩缩”,这两个字简单,但里面包含的意思可不简单,“扩缩”指的是扩容和收缩,请认真思考一下。。。

先来看看常见的扩容,一般情况下,一套稳定正常流畅使用的系统是不会做这个操作的,只有当业务规模增加,处理能力超出现有的生产处理能力,才会做的升级措施,简单来说,就是增加计算力。再详细看看,假设一台服务器的计算力用数字100表示,对于一个生产架构来说,无论做了多少优化,都不可能发挥所有服务器的100%性能,这一点相信你们也是认同,总会有一些性能空闲多的服务器。那么问题来了,

容器技术在kubernetes管理下的计算力可以超过现有的 人工/平台 管理服务器的计算力总和吗?

对于这个问题,我无法完完全全回答,只能说从接触k8s到现在,思考了有一段时间,从几个角度回答这个问题。第一看性能,性能是最好的对比,先来看看k8s管理的容器技术docker,docker是一种虚拟化技术,各位可以网上搜索一下docker的性能和常见的虚拟机性能对比,大概可以知道整体上的docker是超过虚拟机性能的,但是,我前面说过了,docker是一种虚拟层技术,无论设计多么的优秀完美,docker能和裸金属服务器下运行软件应用性能媲美吗?我觉得这个答案无疑是不能的,无论整体上还是局部对比上,那么回过头来看,k8s管理下也不能超过裸金属服务器的总性能,理论上至少会有损耗,追求完美是好的,但是更多时候软件的架构上需要考虑缺点是否可以接受

第二点,看看k8s的扩容上,这一点技术在当前开源管理技术来说是非常优秀的设计,充分发挥服务器的性能。试想一下平时的扩容是怎么操作的,简单的是人工操作,高级点是把人工操作的部署集成到平台化,智能点是结合监控,测试等等综合因素触发自动扩容条件进行自动扩容。连我都能想到这个点(菜鸟.jpg),那么自动扩容技术至少不是k8s首创。

第三点,看看管理上,k8s提供了一种平台化管理技术,那么对于自建管理平台的公司来说,自建的管理平台,至少是符合公司,团队的,至于哪个好,那就各人的感受了

第四点,规模上看,目前各种自动化技术管理技术,开源的非自建的,都有各的好,这一点上k8s也没有绝对优势

以上四个点回答前面的提问,理论上应用部署在k8s是可以更加好的发挥服务器的整体性能,往极限来想就是发挥全部性能,但是如果一个公司的服务器,本身就已经发挥了接近极限了,那么k8s并不能带来发挥计算力上的优势,这种情况只有加钱买服务器增加计算力才能解决问题。至于收缩,这个操作比较少见,意思就是反过来了,不需要那么多计算力,流量峰值过后才需要的操作

接下来看看第二段话,“谷歌公司每周能够运行数十亿的容器”,这句话意味着部署数十亿个容器(业务规模难以想象.jpg),这里一直有一个疑问,其他的大厂或者大规模的管理平台怎么做的?为嘛k8s出来纷纷站队,自建的管理平台应该也不差才对,希望有朋友看到回答这个疑问。站在业务层面来看,如果一个业务不是经常更新部署,那么k8s在部署优势上的优点也不能给业务带来改进,这里顺带提一下有状态应用,据我所知,有状态应用一个特点就是产生数据,平时数据的存放多是在操作系统的文件系统上,文件系统经过长时间的发展,是经得起考验的,这方面事故较少,所以关注不多。但是呢,这种操作系统上的文件系统是在单机上的,那么自然会有相应的分布式文件系统技术产生,至于性能和稳定性方面,我觉得和纯操作系统的文件系统是差一些的,特别是稳定性,平时不出事都好说,一出事,那就真的呵呵了,很多公司最重要的就是数据,其他的什么软件,代码靠边站(数据就是霸气.jpg),有状态上k8s真的要特别小心,如果有专门负责存储的工程师负责,有这个技术实力,那就另当别论,毕竟专业人做专业事,没接触这块方向不做评论。

最后一段话,认真看就说,方便集合不同环境下的服务器性能,方便但高效吗?这个是否高效无法回答,毕竟不同的环境,运营商、网络等等影响因素太多,综合起来的性能不好说

经过对k8s官网介绍解读,相信你会对k8s也有自己的思考,欢迎留言交流

k8s给架构带来什么

技术是为业务服务的,无论一个技术多么牛皮,对生产架构不能带来优点和改进都是耍流氓,这一点,大家各自有看法,我这里说说我的看法。第一按照软件应用状态角度看,对于无状态应用,k8s的容器管理确实一大利器,效率上带来很大的提高;至于有状态应用,个人比较倾向于稳定性方面考虑,有状态应用在高并发场景下本身很容易出问题,而存储无小事,不应该增加其他的风险,况且k8s产生的背景不是要统一有状态应用和无状态应用软件的运行。

第二看看管理效率上,这一点现有的管理平台不少,管理效率上应该不会差很多

第三点,服务器整体性能角度看,这一点目前来说,确实是利器,虽然会有一些损失,但是可以接受,所以整体上还是很强

以上就是我目前对k8s的思考,其中疑问和观点较多,欢迎留言交流

kubernetes的思考的更多相关文章

  1. Kubernetes集群调度器原理剖析及思考

    简述 云环境或者计算仓库级别(将整个数据中心当做单个计算池)的集群管理系统通常会定义出工作负载的规范,并使用调度器将工作负载放置到集群恰当的位置.好的调度器可以让集群的工作处理更高效,同时提高资源利用 ...

  2. 【Kubernetes】K8S 网络隔离 方案

    参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...

  3. 使用Netsil监控Kubernetes上的微服务

    ubernetes是容器编排和调度领域的王者,它击败了竞争对手Docker Swarm和Apache Mesos,开启了闪耀的未来,微服务可以自修复,可以自动扩展,可以跨zone,region甚至跨云 ...

  4. kubernetes 概览

    kubernetes 核心数据 (存储于ETCD 有数据变化通知的功能(watch-dog)) kubernetes 设计综述 (中英文对照)(http://www.oschina.net/trans ...

  5. 10分钟入门kubernetes(上)

    kubernetes简称k8s, 主要用途是automate deployment, scaling, and managment of containerized applications.是目前非 ...

  6. 详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一 ...

  7. [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。

    目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...

  8. Kubernetes的污点和容忍(上篇)

    背景 搭建了一个k8s(Kubernetes)的事件监听服务,监听事件之后对数据做处理.有天报了一个问题经调查是新版本的k8s集群添加会把unschedule等信息通过污点的方式反映.而这些污点是只有 ...

  9. 为什么 kubernetes 天然适合微服务

    最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发三大容器平台从功能方面来看,最后简直是一摸一样.(可参考<容器平台选型的十大模式: ...

随机推荐

  1. linux 基本命令整理--转

      推荐:http://www.cnblogs.com/lingiu/p/3446647.html 1. 查看目录文件:ls2. 查看目前路径:psw3. 查看文件内容:cat 文件名4. 打开编辑器 ...

  2. nvm -- node 多版本管理器

    Node.js 越来越热,应用的场景也越来越多. 在开发中,我们可能同时在进行多个 node 项目,而这些不同的项目所使用的 node 版本又是不一样的,或者是要用更新的 node 版本进行试验和学习 ...

  3. 操作系统-存储管理(5)IA-32/Linux的地址转换

    IA-32/Linux按字节编址:在保护模式下,IA-32采用段页式虚拟存储管理方式,存储地址采用逻辑地址.线性地址和物理地址来进行描述. 逻辑地址由48位组成,包含16位段选择符(高13位为段表项的 ...

  4. 防止用户利用PHP代码DOS造成用光网络带宽

    用PHP代码调用sockets,直接用服务器的网络攻击别的IP,常见代码如下: 代码如下:$packets = 0; $ip = $_GET[\'ip\']; $rand = $_GET[\'port ...

  5. iNeuOS工业互联平台,WEB组态(iNeuView)集成实时预警和报警柱状图

    目       录 1.      概述... 2 2.      平台演示... 2 3.      应用过程... 2 4.      实时数据展示效果... 3  1.      概述 对于我们 ...

  6. 光年数据分析表(seo数据监控表和爬虫数据监控表)

    http://www.wocaoseo.com/thread-307-1-1.html 光年seo培训想必很多人都知道,他们提出的数据化操作影响了很多的seo从业者,下面是他们的2个数据表,搜集于网络 ...

  7. CAOZ:百度搜索引擎的人工干预的看法

    http://www.wocaoseo.com/thread-247-1-1.html 百度确有人工干预的机制,但是这个机制与互联网上的传闻相差很大,人工干预的范围其实是非常小的,特别恶性的搜索结果, ...

  8. maven文件合集

    maven项目目录结构 聚合项目的pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

  9. 聊一聊RocketMQ的注册中心NameServer

    前言 上次我们一起了解了RocketMQ的基本架构原理,那简单的回顾一下RocketMQ的架构组成. RocketMQ其实包含了四个核心部分,NameServer.Broker.Producer.Co ...

  10. 使用powershell完成定时get任务

    最近公司网站需要在后台定时请求和更新数据,但PHP毕竟是一种后端语言,不能自动运行,所以整理了几个方法. 1.在前端定时请求页面. 2.使用批处理. 3.使用windows计划任务. 第一种方案必须要 ...