kubernetes从2014年6月份面世以来,一直处于一种高速的发展模式,是目前最火的开源技术,没有之一。截至2020年9月27日,已经v1.20.0-alpha.1版本了,基本保持着每年3个版本的发布速度,可见其火爆程度。 由于Kubernetes大火,再加上一些大厂的推广,现在使用kubernetes成为了一种“潮流”,不论小厂还是大厂都在往这方面靠。大厂就不说了,人家技术底蕴深厚,人才储备充足,资金力量雄厚,他们想干嘛就干嘛。但是对于大部分中小企业来说,kubernetes并不是那么好用的。

以下是从运维的角度来分析的。

(1)、Kubernetes的学习成本高

要使用Kubernetes肯定得先学习它,要学Kubernetes又得先学容器,要学容器又得先学linux,反正这就是一环套一环。如果是长期从事这方面职业的学习时间可能快点,但是对于不经常使用或者门外汉来说就难了。

我们先看Kubernetes的架构,如下:

kubernetes的架构并不复杂,安装部署也很简单,但是我们要用好它必须得学习它们的原理,只有深入了解它们的原理才能算入门了。然后还需要去学习各种名词以及它们的意思,比如:

  1. deployment是干什么的,用在哪些方面?
    
  2. service和ingress的作用是什么,在集群中起到什么作用?
    
  3. pod,replicaset,deployment,service,endpoints它们之间是如何联系的等等
    

然后你还得具备一定的网络知识,如下:

  • 集群外网络:传统的物理网络,你要保证所以物理主机能够互相连接,这一般有专门的网络工程师负责
    
  • 集群内网络:集群内的网络是软件定义的网络,你需要去学习这些软件的使用方式,不同软件之间的异同,如何选择
    

除了网络还有存储,对于存储方面需要考虑以下几个问题:

  • 需不需要使用存储。kubernetes中主要是运行无状态应用,对于这些应用到底需不需要存储
    
  • 用什么存储。到底是用网络存储还是用本地存储?是购买还是自建,它们的区别还有运维成本如何等
    

上面仅仅是简单说明了一下需要了解组件,了解一些名词,注意网络和存储等。但是在实际工作中涉及的周边产品非常多。

  1. 监控。在传统运维中我们常用zabbix等这些监控工具,在Kubernetes中也不是不可以使用,只是代价太大。那么我们就不得不学习新的监控工具,比如prometheus,它又是一门新的技术,是需要花时间成本的。
    
  2. 日志。Kubernetes中的pod日志如果没有做持久化也会随着pod的消失而消失的,那么我们就要考虑如何将这些日志保存起来,是直接持久化到本地还是远端,怎么去收集。这时候又会引入新的工具,比如elasticsarch、filebeat等。
    

上面这些都是普通使用需要学习的东西,实际在工作中还有很多的需求,比如要二次开发,你得去学习源码相关的知识,如果你不会go语言,你还得去学习go语言。这样算下来的学习成本是相当高的。

(2)、是不是适合kubernetes

就算前期的学习方面没问题,我们也不得不考虑一个问题:企业真的需要Kubernetes吗? 假如你的公司就3-5个应用,现在传统部署运行的好好的,你需要Kubernetes吗?我们不能为了用Kubernetes而用kubernetes,我们要考虑用Kubernetes会给公司带来多少效益?我们切换的代价有多大?其他技术人员接受Kubernetes的时间会有多长?公司目前的技术储备,人才储备能够很好的维护这部分系统吗?

这些都是我们要考虑的一个问题,毕竟公司的目标的挣钱,虽然它不在乎你下面的人是怎么做的,但是它在乎你下面的人能不能稳定的让它挣钱。

(3)、kubernetes维护成本大

上面其实已经说了技术广,那么随之而来的就是维护成本大。在中小企业中运维就2-3个人,但是要维护的技术栈却非常多,这就要求运维人员每个人都要懂、要会,这样的技术人才本身就少,所以就会造成公司运维人员技术实力良莠不齐,在本身繁重复杂的情况下再火上浇油。

(4)、kubernetes的推行难度高

推行Kubernetes并不是运维说上就上,还需要开发、测试等的配合才行。首先得给开发以及测试培训kubernetes相关知识,比如kubernetes的基本概念,如何查看日志,如何部署等。然后还要统计整理是否需要改代码等。这还是在相当配合的情况下,如果不配合的情况下就没办法搞了。所以要推Kubernetes,平级推的难度系统五星,由上而下要好一些,这就要求你如何去打动上级实施推广kubernetes。 (5)、使用Kubernetes的资金成本如何

圈里传的一句话是“容器节约资源”。实际上节约资源并不代表节约成本,所以你需要去考虑使用Kubernetes会花多少钱。在中小企业中钱是一个敏感数字,在同样的使命下,如果价格太昂贵,那么是否还有必要推行下去?

在考虑 Kubernetes 是否适合你的项目或组织时,我说了自己的一些看法,但是这不妨碍kubernetes是一个非常优秀的项目,而且我个人是非常热爱这个项目的。我们目前在使用它,在这个过程中的感受是不是我们会用,是让别人能够轻松使用。