6

为什么需要k8s?

 1 year ago
source link: https://tigerb.cn/2023/03/19/k8s/why-k8s/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

  • 物理机以及存在的问题
  • 虚拟主机以及存在的问题
  • docker诞生
  • docker存在的问题

物理机以及存在的问题

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

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

虚拟主机以及存在的问题

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

%E8%99%9A%E6%9C%BA-multi.png

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

docker诞生

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

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

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

docker.png

虚拟主机和docker对比图:

%E8%99%9A%E6%9C%BA%20VS%20docker%20.png

docker存在的问题

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

容器和宿主机管理问题

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

%E5%8D%95%E5%AE%BF%E4%B8%BB%E6%9C%BA%E4%B8%8AN%E4%B8%AA%E5%AE%B9%E5%99%A8%E5%A6%82%E4%BD%95%E7%AE%A1%E7%90%86%EF%BC%9F.png

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

%E4%B8%80%E4%B8%AA%E5%AE%B9%E5%99%A8%E9%9B%86%E7%BE%A4N%E4%B8%AA%E5%AE%BF%E4%B8%BB%E6%9C%BA%E5%A6%82%E4%BD%95%E7%AE%A1%E7%90%86%EF%BC%9F.png

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

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

%E4%B8%80%E4%B8%AA%E4%B8%9A%E5%8A%A1%E5%BA%94%E7%94%A8%E5%AF%B9%E5%BA%94%E5%A4%9A%E4%B8%AA%E5%AE%B9%E5%99%A8%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%EF%BC%9F.png

新创建的容器如何调度

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

%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%AE%B9%E5%99%A8%E8%AF%A5%E5%88%9B%E5%BB%BA%E5%9C%A8%E5%93%AA%E5%8F%B0%E5%AE%BF%E4%B8%BB%E6%9C%BA%E4%B8%8A%EF%BC%9F.png

如何达到高可用

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

qiniu_img_2022%2Fwhy%20k8s%2F%E9%AB%98%E5%8F%AF%E7%94%A8-%E5%8D%95%E4%B8%AA%E5%AE%BF%E4%B8%BB%E6%9C%BA%E6%8C%82%E4%BA%86%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E5%89%94%E9%99%A4%EF%BC%9F.png

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

%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%8A%A8%E6%8C%89%E9%9C%80%E4%BC%B8%E7%BC%A9%E5%AE%B9%E5%99%A8%E6%95%B0%E9%87%8F%EF%BC%9F.png

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

%E9%AB%98%E5%8F%AF%E7%94%A8-%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%B9%B3%E6%BB%91%E5%8F%91%E5%B8%83%EF%BC%9F.png

容器依赖管理

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

%E5%A6%82%E4%BD%95%E6%8E%A7%E5%88%B6%E5%AE%B9%E5%99%A8%E5%90%AF%E5%8A%A8%E9%A1%BA%E5%BA%8F.png

权限如何管理

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

%E4%B8%8D%E5%90%8C%E7%BB%84%E7%BB%87%E6%88%96%E7%A7%9F%E6%88%B7%E6%9D%83%E9%99%90%E5%A6%82%E4%BD%95%E7%AE%A1%E7%90%86%EF%BC%9F.png

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

  • 容器和宿主机管理问题
    • 单宿主机上N个容器如何管理?
    • 一个容器集群N个宿主机如何管理?
  • 容器不断动态变更,如何支持负载均衡
    • 集群内部一个业务应用对应多个容器且容器不断动态变更,如何支持负载均衡?
  • 新创建的容器如何调度
    • 创建一个容器该创建在哪台宿主机上?
  • 如何达到高可用
    • 单个宿主机挂了如何自动摘除容器流程和剔除宿主机?
    • 如何实现自动按需伸缩容器数量?
    • 发布新版本镜像,如何实现容器平滑启动?
  • 容器依赖管理
    • 存在“进程级”依赖关系容器如何管理和控制启动顺序
  • 权限如何管理
    • 不同团队或租户权限如何管理?

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK