初识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. SQL分组排序后取每组最新一条数据的另一种思路

    在hibernate框架和mysql.oracle两种数据库兼容的项目中实现查询每个id最新更新的一条数据. 之前工作中一直用的mybatis+oracle数据库这种,一般写这类分组排序取每组最新一条 ...

  2. TCP/IP网络编程之字节序和网络字节序

    一.概要 本篇文章主要讲解基于.net中tcp/ip网络通信编程中的网络字节序.在自我进步的过程中记录这些内容,方便自己记忆的同时也希望可以帮助到大家.技术的进步源自于分享和不断的自我突破. 技术交流 ...

  3. 23种设计模式 - 行为变化(Command - Visitor)

    其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 行为变化 Command 动机(Motivation) 在软件构建过程中,"行为请求者" ...

  4. vue 在模板template中变量和字符串拼接

    例子:  :post-action="'/api/v1/reportPage/'+this.selectedPagerId+'/saveimg/'"

  5. composer安装依赖包时,php内存分配不足

    Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in pha ...

  6. MySql 错误:In aggregated query without GROUP BY, expression #1 of SELECT list contains....

    前段时间做sql注入的时候  使用group_concat时,出现标题上的错误.经查阅一位大佬的博客,成功解决!故写此博文! 当mysql的sql_mode是only_full_group_by的时候 ...

  7. oa项目面试准备

    熟悉项目在ssm框架下的编程流程,了解mysql html spring springmvc mybatis技术.了解过springboot编程. 在上个寒假跟着培训机构用springboot框架编写 ...

  8. 上海做假证t

    上海做假证[电/薇:187ヘ1184ヘ0909同号]办各类证件-办毕业证-办离婚证,办学位证书,办硕士毕业证,办理文凭学历,办资格证,办房产证不. 这是一个简单的取最大值程序,可以用于处理 i32 数 ...

  9. 在一台电脑上,添加多个Git的ssh key

    Git的第一套公秘钥默认名为 id_rsa ,如果你想要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字. 步骤如下:(总共四大操作) 一.生成ssh key 1.生成一个新的自定义 ...

  10. Cassandra使用的各种策略

    1. 背景介绍 Cassandra 使用分布式哈希表(DHT)来确定存储某一个数据对象的节点.在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token.token 只能在一定的范围内取值, ...