Skip to content

k8s基础

  • K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经Go语言延用Borg的思路重写并捐献给CNCF基金会开源。 kubernetes的名字来自希腊语,意思是"舵手" 或 "领航员",K8s是将8个字母"ubernete"替换为"8"的缩写。

Image title

Kubernetes主要特征

  • 以服务为中心:围绕着服务转,使用者不用关心服务运行的环境、运行的细节。所以构建在Koubernetes上的服务不仅可以运行在物理机、虚拟机、也可以是私有云、公有云,在什么地方运行都是无差别的。
  • 自动化:在Koubernetes中的服务可以自动扩缩容,自动升级、更新、部署。比如Koubernetes在收到一个指令它会自动触发一个调度流程,选中目标节点部署或停止相应的服务。如果有新的pod启动,它会自动的加入负载均衡器,自动的生效。在运行过程中Koubernetes还会自动去检测实例状态,当发现某个实例不可用会自动销毁这个实例,然后重新去调度一个新的实例。以上操作全部都是自动化完成不需要人工参与。

Koubernetes与Docker的关系

  • Koubernetes可以看成是Docker的上层架构,Koubernetes是以Docker基础的标准为基础,去打造一个全新的分布式架构系统。当然Koubernetes并不是一定要依赖Docker。Docker是个产品,Docker技术本质是一系列的标准,所以实现了某个标准的产品都可以替代Docker。所以Koubernetes可以在底层支持自己本身的容器技术并且通过了Google的持续优化,在某些方面会做的比Docker更加的优秀。

Koubernetes的核心概念

  • 基本结构
    Image title
    1. Container 容器,容器中会有镜像版本,通过这个镜像运行了一个容器。
    2. 容器外面就是 POD 实例,一个 POD 中可以有多个容器。
    3. POD的特征
      1. 是一个POD内的所有容器都是运行在一台机器上的。
      2. 它里面的容器共享网络。
      3. 有一个唯一的IP。
    4. 每一个POD里面都会有一个 Pause,会有一个固定的镜像,Pause 的作用是作为 Container 的根容器,把其他的容器都Link到一起。
    5. Pause 会负责当前 POD 的健康检查。
    6. POD 的上一层是 RS(ReplicaSet) 副本集,它的作用是管理 POD 实例的。比如同一个应用需要用两个 POD,如上图它就会把两个 POD 关联起来。如果在运行过程中某一个 POD 出现了异常,RS 就会保证副本始终为2,在另外的机器去调度启动新的 POD
    7. RS 上层有一个 Deployment 概念,它的作用是更新容器(应用)。

当我们的业务里面有两个以上的容器,他们关系非常的紧密,这时我们就可以考虑把他们放到同一个POD里。

  • 版本升级 / 更新

    Image title
    Image title

    1. 当版本升级 / 更新时,Deployment 会自动的创建一个 RS 副本集,然后滚动的去先启动一个新版本的 POD,新的 POD 启动完成健康检查通过之后,就会将旧的 POD 停止 下线。然后以此类推。这就是滚动的方式。我们管理的层面只是在 Deployment
  • Service

    Image title

    1. Service 中有个 Selector 概念,用于指定 POD 实例,POD 实例通过 label 进行区分。Service 对外提供一个协议簇IP。
    2. 用户端 Client 访问 Service 通过 Service 最终访问到具体的 POD

Koubernetes的架构设计

  1. Master: 主节点
  2. Worker: 节点
  3. ETCD: 集群的存储组件
  4. API Server: 是操作K8s唯一的入口
  5. Scheduler: 调度器
  6. ControllerManager: 集群内部的控制中心
  7. Kubelet: 负责启动节点,维护POD的生命周期及网络等管理
    Koubernetes的架构设计

集群搭建方案对比

  • 社区方案
    • 杂乱
    • 不可靠
    • 升级难
  • Kubeadm(官方推荐)
    • 优点
      1. 优雅
      2. 简单
      3. 支持高可用
      4. 升级方便
    • 缺点
      1. 不易维护
      2. 文档不够细致
  • Binary(官方方案)
    • 优点
      1. 易于维护
      2. 灵活
      3. 升级方便
    • 缺点
      1. 没有文档
      2. 安装复杂