虚拟化技术走过了三个时代:
在这里插入图片描述

  • 物理机时代:多个应用程序跑在一台机器上
    在这里插入图片描述
  • 虚拟机时代:一台物理机使用虚拟机管理程序hypervisor安装多个虚拟机,一个虚拟机跑多个程序
    在这里插入图片描述
  • 容器化时代:一台物理机安装多个容器实例,一个容器跑多个程序

在这里插入图片描述
引入Docker后:

在这里插入图片描述

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

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

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

Docker 是用于构建、分发、运行(Build, Ship and Run)容器的平台和工具。

k8s 是一个对Docker 容器进行编排的系统,主要围绕 pods 进行工作。Pods 是 k8s生态中最小的调度单位,可以包含一个或多个容器。

正如下图:Docker图标是一个码头或者运送货物的船,而K8s图标则是方向盘或者说舵手。

在这里插入图片描述

Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用“8”字替代了“ubernete”这8个字符。

和Docker不同,K8S的创造者,是众人皆知的行业巨头——Google。

然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。

K8S是2014年6月由Google公司正式公布出来并宣布开源的。

K8S的架构,略微有一点复杂,我们简单来看一下。

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

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

  • 一个Master节点(主节点)
  • 一群Node节点(计算节点)

在这里插入图片描述

一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

深入来看这两种节点。

首先是Master节点。

在这里插入图片描述

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

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

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

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

然后是Node节点。

在这里插入图片描述

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

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

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

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

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

关于K8s,新开专栏整理笔记。


总结就是:

将Kubernetes与Docker的关系类比为Spring MVC与Servlet或MyBatis与JDBC的关系。Docker像是Servlet或JDBC,提供了基础的容器化技术。而Kubernetes类似于Spring MVC或MyBatis,相当于框架,它在基础技术之上提供了更丰富的功能,如自动化部署、扩缩容、服务发现与负载均衡等,使得开发者能够更便捷地构建和管理微服务应用。

Kubernetes和Docker共同构成了现在微服务架构的基石。Docker解决了应用程序的容器化问题,而Kubernetes则负责容器的自动化管理和编排。这两者相辅相成,使得开发者可以更加轻松地构建、部署和管理云原生应用程序。

参考链接:https://juejin.cn/post/7224149297951195193

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐