2. Docker和k8s(Kubernetes)有什么关系

首先看看k8s[中间8个字母,数过了(逃](Kubernetes)是什么以及为啥会出现这个东西。

总的来说,k8s的出现和使用容器进行部署的趋势是分不开的。

部署方式发展历史

总的来说,app的部署大致分为三个阶段。

最传统的方式中,所有app公用一个物理系统,这种方式会造成很多资源分配上的冲突。

而后进入了虚拟机部署的时代,各个app运行在其自己的VM上,允许一个物理服务器上运行多个系统,并提供了一定的安全级别(各个VM相互隔离)。

现如今,更流行使用容器进行部署。容器类似于 VM(见前文详细比较),但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。

在使用容器进行app部署的今天,需要一个平台对容器进行管理:

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

From 官方文档

通俗一点,我理解的k8s就是对容器进行管理的工具。其中提供的很多功能能够提升部署的鲁棒性以及整体的运行效率:

服务发现和负载均衡

Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。

存储编排

Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。

自动部署和回滚

您可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 来为您的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。

自动二进制打包Kubernetes

允许您指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。

自我修复

Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。

密钥与配置管理

Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

至此,Docker和k8s的关系也就明了了:

Docker隔离并打包applications及依赖项。

Kubernetes部署协调管理容器,并提供一些其他的相关功能。

你可能感兴趣的:(2. Docker和k8s(Kubernetes)有什么关系)