讲在开头:
本文并不是专业知识文章,如果需要对容器的概念清楚的了解,我们有很多优秀的文章和教材可以学习。如果想要学习,那么张磊老师的深入剖析kubernetes是一个由浅入深的非常好的教材,优秀书籍也有很多,包括kubernetes in action。但本人在此更多推荐新人查看docker和kubernetes文档。
在此之前有一些概念需要说明,便于理解,之前有一篇文章xxx讲述云计算中网络的概念,包括vpc,az和region这些常见物理网络和虚拟网络的概念。
需要说明的是,其实整个云计算是围绕虚拟化展开的,众所周知,虚拟化分不开计算,存储,网络三大块。从云服务商的视角看,这三块也是真正的基础设置,稳固的基础设施是客户真正关心的第一要素。
容器化步骤:
网络上对于容器化的概念已经非常多了,但我们最终绕不开的就是docker和kubernetes,容器引擎和编排系统。这里所说的容器化,即生产所需的容器环境,无论云厂商再如何封装和宣传,都逃不过kubernetes已经成为容器的实施标准。
容器化的几个步骤:
- 业务微服务化(低耦合,高内聚)
- 构建二进制进行
- 容器化运训
- CICD(or gitops…)自动化
云厂商的容器产品
那么云厂商一般会有哪些容器服务(kubernetes)提供呢?
绝大部分云厂商都提供了托管集群。即master节点无需用户管理。像阿里云的ack则提供了非托管集群,即master需用户自行运维的集群。抛开集群形态,各个云厂商还提供了一些serviceLess容器服务,即用户进关注容器的管理,而不需要对node做运维,资源对用户是Pod秒级弹性的,这样可以应对突发流量的激增,例如微博热点事件。除此之外,一些云厂商还推出了一些serverless的集群服务,用户购买的是集群但不需要对节点进行运维等等。对于中小型企业仍然推荐以托管集群作为首选。
如果自建
对于小型化公司而言,依然推荐上云是一个最好的选择。如果必须要选择在ecs上自建集群,可以考虑一些主流的kubernetes生命周期管理工具,例如rancher。一些数据敏感的用户(金融和政府单位)则会考虑将整个kubernetes的管理面服务购买下来部署在自由机房,以保证对生命周期和底层数据的完全可控。