为什么需要k8s?

前言


目前对k8s的一期学习规划如下:

  • 实践k8s搭建(已完成,点击查看)

  • 了解k8s前世今生(本文)

  • 由点到面认识k8s架构

  • 由面到点深入k8s架构

今天开始逐步去了解k8s前世今生,本文结构如下:

  • 物理机以及存在的问题

  • 虚拟主机以及存在的问题

  • docker诞生

  • docker存在的问题

物理机以及存在的问题


直接使用物理机部署业务服务:

部署方式 问题
独立部署业务服务 资源利用率低
混合部署业务服务 耦合/互相影响

虚拟主机以及存在的问题


物理机通过虚拟化技术,可以虚拟出多台虚拟主机,即提升了物理设备的利用率又达到了隔离的目的。

为什么需要k8s?_第1张图片

但是虚拟硬件 + 虚拟操作系统不够轻量,于是诞生了docker

docker诞生


docker如何解决隔离问题,依赖Linux核心能力Namespace实现:

  • 进程隔离

  • 网络隔离

  • 文件隔离

  • 用户隔离

  • 等等

依赖Linux核心能力Control Group实现:资源隔离/限制。

使用docker部署的业务应用直接运行在宿主机上,更加的轻量:

为什么需要k8s?_第2张图片

虚拟主机和docker对比图:

为什么需要k8s?_第3张图片

docker存在的问题


但是面对复杂的业务的场景,直接使用docker仍然存在如下问题:

容器和宿主机管理问题

单宿主机上N个容器如何管理?

为什么需要k8s?_第4张图片

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

为什么需要k8s?_第5张图片

容器不断动态变更,如何支持负载均衡

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

为什么需要k8s?_第6张图片

新创建的容器如何调度

创建一个容器该创建在哪台宿主机上?

为什么需要k8s?_第7张图片

如何达到高可用

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

为什么需要k8s?_第8张图片

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

为什么需要k8s?_第9张图片

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

为什么需要k8s?_第10张图片

容器依赖管理

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

为什么需要k8s?_第11张图片

权限如何管理

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

为什么需要k8s?_第12张图片

总结


综上所述,直接使用docker部署服务会存在这些问题,这也就是k8s要解决的事情:

  • 容器和宿主机管理问题

    • 单宿主机上N个容器如何管理?

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

  • 容器不断动态变更,如何支持负载均衡

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

  • 新创建的容器如何调度

    • 创建一个容器该创建在哪台宿主机上?

  • 如何达到高可用

    • 单个宿主机挂了如何自动摘除容器流量和剔除宿主机?

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

    • 如何实现平滑发布?

  • 容器依赖管理

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

  • 权限如何管理

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

  • 等等

所以,为什么需要k8s,你理解了吗?


k8s系列 更多文章

  • 100元实践k8s搭建过程

edbf5de43d08ffbeb79190b6d712e164.png

a5b71bbc3eb33d4798ea342b84c7c80c.gif

你可能感兴趣的:(kubernetes,docker,容器,云原生,运维)