Docker & Kebernetes in a nutshell

211 阅读2分钟

容器是什么?

image.png

在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中与虚拟机不同的是,这些应用运行时用着一个Kernel,容器技术大大提升了对系统资源的利用率,也提高了应用的部署迁移效率。

Docker核型技术及架构

进程隔离技术 - namespace

UTS - 主机名与域名 IPC - 信号量,消息队列和共享内容 PID - 进程编号 Network - 网络设备,网络栈,端口 Mount - 文件系统 User - 用户和用户组

进程资源配额技术 - cgroups

image.png

利用Namespace可以构建一个相对隔离的容器,而通过cgroups, 可以为容器设置系统资源配额,包括CPU, 内存,IO等。

Docker构造: client-server

image.png

Execdriver存储了容器的定义的配置信息 Networkdriver的作用是完成docker容器网络环境的配置,包括容器的IP,端口,防火墙策略及与主机的端口映射等 Graphdriver则负责对容器镜像的管理

Docker Daemon的工作过程

image.png

容器 vs 虚拟化

image.png

核心区别在于容器不需要建立在独立的操作系统上,提高资源的利用率和性能,但是隔离型相对较差.

Docker的优势

image.png

Docker的核心概念

image.png

容器的网络概述

image.png

Bridge网络模式

image.png

Docker0虚拟网桥 主机上创建一个虚拟网卡veth pair 类似交换机技术

Host 模式

image.png

容器不会获得一个独立的network namespace,而是和宿主机共用一个network namespace

Container模式

image.png

容器间共享一个network namespace, 而不是和宿主机共享

Docker的数据卷

持久化 共享存储

三大Orchestration工具

image.png

2017年10月17日,docker官方宣布原生支持Kubernetes

容器平台架构

image.png

容器平台技术体系

image.png

Kubernetes 技术架构

image.png

Master: 集群的管理控制中心 Minion: node组件,提供容器集群的运行环境

Kubernetes核心组件

image.png

Kubernetes 架构原理

image.png

一个POD通常运行一个容器 一个容器通常运行一个微服务

image.png

假如1个POD里面有紧密联系的容器运行 业务容器共享Pause容器的network和存储

Kubernetes 核心概念

Service:

抽象的概念,它定义了POD的逻辑分组和访问策略 借助Service可以方便的实现服务发现和负载均衡

Label:

标签,用于实现service到POD映射的键值对 key=value

image.png

POD的IP不固定,通过Service相对固定访问