C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 流水线构建 - CI/CD

    • CI/CD - 基础
    • CI/CD - 部署
    • CI/CD - 本地仓库CI流程
    • CI/CD - 远程仓库CI流程
  • 知识点 - Linux

    • Linux - 常用命令大全
    • Linux - 信号
    • Linux - 线程
    • Linux - 进程
    • Linux - 线程和进程同步
    • Linux - shell命令使用技巧
    • Linux - 使echo命令输出结果带颜色
  • 网站 - Nginx

    • Nginx - 学习笔记
    • Nginx - 部署静态页面网站
    • Nginx - 反向代理服务器
    • Nginx - 错误日志配置及信息详解
    • Nginx - 图片服务器配置
  • 容器化 - Docker

    • Docker - 容器技术Docker、Compose、k8s的演变
    • Docker - Dockerfile学习
    • Docker - 命令大全
    • Docker - Docker-compose学习
  • 容器编排 - Kubernetes

    • Kubernetes - 概念
    • Kubernetes - 基础应用
    • Kubernetes - 命令
    • Kubernetes - 检测探针
  • 服务网格 - Service Mesh Istio

    • Istio - 基础
    • Istio - 安装
    • Istio - 使用
    • Istio - 架构解析
    • Istio - 可观察性
    • Istio - 通过阿里云ecs部署k8s集群
  • 常用快捷键 - Shortcut

    • Shortcut - Linux
    • Shortcut - Vim
    • Shortcut - VsCode
    • Shortcut - IDEA
  • 工具使用 - Tools

    • Tools - cmake使用指南
    • Tools - cmake install详解
    • Tools - curl使用方法
    • Tools - docker使用方法
    • Tools - GCC警告选项
    • Tools - GCC和动静态库
    • Tools - gdb调试方法
    • Tools - nginx安装以及使用
    • Tools - VsCode插件

Docker - 容器技术Docker、Docker-Compose、k8s的演变

越来越多的应用开始容器化以及上云,可能有些人直接接触的就是k8s(Kubernetes)的概念以及操作了,但是理清一下容器化技术的一些演变过程,是一件很有意思的事情,同时也可以加强我们对容器化技术的深入理解和具体场景下运用哪种技术。

  • Docker vs 虚拟机
  • Docker-Compose 的诞生
  • k8s(Kubernetes)的横空出世 vs Docker Swarm
  • 几种技术的应用场景及资源占用情况

Docker vs 虚拟机

KVM技术的发展,解放了单台服务器物理机的资源过剩的浪费,虚拟机的资源互相独立,部署应用不受影响,但缺点是占用资源多,有安全补丁更新时候要一起更新,管理起来比较麻烦。容器Docker就是为了解决这种困境,在耗费资源低的情况下,又可以方便部署资源和依赖互相独立的应用,从而实现快速部署。他们俩的层级差异如图:

dockerVsVm

docker

正如docker的鲸鱼图上的集装箱一样,docker的容器运行是以沙盒的机制运行,共享底层操作系统,会把应用需要的依赖打包在一起,以沙盒的方式,在同类型的操作系统上,可以自由迁移部署运行,如此就可以极大地解放了部署环境不一致的问题。

Docker-Compose 的诞生

容器化的盛行,也带来了新的问题,那就是如何高效地去部署和管理这些镜像呢?因为比较大型的应用服务,往往需要多个组件一起合作才能正常运行,这就给单docker容器部署提出了挑战,Docker-Compose就像下面这只八爪章鱼,可以同时进行多容器的构建以及部署运行。

docker-compose

k8s(Kubernetes)的横空出世 vs Docker Swarm

Docker和Docker-Compose的运用,充分地把单物理服务器的性能充分利用起来,并且可以快速地进行持续交付。但是如何把如下图中A机器的容器镜像迁移到其他服务器以及如果遇到高并发,如何进行负载均衡分流呢?

负载均衡

重复地拷贝一下镜像到B服务器再运行?那如何高效地进行监控各个容器的健康运行情况以及崩溃后如何迁移服务呢?集群的管理问题,此时出现了Docker Swarm技术,是docker自家的技术,但是Google接着开源了其内部用了很久的容器治理编排工具Kubernetes,以其高效以及智能自动化的管理机制,吸引了大批开源开发者以及公司的青睐,从此一战成名,Docker Swarm的市场份额进一步低迷。故这里只介绍下k8s主要的原理以及解决了哪些痛点的问题。

k8s

k8s就像一个领航员,把各种集装箱(container)有条不紊地组装起来,着重提供如下功能:

  1. 快速部署功能:定义对应的charts,可以方便把大型的应用部署上去。
  2. 智能的缩扩容机制:部署时候会自动去考虑容器应该部署在哪个服务器上,以及副本的数量可以自定义。
  3. 自愈功能:某个节点的服务崩溃了,可以自动迁移到另外一个服务器节点来恢复来实现高可用。
  4. 智能的负载均衡:利用Ingress,可以实现流量通过域名访问进来时候,进行流量的分流到不同服务器上。
  5. 智能的滚动升降级:升级或者降级时候,会逐个替换,当自定义数量的服务升级OK后,才会进行其他的升级以及真正销毁旧的服务。

几种技术的应用场景及资源占用情况

技术应用场景 资源占用情况
Docker单机部署简单应用
Docker-Compose单机/少数机器部署应用
k8s集群部署高可用应用

Docker Compose 文件转换为 Kubernetes 资源

docker-compose To K8s

docker 可视化管理工具 Weave Scope https://github.com/weaveworks/scope

portainer

https://blog.csdn.net/horsefoot/article/details/51749528

Last Updated:
Contributors: klc407073648
Next
Docker - Dockerfile学习