新手看docker & k8s

本篇文章主要从新手的角度熟悉一下docker k8s

新手看docker & k8s

references:

IaaS,PaaS,SaaS 的区别

什么是 IaaS,PaaS,SaaS

新手看docker & k8s

IaaS:基础设施服务,Infrastructure-as-a-service
PaaS:平台服务,Platform-as-a-service
SaaS:软件服务,Software-as-a-service

以制作pizza为例子,三个item的区别可以如下图所示:

新手看docker & k8s

映射到software中可以这样看:

新手看docker & k8s

认识Docker

虚拟机

新手看docker & k8s

虚拟机,类似于“子电脑”

在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。

++虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。++

虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。

而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

下面这张图是虚拟机和容器的对比:

新手看docker & k8s

Docker

Docker技术的三大核心概念,分别是:

  • 镜像(Image)

  • 容器(Container)

  • 仓库(Repository)

这个Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

也就是说,每次变出房子,房子是一样的,但生活用品之类的,都是不管的。谁住谁负责添置。

负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)

K8S

创造者:Google

如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。

就在这个时候,K8S出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

一个K8S系统,通常称为一个K8S集群(Cluster)。

这个集群主要包括两个部分:

一个Master节点(主节点):
Master节点主要还是负责管理和控制。
一群Node节点(计算节点):Node节点是工作负载节点,里面是具体的容器。

新手看docker & k8s

Master节点包括API Server、Scheduler、Controller manager、etcd。

API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

Controller manager负责管理控制器,相当于“大总管”。

新手看docker & k8s

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口.

Docker,不用说了,创建容器的。

Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

Kube-proxy,主要负责为Pod对象提供代理。

Fluentd,主要负责日志收集、存储与查询。

稍微深入了解Docker

docker架构

新手看docker & k8s
新手看docker & k8s

调度问题

references:

k8s学习笔记-调度介绍