一、为什么需要 k8s?

1. 应用部署模式的演进

 

docker和k8s使用linux啥技术原理 k8s和docker比较的优势_版本控制

虚拟化模式


 

docker和k8s使用linux啥技术原理 k8s和docker比较的优势_云平台_02

容器化模式


相比虚拟机和容器

  • 容器更加轻量级,启动更快(秒级)
  • 容器可移植性更好
2. 管理大量的容器带来了新的挑战

容器编排调度引擎 —— k8s 的好处

  • 简化应用部署
  • 提高硬件资源利用率
  • 健康检查和自修复
  • 自动扩容缩容
  • 服务发现和负载均衡

二、k8s 的集群架构

  • 主节点,承载 k8s 的控制和管理整个集群系统的控制面板
  • 工作节点,运行用户实际的应用


k8s 集群组件

三、pod —— k8s 调度的最小单元

1. 一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点

 

docker和k8s使用linux啥技术原理 k8s和docker比较的优势_Docker_03

pod 不会跨越工作节点

2. 了解 pod
  • pod 相当与逻辑主机,每个 pod 都有自己的 IP 地址
  • pod 内的容器共享相同的 IP 和端口空间
  • 默认情况下,每个容器的文件系统与其他容器完全隔离

 


 

Docker容器技术带来的好处

docker和k8s使用linux啥技术原理 k8s和docker比较的优势_Linux_04

 

 

持续部署与测试。容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后通过封装着完整环境和应用的镜像进行迁移,由此,测试和运维人员可以直接部署软件镜像来进行测试和发布,大大简化了持续集成、测试和发布的过程。

跨云平台支持。容器带来的最大好处之一就是其适配性,越来越多的云平台都支持容器,用户再也无需担心受到云平台的捆绑,同时也让应用多平台混合部署成为可能。目前支持容器的IaaS云平台包括但不限于亚马逊云平台(AWS)、 Google云平台(GCP)微软云平台( Azure)、 Open Stack等,还包括如Chef、 Puppet、 Ansible等配置管理工具。

环境标准化和版本控制。基于容器提供的环境一致性和标准化,你可以使用Gt等工具对容器镜像进行版本控制,相比基于代码的版本控制来说,你还能够对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。相比以前的虚拟机镜像,容器压缩和备份速度更快,镜像启动也像启动一个普通进程一样快速。

高资源利用率与隔离。容器容器没有管理程序的额外开销,与底层共享操作系统,性能更加优良,系统负载更低,在同等条件下可以运行更多的应用实例,可以更充分地利用系统资源。同时,容器拥有不错的资源隔离与限制能力,可以精确地对应用分配CPU、内存等资源,保证了应用间不会相互影响。

容器跨平台性与镜像。 Linux容器虽然早在 Linux2.6版本内核已经存在,但是缺少容器的跨平台性,难以推广。容器在原有 Linux容器的基础上进行大胆革新,为容器设定了一整套标准化的配置方法,将应用及其依赖的运行环境打包成镜像,真正实现了“构建次,到处运行”的理念,大大提高了容器的跨平台性。

易于理解且易用。 Docker的英文原意是处理集装箱的码头工人,标志是鲸鱼运送一大堆集装箱,集装箱就是容器,生动好记,易于理解。一个开发者可以在15分钟之内人门Docker并进行安装和部署,这是容器使用史上的一次飞跃。因为它的易用性,有更多的人开始关注容器技术,加速了容器标准化的步伐。

应用镜像仓库。 Docker官方构建了一个镜像仓库,组织和管理形式类似于 Github,其上已累积了成千上万的镜像。因为 Docker的跨平台适配性,相当于为用户提供了一个非常有用的应用商店,所有人都可以自由地下载微服务组件,这为开发者提供了巨大便利。
————————————————