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