云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?
Kubernetes 可以为做些什么?
在学习一种新技能之前,囧囧建议不要上去先看各种牛叉的实现,我们需要先搞清楚这个技能是什么?学习了之后能为我们提升什么有用的价值。毕竟在当今技术快速更新迭代的时代,我们没有足够的精力去学习太多没有用的知识去扩展的无用的广度,只有你明白了你需要学习的东西的价值,你才有动力去持续跟进,去剖析,去理解,去爱上它,用它创造价值。
Kubernetes 是什么?
Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系🧐🧐🧐。
官方解读
Kubernetes 是一个可移植的,可扩展的开源平台。
用于管理容器化的工作负载和服务,方便了声明式配置和自动化。
它拥有一个庞大且快速增长的生态系统。Kubernetes 的服务,支持和工具广泛可用。
部署演进
传统部署
各个组织机构在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,更多的选择是凭借工程师的个人经验去分配资源,也就是无法合理的去规划资源分配,这会导致资源分配问题。
虚拟化部署
虚拟化技术允许你在单个物理服务器的 CPU 上运行多个虚拟机(VM)。允许应用程序在 VM 之间隔离,虚拟化技术能够更好地利用物理服务器上的资源,
相比于传统部署方式,优点是更好的可伸缩性,降低硬件成本。
容器部署
以应用程序为中心的管理
资源隔离的粒度更细腻,比VM要更简约,更容易扩展移植,
容器类似于 VM,但是它们具有被放宽的隔离属性,可以在应用程序之间共享操作系统(OS)。
为什么需要 Kubernetes,它能做什么?
应用容器化
容器是打包和运行应用程序的好方式。
容器化已经做到应用程序能以简单快速的方式发布和更新。
线上环境我们应用程序需要持续稳定的运行,不能早上部署好了,下午用户无法使用。
出现故障问题的时候,需要有快速响应的机制去确保不会造成重大影响。
程序是无错的情况下,对应到容器层面,就是我们需要保证容器是正确的,不能因为容器的意外而影响到前线😇。
这意味着我们需要管理运行应用程序的容器,时刻监督着运行情况,并确保容器不会停机。
如果一个容器发生故障,需要快速采取措施,例如重启容器,或者另外启动一个容器去替代它。
半夜凌晨两点钟,你在家里呼呼大睡,线上疯狂报警,你不得不赶紧起床解决😭😭😭
咦,想想都惨呀😭😭😭!
如果交给系统去处理容器问题,会不会更容易?更方便?不再需要你精神高度集中每天注意可能发生的各种意外情况😳?
所以,k8s来了,它来了,它来了,它带着旋风跑来了!🧐🧐🧐
Kubernetes 提供了一个可弹性运行分布式系统的框架。
服务发现和负载均衡
Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
存储编排
Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
自动部署和回滚
你可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态 更改为期望状态。例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
自动完成装箱计算
Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
自我修复
Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的 运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
密钥与配置管理
Kubernetes 允许你存储和管理敏感信息,例如
密码
、OAuth 令牌
和ssh 密钥
。你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。