K8s入门 0 前言和简介

k8s-log

前言

由于这次的系列是针对有一定程度的基础用户,所以在阅读kubernetes相关知识入门的时候,请至少对Docker和容器技术有一定程度的了解。

什么是kubernetes 和Docker有什么区别

在对这两者没有特别大的了解之前,可能认为kubernetes和docker的区别不大,似乎用的都是docker容器。

实际上,docker容器是linux容器技术的一个方案的具体实现。更加倾向于容器技术的具体实现方案。而kubernetes是一套容器编排系统,用于管理容器的调度。

kubernetes本身来自于谷歌的内部项目Borg,和其他的平台,Rancher,Marathon等容器编排平台类似,都是对docker容器的进一步管理。 进一步的,kubernetes发展到现在,已经是一套完整的开源方案,而不是一整套系统,所以不同的云厂商,以及各种开源项目组,都有不同的kubernetes的具体实现方案。

而k8s,是由于kubernetes的单词过长,k和s中间有8个英文字母,从而简化出的缩写。一般情况,在后文中,k8s等同于kubernetes

为什么需要容器编排系统

那么,有的同学可能会有疑惑,docker本身不就对容器提供了管理功能,docker cli和docker-compose就能一定程度上编排容器,那么为什么还需要k8s这样的编排系统。 以下是一点个人见解:

  1. docker本身只能在单机环境下运行,而kubernetes首先解决的方案是容器集群问题
  2. k8s能够动态伸缩扩容pod并且进行负载均衡
  3. k8s的service能够自动dns服务发现
  4. k8s是一套标准化的容器平台,这意味着,能够运行在k8s上的业务,也就一定能运行在k8s上,不存在由于操作系统,容器技术,网络差异的问题导致开发环境和生产环境有大幅度的变化
  5. 能够批量管理容器的更新和流量的治理,对业务的蓝绿金丝雀发布有更加细的力度的控制,并且能够进行回滚操作
  6. 分离了不同层面的资源,而不是像docker一样,集成了大部分功能,对资源本身有更细的控制粒度。

虽然说了那么些点,但是可能一下子没有办法完全明白,所以在后续的文章中,会针对这部分内容详细的讲解一下。希望大家从docker过度到kubernetes有一个平滑的过程。