头图

云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?

img

img

Kubernetes 可以为做些什么?

在学习一种新技能之前,囧囧建议不要上去先看各种牛叉的实现,我们需要先搞清楚这个技能是什么?学习了之后能为我们提升什么有用的价值。毕竟在当今技术快速更新迭代的时代,我们没有足够的精力去学习太多没有用的知识去扩展的无用的广度,只有你明白了你需要学习的东西的价值,你才有动力去持续跟进,去剖析,去理解,去爱上它,用它创造价值。

img

Kubernetes 是什么?

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系🧐🧐🧐。

官方解读

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

部署演进

img

传统部署

各个组织机构在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,更多的选择是凭借工程师的个人经验去分配资源,也就是无法合理的去规划资源分配,这会导致资源分配问题。

虚拟化部署

虚拟化技术允许你在单个物理服务器的 CPU 上运行多个虚拟机(VM)。允许应用程序在 VM 之间隔离,虚拟化技术能够更好地利用物理服务器上的资源,

相比于传统部署方式,优点是更好的可伸缩性,降低硬件成本。

容器部署

以应用程序为中心的管理
资源隔离的粒度更细腻,比VM要更简约,更容易扩展移植,
容器类似于 VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。

为什么需要 Kubernetes,它能做什么?

img

应用容器化

容器是打包和运行应用程序的好方式。

容器化已经做到应用程序能以简单快速的方式发布和更新。

线上环境我们应用程序需要持续稳定的运行,不能早上部署好了,下午用户无法使用。

出现故障问题的时候,需要有快速响应的机制去确保不会造成重大影响。

程序是无错的情况下,对应到容器层面,就是我们需要保证容器是正确的,不能因为容器的意外而影响到前线😇。

这意味着我们需要管理运行应用程序的容器,时刻监督着运行情况,并确保容器不会停机。

如果一个容器发生故障,需要快速采取措施,例如重启容器,或者另外启动一个容器去替代它。

img

半夜凌晨两点钟,你在家里呼呼大睡,线上疯狂报警,你不得不赶紧起床解决😭😭😭

img

咦,想想都惨呀😭😭😭!

如果交给系统去处理容器问题,会不会更容易?更方便?不再需要你精神高度集中每天注意可能发生的各种意外情况😳?

所以,k8s来了,它来了,它来了,它带着旋风跑来了!🧐🧐🧐

Kubernetes 提供了一个可弹性运行分布式系统的框架。

img

  • 服务发现和负载均衡

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

  • 存储编排

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

  • 自动部署和回滚

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

  • 自动完成装箱计算

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

  • 自我修复

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

  • 密钥与配置管理

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

img


囧么肥事
14 声望1 粉丝