前言
目前对k8s的一期学习规划如下:
了解k8s前世今生(本文)
由点到面认识k8s架构
由面到点深入k8s架构
今天开始逐步去了解k8s前世今生,本文结构如下:
物理机以及存在的问题
虚拟主机以及存在的问题
docker诞生
docker存在的问题
物理机以及存在的问题
直接使用物理机部署业务服务:
| 部署方式 | 问题 |
|---|---|
| 独立部署业务服务 | 资源利用率低 |
| 混合部署业务服务 | 耦合/互相影响 |
虚拟主机以及存在的问题
物理机通过虚拟化技术,可以虚拟出多台虚拟主机,即提升了物理设备的利用率又达到了隔离的目的。

但是虚拟硬件 + 虚拟操作系统不够轻量,于是诞生了docker。
docker诞生
docker如何解决隔离问题,依赖Linux核心能力Namespace实现:
进程隔离
网络隔离
文件隔离
用户隔离
等等
依赖Linux核心能力Control Group实现:资源隔离/限制。
使用docker部署的业务应用直接运行在宿主机上,更加的轻量:

虚拟主机和docker对比图:

docker存在的问题
但是面对复杂的业务的场景,直接使用docker仍然存在如下问题:
容器和宿主机管理问题
单宿主机上N个容器如何管理?

一个容器集群N个宿主机如何管理?

容器不断动态变更,如何支持负载均衡
集群内部一个业务应用对应多个容器且容器不断动态变更,如何支持负载均衡?

新创建的容器如何调度
创建一个容器该创建在哪台宿主机上?

如何达到高可用
单个宿主机挂了如何自动摘除容器流量和剔除宿主机?

如何实现自动按需伸缩容器数量?

发布新版本镜像,如何实现容器平滑启动?

容器依赖管理
存在“进程级”依赖关系容器如何管理和控制启动顺序:

权限如何管理
不同团队或租户权限如何管理?

总结
综上所述,直接使用docker部署服务会存在这些问题,这也就是k8s要解决的事情:
容器和宿主机管理问题
单宿主机上N个容器如何管理?
一个容器集群N个宿主机如何管理?
容器不断动态变更,如何支持负载均衡
集群内部一个业务应用对应多个容器且容器不断动态变更,如何实现负载均衡?
新创建的容器如何调度
创建一个容器该创建在哪台宿主机上?
如何达到高可用
单个宿主机挂了如何自动摘除容器流量和剔除宿主机?
如何实现自动按需伸缩容器数量?
如何实现平滑发布?
容器依赖管理
存在“进程级”依赖关系容器如何管理和控制启动顺序
权限如何管理
不同团队或租户权限如何管理?
等等
所以,为什么需要k8s,你理解了吗?
k8s系列 更多文章


文章探讨了从物理机到虚拟主机,再到docker的演进过程,指出了docker在面对复杂业务场景时的管理挑战,如容器和宿主机的管理、负载均衡、高可用及自动伸缩等问题。K8s正是为了解决这些挑战,提供容器编排和管理的解决方案。
875

被折叠的 条评论
为什么被折叠?



