Kubernetes【一】:介绍架构对比

1.背景

  单体应用随着不断更新迭代,组件之间耦合过大,从而需要拆解进行成微服务部署,微服务相比单体应用的体量要小很多,为了充分利用物理资源,可将多个服务部署在单个或多个服务器中。此时的服务与服务之间是进程隔离的,服务与服务之间的是松耦合的,之间的依赖库也不再互相影响 ,可随各自的发展而进行横向扩展而不互相影响。
  但是服务的移植与拓展可能因为运行环境、配置或版本冲突导致异常的产生,而为了在一台新机器上运行服务,而不影响其他服务的运行,运行在不同进程已经不能解决这些冲突了。为了进行进程间的隔离,就衍生出来了虚拟机、容器等。

2.虚拟机与容器

  虚拟机相比容器来说,消耗更大。虚拟机需要分割宿主机的物理资源,在一个宿主机起多台虚拟机,会将硬件资源分成较小的虚拟硬件资源,多少个虚拟机,就会有多少个虚拟CPU、虚拟内核,使得额外的开销也大了起来。
  多个容器在一台宿主机上是共用一个内核进行系统调用,CPU也不需要做任何的虚拟化,当然这也存在安全隐患。

3.进程隔离

3.1 Linux命名空间

  • 处于同一命名空间的进程,可以相互感知,但是无法感知该命名空间以外的。一个进程可存在于多个命名空间中

会根据以下类型来创建命名空间。

Alt

3.2 Linux控制组

限制进程能使用的资源量。(CPU、内存、带宽等)

3.3 Docker的进程隔离

  Docker 的镜像是多层构成的,父镜像层都是只读层,当容器被构建时,会在顶层创建可写层,容器中那个进程写入一个位于父镜像层的文件时候,这个文件会在顶层被创建,所以进程写的是副本

  • 注意点:因为容器与操作系统共用一个linux内核,如果容器内的应用需要指定的linux内核版本,或者没有相同内核模块,该容器是无法运行的。如果是硬件限制的,例如x86编译的应用,也无法在arm架构的机器上运行。这些仍然需要虚拟机来解决。

3.4 Kubernetes集群结构

在这里插入图片描述

Kubernetes的节点分为两种类型:主节点和工作节点。

  • 主节点:承载着kubernetes控制和管理整个集群系统的控制面板。
    • Kubernetes API 服务器:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,其他控制面板组件都要和他通信
    • Scheculer:调度应用,为每个可部署组件分配一个工作节点,按照预定的调度策略 将Pod调度到相应的机器上。
    • Controller Manager:执行集群级别的功能,如复制组件、持续跟踪工作节点、处理节点失败等。
    • Etcd:保存了整个集群的状态,可靠的分布式数据存储,持久化存储集群配置。
  • 工作节点:运行用户实际部署的应用
    • 容器运行时:docker、rtk等.
    • Kubelet:负责与api服务器进行通信,并且管理所在节点的容器.
    • Kubernetes Service Proxy(kube-proxy):负责组件之间负载均衡网络浏览。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值