一、容器的由来及演变史

Docker --> Docker-compose --> Docker swarm --> Kubernetes

二、微服务容器化的几种解决方案

特 性 Docker Swarm Kubernetes
安装和集群配置 安装非常简单,但是集群不是很强大 安装很复杂;但是一旦安装完毕,集群就非常强大
图形用户界面 没有官方界面依托第三方 自带功能较完善的Kubernetes bashboard
可伸缩性 高度可伸缩&比Kubernetes 快5倍 高可伸缩性和快速扩展
自动伸缩 Docker Swarm不能自动缩放 Kubernetes可以进行自动缩放
负载均衡 Docker Swarm可以自动平衡集群中容器之间的流量 基于iptables/ipvs(调度算法丰富)
规模 1000节点、50000容器 节点数不超过 5000、Pod 总数不超过 150000、容器总数不超过 300000、每个节点的 pod 数量不超过 100
核心功能 管理节点高可用、调度任务、服务发现、回滚、更新、通讯安全、容器HA、服 务自愈、配置管理、健康检查、服务伸缩 资源调度、服务发现、服务编排、资源逻辑管理、服务自愈、安全配置管理、job任务支持、自动回滚、内部域名服务、健康检查、扩 容伸缩、负载均衡、灰度升级、应用HA、容灾恢复
社区主力 docker google、redhat、coreos、华为、浙大sel
设计初衷 跨宿主机管理容器集群 支持分布式、服务化的应用架构

2.1 Docker Swarm架构图

Day01-kubernetes基础架构解读-图1

Manager nodes

  • 维护一个集群的状态;

  • 对 Services 进行调度;

  • 为 Swarm 提供外部可调用的 API 接口;

Worker nodes

  • 用来执行 Task;

2.2 Kubernetes架构图

Day01-kubernetes基础架构解读-图2

  • Master Node:作为控制节点,对集群进行调度管理;Master Node由API Server、Scheduler、Cluster State Store和Controller-Manger Server所组成;
  • Worker Node:作为真正的工作节点,运行业务应用的容器;Worker Node包含 kubelet、kube proxy和Container Runtime;

Day01-kubernetes基础架构解读-图3

  • etcd:保存了整个集群的状态,就是一个数据库;
  • apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
  • controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

Day01-kubernetes基础架构解读-图4

  • kubelet:负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI) 的管理;

  • Container runtime:负责镜像管理以及 Pod 和容器的真正运行(CRI);

  • kube-proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡;

三、部署方式选择

kubeadm:

  • 简单优雅;
  • 支持高可用;
  • 升级方便;
  • 官方支持;

kubernetes二进制:

  • 早期线上主流方式;
  • 部署耗时长;
  • 稳定性较高;

Kubernetes-as-a-Service(公有云服务)

  • 阿里云:ACK
  • AWS Cloud:EKS

Day01-kubernetes基础架构解读-图5