初识Kubernetes

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

目录

一、Kubernetes的背景

1、编排器

2、容器化应用

3、云原生应用

4、微服务应用

二、Kubernetes的诞生

1、Kubernetes和Docker

[2、Kubernetes与Docker Swarm对比](#2、Kubernetes与Docker Swarm对比)

3、Kubernetes与Borg

三、云操作系统

1、云的规模

2、应用的调度

3、简单的流程

致谢


一、Kubernetes的背景

Kubernetes 是一个应用编排器(orchestrator),主要用于对容器化的云原生微服务应用进行编排

1、编排器

编排器是一套部署和管理应用程序的系统。它能够++部署应用,并动态地响应变化++。例如,Kubernetes包括但不仅限于以下功能;

  • 部署应用程序
  • 根据需要动态扩缩容
  • 当出现故障时自愈
  • 进行不停机的滚动升级和回滚

Kubernetes最突出的优点是:可在无干预决策下自动完成以上任务

2、容器化应用

容器化应用就是运行在容器中的应用

在容器技术出现之前,应用程序可以运行在物理机或虚拟机中。容器 是关于应用打包和运行方式的新的迭代,它更加快速、轻量,也比服务器或虚拟机更加适合现代的业务需求。

  • 在++开放系统++(open-system)时代(大约20世纪80年代和20世纪90年代)应用运行在物理机上;
  • 在++虚拟机时代++(大约2000-2010年),应用运行在虚拟机中
  • 在**++云原生++**(cloud-native)时代(如今),应用运行在容器

同时,Kubernetes也可以编排其他负载类型,包括虚拟机serverless功能(serverless function),不过最普遍的情况是用于容器的编排;

3、云原生应用

云原生应用是被设计用来满足现代业务需求自动扩缩容、故自愈、滚动升级 等)并且运行在Kubernetes之上的应用

云原生应用并非只能运行在公有云上;也可以运行在其他任何Kubernetes平台之上,甚至包括++自建数据中心++;

4、微服务应用

一个微服务应用 ,是指由许多小而专的服务组件,通过互相通信而组成的套完整的业务系统。以一个电子商务系统为例,它可能由以下功能独立的微服务组成。

  • Web前端
  • 分类服务
  • 购物车
  • 授权服务
  • 日志服务
  • 持久化存储

每一个单独的服务都可以被称为一个微服务。通常每个微服务都可以由不同的团队负责研发和运维,有自己的发布节奏,并独自进行扩缩容;这种构建方式正是云原生应用的一个很重要的特点;

Kubernetes可++用于部署和管理(编排)那些能够以容器的形式打包和运行(容器化)的应用++,这些应用的构建方式(云原生微服务)使它们能够根据业务需求实现扩缩容、故障自愈和在线升级。

二、Kubernetes的诞生

1、Kubernetes和Docker

Kubernetes和Docker是两个互补的技术。比如,通常人们会使用Docker进行应用的开发 ,然后用Kubernetes在生产环境中对应用进行编排

在这样的模式中,开发者使用自己喜欢的语言编写代码,然后用Docker进行打包、测试和交付 。但是最终在测试环境或生产环境中运行的过程是由Kubernetes来完成的;

Docker是一种更偏向底层的技术,它负责启停容器的操作;而Kubernetes是一种更加偏向上层的技术,它注重集群范畴的管理,比如决定在哪个节点上运行容器、决定什么时候进行扩容缩容或升级;

发现,Docker并非唯一支持的容器运行时。事实上、Kubernetes基于一些列特性实现了对容器运行时的抽象(从而兼容不同的底层容器运行时)

  • 容器运行时接口(Container Runtime Interface,CRI)是Kubernetes用来++与第三方容器运行时进行对接的标准化的抽象层++。这样容器运行时与Kubernetes是解耦的,同时又能够以一种标准化的方式子以支持。
  • 运行时类(Runtime Class)是Kubernetes 1.12引入的新特性,并在1.14版中升级为beta 。它对不同的运行时进行了归类。例如,gVisor或Kata容器运行时或许比Docker和Containerd能提供更优的隔离性。

2、Kubernetes与Docker Swarm对比

3、Kubernetes与Borg

Kubernetes并非Borg或Omage的开源版本。更恰当的说是Kubernetes与Borg和Omage有着相同的基因和家族史。

三、云操作系统

Kubernetes已经成为++部署和管理云原生应用的事实上的标准平台++;类似云上的操作系统(OS);试想以下情况:

  • 当在物理服务器上安装一套传统的操作系统(Linux或Windows)时,操作系统会对服务器的物理资源进行抽象,并对进程进行调动;
  • 当在云上安装Kubernetes时,它会对云上的资源进行抽象,并对多种云原生微服务应用进行调度;

像Linux系统能对不同的服务硬件进行统一的抽象一样,Kubernetes也能够++对不同的私有云和共有云进行统一的抽象++。最终,只要运行Kubernetes,就不需要关心底层是运行在自建数据中心,还是边缘计算集群,抑或是共有云中了;

所以,Kubernetes能实现真正意义上的混合云,使用户跨越不同的公有云或私有云实现对负载的无缝迁移和均衡。也可在不同的云之间进行迁移,意味不会永远绑定在最初确定的云上。

1、云的规模

2、应用的调度

Kubernetes**++对云和数据中心的资源进行了管理++**;总体来说,云或数据中心就是一个包含计算、存储与网络的资源池Kubernetes对它进行了抽象。意味着我们无须明确对应用运行在哪个节点或存储卷上进行硬编程,甚至无须关系应用运行在哪个云上;

3、简单的流程

将应用打包成容器,声明其运行方式,然后交给Kubernetes来启动它们并保持其运行状态。Kubernetes同样也提供了丰富的用来检查运行状态的工具和API;

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。

学习永无止境,让我们共同进步!!

相关推荐
kaiyuanheshang8 小时前
docker 中的entrypoint和cmd指令
运维·docker·容器·cmd·entrypoint
Python私教9 小时前
除了 Docker,还有哪些类似的容器技术?
运维·docker·容器
hummhumm13 小时前
第33章 - Go语言 云原生开发
java·开发语言·后端·python·sql·云原生·golang
petaexpress13 小时前
5种常见的k8s云原生数据管理方案详解
云原生·kubernetes·k8s云原生
wenyue112114 小时前
云原生开发框架
数据库·云原生
颜淡慕潇15 小时前
【K8S系列】深入解析 Kubernetes 中的 Deployment
后端·云原生·容器·kubernetes
zwm_yy17 小时前
docker-mysql
mysql·docker·容器
FinelyYang19 小时前
docker+容器+redis+minio+java jar,实现开机自启动
运维·docker·容器
蚂蚁在飞-21 小时前
云原生时代的轻量级反向代理Traefik
云原生·golang